2016-02-24 9 views
6

दर्द की एक श्रृंखला के बाद, मैंने एएमडी ग्राफिक्स कार्ड के साथ एक मशीन पर थेनो स्थापित किया है - 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> 

तो मैं यहाँ से कैसे जाते हैं? यह सुनिश्चित करने का कोई तरीका है कि clccnvcc के बजाय खोजा गया है।

PS_1: हैलो वर्ल्ड काम करता है। PS_2: सिस्टम = 14.04 64 बिट

उत्तर

7

ओपनसीएल अभी तक थेनो द्वारा समर्थित नहीं है। नतीजतन, केवल एनवीआईडीआईए जीपीयू समर्थित हैं।

ओपनसीएल की स्थिति recorded on GitHub है।

आपको अपने थेनो कॉन्फ़िगरेशन में device=cpu सेट करके GPU ऑपरेशन को अक्षम करने की आवश्यकता है। ऐसा करने के कई तरीके हैं (यानी THEANO_FLAGS पर्यावरण परिवर्तनीय या .theanorc फ़ाइल के माध्यम से; see documentation)।

स्क्रिप्ट चलाने से पहले,

export THEANO_FLAGS=device=cpu,floatX=float64 

आपका स्थिति की स्थापना अतिरिक्त कॉन्फ़िगरेशन विकल्प आवश्यकता हो सकती है की कोशिश करो। अधिक के लिए the documentation देखें।

+0

हाँ, धन्यवाद। मैंने इस मुद्दे को पढ़ा था। लेकिन मुझे चैट पर कुछ संदर्भ मिले जो उल्लेख करते हैं कि यह काम कर सकता है। मैंने एक और मुद्दा खोला है - https://github.com/Theano/Theano/issues/4112, और मैं इसे ठीक करने में योगदान दे सकता हूं। लेकिन सीपीयू पर चलना टालना चाहिए, क्योंकि यह किसी भी मामूली आकार की समस्या को हल करने में अव्यवहारिक साबित होता है। मैं जिस अन्य विकल्प की तलाश कर रहा हूं वह ओपनसीएल कैफे है। – Adorn

संबंधित मुद्दे