दर्द की एक श्रृंखला के बाद, मैंने एएमडी ग्राफिक्स कार्ड के साथ एक मशीन पर थेनो स्थापित किया है - Radeon HD 5450 (Cedar)
।ओपनसीएल थेनो - सीयूडीए को मजबूती से कैसे अक्षम करें?
अब, निम्न कोड पर विचार करें।
import numpy
import theano
import theano.tensor as T
rng = numpy.random
N = 400 #number of samples
feats = 784 #dimensionality of features
D = (rng.randn(N, feats), rng.randint(size=N, low=0, high=2))
training_steps = 10000
# theano symbolic variables
x = T.matrix("x")
y = T.vector("y")
w = theano.shared(rng.randn(784), name="w")
b = theano.shared(0., name="b")
print("Initial Model:")
print(str(w.get_value()) + " " + str(b.get_value()))
p_1 = 1/(1 + T.exp(-T.dot(x, w) - b)) # probability of target being 1
prediction = p_1 > 0.5 # prediction threshold
xent = -y * T.log(p_1) - (1-y)*T.log(1-p_1) # cross-entropy loss function
cost = xent.mean() + 0.01 * (w**2).sum() # cost - to be minimized
gw, gb = T.grad(cost, [w, b])
#compile it
train = theano.function(
inputs = [x, y],
outputs = [prediction, xent],
updates = {w: w - 0.1*gw, b: b - 0.1*gb} )
predict = theano.function(inputs = [x], outputs = prediction)
#train it
for i in range (training_steps):
pred, err = train(D[0], D[1])
print("Final Model: ")
print(str(w.get_value()) + " " + str(b.get_value()))
print("Target values for D: " + str(D[1]))
print("Predictions on D: " + str(D[0]))
मुझे लगता है कि यह कोड ठीक काम करना चाहिए। लेकिन मुझे त्रुटियों की एक श्रृंखला मिलती है:
ERROR (theano.gof.opt): Optimization failure due to: local_gpua_hgemm
ERROR (theano.gof.opt): node: dot(x.T, Elemwise{sub,no_inplace}.0)
ERROR (theano.gof.opt): TRACEBACK:
ERROR (theano.gof.opt): Traceback (most recent call last):
File "/home/user/anaconda3/lib/python3.5/site-packages/theano/gof/opt.py", line 1772, in process_node
replacements = lopt.transform(node)
File "/home/user/anaconda3/lib/python3.5/site-packages/theano/sandbox/gpuarray/opt.py", line 140, in local_opt
new_op = maker(node, context_name)
File "/home/user/anaconda3/lib/python3.5/site-packages/theano/sandbox/gpuarray/opt.py", line 732, in local_gpua_hgemm
if nvcc_compiler.nvcc_version < '7.5':
TypeError: unorderable types: NoneType() < str()
और मुझे कई बार संदेशों का एक ही सेट मिलता है। फिर अंत में:
File "/home/user/anaconda3/lib/python3.5/site-packages/pygpu-0.2.1-py3.5-linux-x86_64.egg/pygpu/elemwise.py", line 286, in __init__
**self.flags)
File "pygpu/gpuarray.pyx", line 1950, in pygpu.gpuarray.GpuKernel.__cinit__ (pygpu/gpuarray.c:24214)
File "pygpu/gpuarray.pyx", line 467, in pygpu.gpuarray.kernel_init (pygpu/gpuarray.c:7174)
pygpu.gpuarray.UnsupportedException: ('The following error happened while compiling the node', GpuElemwise{Composite{((-i0) - i1)}}[(0, 0)]<gpuarray>(GpuFromHost<None>.0, InplaceGpuDimShuffle{x}.0), '\n', b'Device does not support operation')
इसका मतलब है कि मैं इस GPU उपयोग नहीं कर सकते है या मैं कुछ मेरी कोड में गलत किया है। इसके अलावा, त्रुटियों से, ऐसा लगता है कि nvcc
की खोज हुई है। लेकिन मेरे पास कुडा नहीं है, मेरे पास ओपनक्ल है।
>>> import theano
Mapped name None to device opencl0:0: Cedar
भी
:
>>> from theano import config
>>> config.device
'opencl0:0'
>>> config.cuda
<theano.configparser.AddConfigVar.<locals>.SubObj object at 0x7fba9dee7d30>
>>> config.nvcc
<theano.configparser.AddConfigVar.<locals>.SubObj object at 0x7fba9e5967f0>
>>> config.gpu
<theano.configparser.AddConfigVar.<locals>.SubObj object at 0x7fbaa9f61828>
तो मैं यहाँ से कैसे जाते हैं? यह सुनिश्चित करने का कोई तरीका है कि clcc
nvcc
के बजाय खोजा गया है।
PS_1: हैलो वर्ल्ड काम करता है। PS_2: सिस्टम = 14.04 64 बिट
हाँ, धन्यवाद। मैंने इस मुद्दे को पढ़ा था। लेकिन मुझे चैट पर कुछ संदर्भ मिले जो उल्लेख करते हैं कि यह काम कर सकता है। मैंने एक और मुद्दा खोला है - https://github.com/Theano/Theano/issues/4112, और मैं इसे ठीक करने में योगदान दे सकता हूं। लेकिन सीपीयू पर चलना टालना चाहिए, क्योंकि यह किसी भी मामूली आकार की समस्या को हल करने में अव्यवहारिक साबित होता है। मैं जिस अन्य विकल्प की तलाश कर रहा हूं वह ओपनसीएल कैफे है। – Adorn