2

Theano 在编译卷积层时似乎存在一些问题。当我尝试运行卷积神经网络 (LeNet)示例时,我收到错误消息:

Exception: ('The following error happened while compiling the node', GpuDnnConvD
esc{border_mode='valid', subsample=(1, 1), conv_mode='conv'}(TensorConstant{[500
 20  12  12]}, MakeVector{dtype='int64'}.0), '\n', 'nvcc return status', 2, 'fo
r cmd', 'nvcc -shared -O3 -arch=sm_52 -m64 -Xcompiler -fno-math-errno,-Wno-unuse
d-label,-Wno-unused-variable,-Wno-write-strings,-DCUDA_NDARRAY_CUH=c72d035fdf918
90f3b36710688069b2e,-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,-fPIC,-fvisibili
ty=hidden -Xlinker -rpath,/home/vikas/.theano/compiledir_Linux-4.2--generic-x86_
64-with-Ubuntu-14.04-trusty-x86_64-2.7.6-64/cuda_ndarray -I/usr/local/lib/python
2.7/dist-packages/theano/sandbox/cuda -I/usr/local/lib/python2.7/dist-packages/n
umpy/core/include -I/usr/include/python2.7 -I/usr/local/lib/python2.7/dist-packa
ges/theano/gof -o /home/vikas/.theano/compiledir_Linux-4.2--generic-x86_64-with-
Ubuntu-14.04-trusty-x86_64-2.7.6-64/tmp_OxBzM/2936c9b6a222a1bc87a8848e3e5a3fe8.s
o mod.cu -L/usr/lib -lpython2.7 -lcudnn -lcudart', "[GpuDnnConvDesc{border_mode=
'valid', subsample=(1, 1), conv_mode='conv'}(TensorConstant{[500  20  12  12]}, 
<TensorType(int64, vector)>)]")

我尝试使用以下方法运行示例:

THEANO_FLAGS='mode=FAST_RUN,device=gpu2,floatX=float32,optimizer_including=cudnn' 
python code/convolutional_mlp.py

或者

THEANO_FLAGS='mode=FAST_RUN,device=gpu2,floatX=float32' 
python code/convolutional_mlp.py

如果我使用以下标志禁用 CuDNN,则该示例运行良好optimizer_excluding=conv_dnn

THEANO_FLAGS='mode=FAST_RUN,device=gpu2,floatX=float32,optimizer_excluding=conv_dnn,
base_compiledir=../../temp' python convolutional_mlp.py

CuDNN 可能有什么问题?

我用:

  • Theano 0.7.0(根据pip freeze),
  • Python 2.7.6 64 位(根据import platform; platform.architecture()),
  • Nvidia-smi 361.28(根据nvidia-smi),
  • CUDA 7.5.17(根据nvcc --version),
  • GeForce GTX Titan X(根据nvidia-smi),
  • Ubuntu 14.04.4 LTS x64(根据lsb_release -auname -i)。

完整的错误信息:

francky@tml:/fun/francky/f/misc/code$ THEANO_FLAGS='mode=FAST_RUN,device=gpu2,floatX=float32,base_compiledir=../../temp' python convolutional_mlp.py
Using gpu device 2: GeForce GTX TITAN X (CNMeM is disabled)
... loading data
... building the model
1 #include <Python.h>
2 #include <iostream>
3 #include "theano_mod_helper.h"
4 #include <math.h>
5 #include <numpy/arrayobject.h>
6 #include <numpy/arrayscalars.h>
7 #include "cudnn.h"
8 #include "cudnn_helper.h"
9 //////////////////////
10 ////  Support Code
11 //////////////////////
12
13
14     namespace {
15     struct __struct_compiled_op_2936c9b6a222a1bc87a8848e3e5a3fe8 {
16         PyObject* __ERROR;
17
18         PyObject* storage_V3;
19 PyObject* storage_V5;
20 PyObject* storage_V1;
21
22
23         __struct_compiled_op_2936c9b6a222a1bc87a8848e3e5a3fe8() {}
24         ~__struct_compiled_op_2936c9b6a222a1bc87a8848e3e5a3fe8(void) {
25             cleanup();
26         }
27
28         int init(PyObject* __ERROR, PyObject* storage_V3, PyObject* storage_V5, PyObject* storage_V1) {
29             Py_XINCREF(storage_V3);
30 Py_XINCREF(storage_V5);
31 Py_XINCREF(storage_V1);
32             this->storage_V3 = storage_V3;
33 this->storage_V5 = storage_V5;
34 this->storage_V1 = storage_V1;
35
36
37
38
39
40             this->__ERROR = __ERROR;
41             return 0;
42         }
43         void cleanup(void) {
44             __label_1:
45
46 double __DUMMY_1;
47 __label_3:
48
49 double __DUMMY_3;
50 __label_5:
51
52 double __DUMMY_5;
53 __label_8:
54
55 double __DUMMY_8;
56
57             Py_XDECREF(this->storage_V3);
58 Py_XDECREF(this->storage_V5);
59 Py_XDECREF(this->storage_V1);
60         }
61         int run(void) {
62             int __failure = 0;
63
64     PyObject* py_V1;
65
66         cudnnConvolutionDescriptor_t V1;
67
68     PyObject* py_V3;
69
70         PyArrayObject* V3;
71
72             typedef npy_int64 dtype_V3;
73
74     PyObject* py_V5;
75
76         PyArrayObject* V5;
77
78             typedef npy_int64 dtype_V5;
79
80 {
81
82     py_V1 = PyList_GET_ITEM(storage_V1, 0);
83     {Py_XINCREF(py_V1);}
84
85         if (py_V1 == Py_None)
86         {
87             V1 = NULL;
88         }
89         else
90         {
91
92   V1 = (cudnnConvolutionDescriptor_t)PyCObject_AsVoidPtr(py_V1);
93
94         }
95
96 {
97
98     py_V3 = PyList_GET_ITEM(storage_V3, 0);
99     {Py_XINCREF(py_V3);}
100
101             V3 = NULL;
102             if (py_V3 == Py_None) {
103                 // We can either fail here or set V3 to NULL and rely on Ops
104                 // using tensors to handle the NULL case, but if they fail to do so
105                 // they'll end up with nasty segfaults, so this is public service.
106                 PyErr_SetString(PyExc_ValueError, "expected an ndarray, not None");
107                 {
108         __failure = 4;
109         if (!PyErr_Occurred()) {
110             PyErr_SetString(PyExc_RuntimeError,
111                 "Unexpected error in an Op's C code. "
112                 "No Python exception was set.");
113             }
114         goto __label_4;}
115             }
116             if (!PyArray_Check(py_V3)) {
117                 PyErr_SetString(PyExc_ValueError, "expected an ndarray");
118                 {
119         __failure = 4;
120         if (!PyErr_Occurred()) {
121             PyErr_SetString(PyExc_RuntimeError,
122                 "Unexpected error in an Op's C code. "
123                 "No Python exception was set.");
124             }
125         goto __label_4;}
126             }
127             // We expect NPY_INT64
128             if (!PyArray_ISALIGNED((PyArrayObject*) py_V3)) {
129                 PyArrayObject * tmp = (PyArrayObject*) py_V3;
130                 PyErr_Format(PyExc_NotImplementedError,
131                              "expected an aligned array of type %ld "
132                              "(NPY_INT64), got non-aligned array of type %ld"
133                              " with %ld dimensions, with 3 last dims "
134                              "%ld, %ld, %ld"
135                              " and 3 last strides %ld %ld, %ld.",
136                              (long int) NPY_INT64,
137                              (long int) PyArray_TYPE((PyArrayObject*) py_V3),
138                              (long int) PyArray_NDIM(tmp),
139                              (long int) PyArray_NDIM(tmp) >= 3 ?
140             PyArray_DIMS(tmp)[PyArray_NDIM(tmp)-3] : -1,
141                              (long int) PyArray_NDIM(tmp) >= 2 ?
142             PyArray_DIMS(tmp)[PyArray_NDIM(tmp)-2] : -1,
143                              (long int) PyArray_NDIM(tmp) >= 1 ?
144             PyArray_DIMS(tmp)[PyArray_NDIM(tmp)-1] : -1,
145                              (long int) PyArray_NDIM(tmp) >= 3 ?
146             PyArray_STRIDES(tmp)[PyArray_NDIM(tmp)-3] : -1,
147                              (long int) PyArray_NDIM(tmp) >= 2 ?
148             PyArray_STRIDES(tmp)[PyArray_NDIM(tmp)-2] : -1,
149                              (long int) PyArray_NDIM(tmp) >= 1 ?
150             PyArray_STRIDES(tmp)[PyArray_NDIM(tmp)-1] : -1
151             );
152                 {
153         __failure = 4;
154         if (!PyErr_Occurred()) {
155             PyErr_SetString(PyExc_RuntimeError,
156                 "Unexpected error in an Op's C code. "
157                 "No Python exception was set.");
158             }
159         goto __label_4;}
160             }
161             // This is a TypeError to be consistent with DEBUG_MODE
162             // Note: DEBUG_MODE also tells the name of the container
163             if (PyArray_TYPE((PyArrayObject*) py_V3) != NPY_INT64) {
164                 PyErr_Format(PyExc_TypeError,
165                              "expected type_num %d (NPY_INT64) got %d",
166                              NPY_INT64, PyArray_TYPE((PyArrayObject*) py_V3));
167                 {
168         __failure = 4;
169         if (!PyErr_Occurred()) {
170             PyErr_SetString(PyExc_RuntimeError,
171                 "Unexpected error in an Op's C code. "
172                 "No Python exception was set.");
173             }
174         goto __label_4;}
175             }
176
177         V3 = (PyArrayObject*)(py_V3);
178         Py_XINCREF(V3);
179
180 {
181
182     py_V5 = PyList_GET_ITEM(storage_V5, 0);
183     {Py_XINCREF(py_V5);}
184
185             V5 = NULL;
186             if (py_V5 == Py_None) {
187                 // We can either fail here or set V5 to NULL and rely on Ops
188                 // using tensors to handle the NULL case, but if they fail to do so
189                 // they'll end up with nasty segfaults, so this is public service.
190                 PyErr_SetString(PyExc_ValueError, "expected an ndarray, not None");
191                 {
192         __failure = 6;
193         if (!PyErr_Occurred()) {
194             PyErr_SetString(PyExc_RuntimeError,
195                 "Unexpected error in an Op's C code. "
196                 "No Python exception was set.");
197             }
198         goto __label_6;}
199             }
200             if (!PyArray_Check(py_V5)) {
201                 PyErr_SetString(PyExc_ValueError, "expected an ndarray");
202                 {
203         __failure = 6;
204         if (!PyErr_Occurred()) {
205             PyErr_SetString(PyExc_RuntimeError,
206                 "Unexpected error in an Op's C code. "
207                 "No Python exception was set.");
208             }
209         goto __label_6;}
210             }
211             // We expect NPY_INT64
212             if (!PyArray_ISALIGNED((PyArrayObject*) py_V5)) {
213                 PyArrayObject * tmp = (PyArrayObject*) py_V5;
214                 PyErr_Format(PyExc_NotImplementedError,
215                              "expected an aligned array of type %ld "
216                              "(NPY_INT64), got non-aligned array of type %ld"
217                              " with %ld dimensions, with 3 last dims "
218                              "%ld, %ld, %ld"
219                              " and 3 last strides %ld %ld, %ld.",
220                              (long int) NPY_INT64,
221                              (long int) PyArray_TYPE((PyArrayObject*) py_V5),
222                              (long int) PyArray_NDIM(tmp),
223                              (long int) PyArray_NDIM(tmp) >= 3 ?
224             PyArray_DIMS(tmp)[PyArray_NDIM(tmp)-3] : -1,
225                              (long int) PyArray_NDIM(tmp) >= 2 ?
226             PyArray_DIMS(tmp)[PyArray_NDIM(tmp)-2] : -1,
227                              (long int) PyArray_NDIM(tmp) >= 1 ?
228             PyArray_DIMS(tmp)[PyArray_NDIM(tmp)-1] : -1,
229                              (long int) PyArray_NDIM(tmp) >= 3 ?
230             PyArray_STRIDES(tmp)[PyArray_NDIM(tmp)-3] : -1,
231                              (long int) PyArray_NDIM(tmp) >= 2 ?
232             PyArray_STRIDES(tmp)[PyArray_NDIM(tmp)-2] : -1,
233                              (long int) PyArray_NDIM(tmp) >= 1 ?
234             PyArray_STRIDES(tmp)[PyArray_NDIM(tmp)-1] : -1
235             );
236                 {
237         __failure = 6;
238         if (!PyErr_Occurred()) {
239             PyErr_SetString(PyExc_RuntimeError,
240                 "Unexpected error in an Op's C code. "
241                 "No Python exception was set.");
242             }
243         goto __label_6;}
244             }
245             // This is a TypeError to be consistent with DEBUG_MODE
246             // Note: DEBUG_MODE also tells the name of the container
247             if (PyArray_TYPE((PyArrayObject*) py_V5) != NPY_INT64) {
248                 PyErr_Format(PyExc_TypeError,
249                              "expected type_num %d (NPY_INT64) got %d",
250                              NPY_INT64, PyArray_TYPE((PyArrayObject*) py_V5));
251                 {
252         __failure = 6;
253         if (!PyErr_Occurred()) {
254             PyErr_SetString(PyExc_RuntimeError,
255                 "Unexpected error in an Op's C code. "
256                 "No Python exception was set.");
257             }
258         goto __label_6;}
259             }
260
261         V5 = (PyArrayObject*)(py_V5);
262         Py_XINCREF(V5);
263
264 {
265 // Op class GpuDnnConvDesc
266
267 {
268   cudnnStatus_t err;
269
270   if ((err = cudnnCreateConvolutionDescriptor(&V1)) != CUDNN_STATUS_SUCCESS) {
271     PyErr_Format(PyExc_MemoryError, "could not allocate convolution "
272                  "descriptor: %s", cudnnGetErrorString(err));
273     {
274         __failure = 7;
275         if (!PyErr_Occurred()) {
276             PyErr_SetString(PyExc_RuntimeError,
277                 "Unexpected error in an Op's C code. "
278                 "No Python exception was set.");
279             }
280         goto __label_7;}
281   }
282
283 #if defined(CUDNN_VERSION) && CUDNN_VERSION >= 30
284
285   int pad[2] = {0, 0};
286   int subsample[2] = {1, 1};
287   int upscale[2] = {1, 1};
288
289   // Adjust padding values if using full convolution
290   if (1 == 0) {
291     pad[0] = *(npy_int64 *)PyArray_GETPTR1(V5, 2) - 1;
292     pad[1] = *(npy_int64 *)PyArray_GETPTR1(V5, 3) - 1;
293     if (2 >= 3) {
294         pad[2] = *(npy_int64 *)PyArray_GETPTR1(V5, 4) - 1;
295     }
296   }
297
298   err = cudnnSetConvolutionNdDescriptor(
299   V1,
300   2,
301   pad, subsample, upscale,
302   CUDNN_CONVOLUTION
303   );
304 #else
305   PyErr_Format(PyExc_RuntimeError, "could not set op descriptor: CUDNN_VERSION must be >= 30");
306 #endif
307   if (err != CUDNN_STATUS_SUCCESS) {
308     PyErr_Format(PyExc_RuntimeError, "could not set op descriptor: %s",
309                  cudnnGetErrorString(err));
310     {
311         __failure = 7;
312         if (!PyErr_Occurred()) {
313             PyErr_SetString(PyExc_RuntimeError,
314                 "Unexpected error in an Op's C code. "
315                 "No Python exception was set.");
316             }
317         goto __label_7;}
318   }
319 }
320 __label_7:
321
322 double __DUMMY_7;
323
324 }
325 __label_6:
326
327         if (V5) {
328             Py_XDECREF(V5);
329         }
330
331     {Py_XDECREF(py_V5);}
332
333 double __DUMMY_6;
334
335 }
336 __label_4:
337
338         if (V3) {
339             Py_XDECREF(V3);
340         }
341
342     {Py_XDECREF(py_V3);}
343
344 double __DUMMY_4;
345
346 }
347 __label_2:
348
349     if (!__failure) {
350
351 Py_XDECREF(py_V1);
352 if (V1 == NULL) {
353   py_V1 = Py_None;
354   Py_INCREF(py_V1);
355 } else {
356   py_V1 = PyCObject_FromVoidPtr((void *)V1,
357                                       (void (*)(void *))cudnnDestroyConvolutionDescriptor);
358 }
359 if (py_V1 == NULL) { cudnnDestroyConvolutionDescriptor(V1); }
360
361       PyObject* old = PyList_GET_ITEM(storage_V1, 0);
362       {Py_XINCREF(py_V1);}
363       PyList_SET_ITEM(storage_V1, 0, py_V1);
364       {Py_XDECREF(old);}
365     }
366
367     {Py_XDECREF(py_V1);}
368
369 double __DUMMY_2;
370
371 }
372
373
374         if (__failure) {
375             // When there is a failure, this code puts the exception
376             // in __ERROR.
377             PyObject* err_type = NULL;
378             PyObject* err_msg = NULL;
379             PyObject* err_traceback = NULL;
380             PyErr_Fetch(&err_type, &err_msg, &err_traceback);
381             if (!err_type) {err_type = Py_None;Py_INCREF(Py_None);}
382             if (!err_msg) {err_msg = Py_None; Py_INCREF(Py_None);}
383             if (!err_traceback) {err_traceback = Py_None; Py_INCREF(Py_None);}
384             PyObject* old_err_type = PyList_GET_ITEM(__ERROR, 0);
385             PyObject* old_err_msg = PyList_GET_ITEM(__ERROR, 1);
386             PyObject* old_err_traceback = PyList_GET_ITEM(__ERROR, 2);
387             PyList_SET_ITEM(__ERROR, 0, err_type);
388             PyList_SET_ITEM(__ERROR, 1, err_msg);
389             PyList_SET_ITEM(__ERROR, 2, err_traceback);
390             {Py_XDECREF(old_err_type);}
391             {Py_XDECREF(old_err_msg);}
392             {Py_XDECREF(old_err_traceback);}
393         }
394         // The failure code is returned to index what code block failed.
395         return __failure;
396
397         }
398     };
399     }
400
401
402         static int __struct_compiled_op_2936c9b6a222a1bc87a8848e3e5a3fe8_executor(__struct_compiled_op_2936c9b6a222a1bc87a8848e3e5a3fe8* self) {
403             return self->run();
404         }
405
406         static void __struct_compiled_op_2936c9b6a222a1bc87a8848e3e5a3fe8_destructor(void* executor, void* self) {
407             delete ((__struct_compiled_op_2936c9b6a222a1bc87a8848e3e5a3fe8*)self);
408         }
409
410 //////////////////////
411 ////  Functions
412 //////////////////////
413 static PyObject * instantiate(PyObject * self, PyObject *argtuple) {
414   assert(PyTuple_Check(argtuple));
415   if (4 != PyTuple_Size(argtuple)){
416      PyErr_Format(PyExc_TypeError, "Wrong number of arguments, expected 4, got %i", (int)PyTuple_Size(argtuple));
417      return NULL;
418   }
419   __struct_compiled_op_2936c9b6a222a1bc87a8848e3e5a3fe8* struct_ptr = new __struct_compiled_op_2936c9b6a222a1bc87a8848e3e5a3fe8();
420   if (struct_ptr->init( PyTuple_GET_ITEM(argtuple, 0),PyTuple_GET_ITEM(argtuple, 1),PyTuple_GET_ITEM(argtuple, 2),PyTuple_GET_ITEM(argtuple, 3) ) != 0) {
421     delete struct_ptr;
422     return NULL;
423   }
424   PyObject* thunk = PyCObject_FromVoidPtrAndDesc((void*)(&__struct_compiled_op_2936c9b6a222a1bc87a8848e3e5a3fe8_executor), struct_ptr, __struct_compiled_op_2936c9b6a222a1bc87a8848e3e5a3fe8_destructor);
425   return thunk; }
426
427 //////////////////////
428 ////  Module init
429 //////////////////////
430 static PyMethodDef MyMethods[] = {
431     {"instantiate", instantiate, METH_VARARGS, "undocumented"} ,
432     {NULL, NULL, 0, NULL}
433 };
434 PyMODINIT_FUNC init2936c9b6a222a1bc87a8848e3e5a3fe8(void){
435    import_array();
436    (void) Py_InitModule("2936c9b6a222a1bc87a8848e3e5a3fe8", MyMethods);
437 }
438
===============================
mod.cu(294): warning: subscript out of range
mod.cu(303): error: too few arguments in function call
1 error detected in the compilation of "/tmp/tmpxft_00001a3b_00000000-9_mod.cpp1.ii".

['nvcc', '-shared', '-O3', '-arch=sm_52', '-m64', '-Xcompiler', '-fno-math-errno,-Wno-unused-label,-Wno-unused-variable,-Wno-write-strings,-DCUDA_NDARRAY_CUH=c72d035fdf91890f3b36710688069b2e,-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,-fPIC,-fvisibility=hidden', '-Xlinker', '-rpath,/fun/francky/f/temp/compiledir_Linux-4.2--generic-x86_64-with-Ubuntu-14.04-trusty-x86_64-2.7.6-64/cuda_ndarray', '-I/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda', '-I/usr/local/lib/python2.7/dist-packages/numpy/core/include', '-I/usr/include/python2.7', '-I/usr/local/lib/python2.7/dist-packages/theano/gof', '-o', '/fun/francky/f/temp/compiledir_Linux-4.2--generic-x86_64-with-Ubuntu-14.04-trusty-x86_64-2.7.6-64/tmpLypsMo/2936c9b6a222a1bc87a8848e3e5a3fe8.so', 'mod.cu', '-L/usr/lib', '-lpython2.7', '-lcudnn', '-lcudart']
Traceback (most recent call last):
  File "convolutional_mlp.py", line 345, in <module>
    evaluate_lenet5()
  File "convolutional_mlp.py", line 224, in evaluate_lenet5
    y: test_set_y[index * batch_size: (index + 1) * batch_size]
  File "/usr/local/lib/python2.7/dist-packages/theano/compile/function.py", line 309, in function
    output_keys=output_keys)
  File "/usr/local/lib/python2.7/dist-packages/theano/compile/pfunc.py", line 511, in pfunc
    output_keys=output_keys)
  File "/usr/local/lib/python2.7/dist-packages/theano/compile/function_module.py", line 1761, in orig_function
    defaults)
  File "/usr/local/lib/python2.7/dist-packages/theano/compile/function_module.py", line 1625, in create
    input_storage=input_storage_lists, storage_map=storage_map)
  File "/usr/local/lib/python2.7/dist-packages/theano/gof/link.py", line 683, in make_thunk
    storage_map=storage_map)[:3]
  File "/usr/local/lib/python2.7/dist-packages/theano/gof/vm.py", line 1037, in make_all
    no_recycling))
  File "/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda/__init__.py", line 284, in make_thunk
    compute_map, no_recycling)
  File "/usr/local/lib/python2.7/dist-packages/theano/gof/op.py", line 918, in make_thunk
    no_recycling)
  File "/usr/local/lib/python2.7/dist-packages/theano/gof/op.py", line 836, in make_c_thunk
    output_storage=node_output_storage)
  File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 1175, in make_thunk
    keep_lock=keep_lock)
  File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 1113, in __compile__
    keep_lock=keep_lock)
  File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 1549, in cthunk_factory
    key=key, lnk=self, keep_lock=keep_lock)
  File "/usr/local/lib/python2.7/dist-packages/theano/gof/cmodule.py", line 1167, in module_from_key
    module = lnk.compile_cmodule(location)
  File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 1460, in compile_cmodule
    preargs=preargs)
  File "/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda/nvcc_compiler.py", line 447, in compile_str
    'for cmd', ' '.join(cmd))
Exception: ('The following error happened while compiling the node', GpuDnnConvDesc{border_mode='valid', subsample=(1, 1), conv_mode='conv'}(TensorConstant{[500  20  12  12]}, MakeVector{dtype='int64'}.0), '\n', 'nvcc return status', 2, 'for cmd', 'nvcc -shared -O3 -arch=sm_52 -m64 -Xcompiler -fno-math-errno,-Wno-unused-label,-Wno-unused-variable,-Wno-write-strings,-DCUDA_NDARRAY_CUH=c72d035fdf91890f3b36710688069b2e,-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,-fPIC,-fvisibility=hidden -Xlinker -rpath,/fun/francky/f/temp/compiledir_Linux-4.2--generic-x86_64-with-Ubuntu-14.04-trusty-x86_64-2.7.6-64/cuda_ndarray -I/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -I/usr/local/lib/python2.7/dist-packages/theano/gof -o /fun/francky/f/temp/compiledir_Linux-4.2--generic-x86_64-with-Ubuntu-14.04-trusty-x86_64-2.7.6-64/tmpLypsMo/2936c9b6a222a1bc87a8848e3e5a3fe8.so mod.cu -L/usr/lib -lpython2.7 -lcudnn -lcudart', "[GpuDnnConvDesc{border_mode='valid', subsample=(1, 1), conv_mode='conv'}(TensorConstant{[500  20  12  12]}, <TensorType(int64, vector)>)]")
francky@tml:/fun/francky/f/misc/code$
4

0 回答 0