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 -a
和uname -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$