2015-01-29 3 views
0

У меня есть приложение, которое связано с CPython и вызывает отсюда код Anano + CUDA.Ошибка в выходе Theano/CUDA в cuStreamDestroy

Приложение также использует CUDA и Cublas. Но поскольку они создают свою собственную ручку, я думаю, что они не должны сталкиваться с проблемами.

GPU находится в эксклюзивном режиме, то есть используется только в этом процессе. Я получил этот крах как на Nvidia Tesla K20c, так и на Nvidia GeForce GTX 680. На Ubuntu 12.04. CUDA 6.0. Последний Теано из Гит.

Иногда, но не всегда, он падает, когда он очищает CPython, где Anano косвенно очищает свои ручки Cublas (см. cublasDestory_v2 в стеке). Очистка CPython выполняется в вызове atexit, возможно, это актуально.

Это StackTrace:

PROGRAM DEFECTIVE (TERMINATED BY SIGNAL): 
Segmentation fault 

Creating stack trace (innermost first): 
#2 /lib/x86_64-linux-gnu/libc.so.6(+0x364a0) [0x2ab5845964a0] 
#3 /usr/lib/libcuda.so(+0x1f60f5) [0x2ab586d560f5] 
#4 /usr/lib/libcuda.so(+0x20476b) [0x2ab586d6476b] 
#5 /usr/lib/libcuda.so(+0x17ac02) [0x2ab586cdac02] 
#6 /usr/lib/libcuda.so(cuStreamDestroy_v2+0x52) [0x2ab586ca9b32] 
#7 /usr/local/cuda-6.0/lib64/libcublas.so.6.0(+0x206074) [0x2ab57c6ee074] 
#8 /usr/local/cuda-6.0/lib64/libcublas.so.6.0(+0x23a87d) [0x2ab57c72287d] 
#9 /usr/local/cuda-6.0/lib64/libcublas.so.6.0(cublasDestroy_v2+0x1e) [0x2ab57c536fee] 
#10 /home/zeyer/.theano/compiledir_Linux-3.16--generic-x86_64-with-Ubuntu-12.04-precise-x86 
_64-2.7.3-64/cuda_ndarray/cuda_ndarray.so(_Z24CudaNdarray_gpu_shutdownP7_objectS0_+0x15) [0x 
2ab598296065] 
#11 /usr/lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x4f18) [0x2ab5838e4148] 
#12 /usr/lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x855) [0x2ab5838a46b5] 
#13 /usr/lib/libpython2.7.so.1.0(+0x5c86d) [0x2ab5838a486d] 
#14 /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x53) [0x2ab583989083] 
#15 /usr/lib/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x47) [0x2ab5839899d7] 
#16 /usr/lib/libpython2.7.so.1.0(Py_Finalize+0xca) [0x2ab5838dc57a] 
#17 /home/zeyer/sprint-executables/20150127.125851.367a43a.linux-x86_64-standard/NnTrainer/ 
nn-trainer.linux-x86_64-standard() [0xa0fb2b] 
#18 /lib/x86_64-linux-gnu/libc.so.6(+0x3b901) [0x2ab58459b901] 
#19 /lib/x86_64-linux-gnu/libc.so.6(+0x3b985) [0x2ab58459b985] 
#20 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf4) [0x2ab584581774] 
#21 /home/zeyer/sprint-executables/20150127.125851.367a43a.linux-x86_64-standard/NnTrainer/nn-trainer.linux-x86_64-standard() [0x7b6391] 

Это известная ошибка? Где я могу даже начать отлаживать это? Как это исправить?

+1

У вас есть вопрос? – talonmies

+1

А также действительный код? –

+0

@talonmies: Я всегда думал, что если я представляю крушение с трассировкой стека, очевидные неявные вопросы: зачем я это получаю? Как это исправить? Но я продлил вопрос. – Albert

ответ

0

Я звоню Py_Finalize ранее, а не через std::atexit, и до сих пор у меня не было этого сбоя. Поэтому я думаю, что это решение.