Cuda随机挂起cudaDeviceSynchronize

时间:2014-09-22 17:24:50

标签: c cuda hang

我有一段GPU代码已经工作了一段时间。我最近做了一些小的算法更改,但他们没有触及CUDA部分。

我在一台三台Xeon机器上运行生产运行,每台机器都有780 Ti。每次运行大约需要三分钟才能完成,但此时已有两个案例(5000个中),其中应用程序已挂起数小时(直到被杀)。两者都在同一台机器上。

第二次,我将GDB附加到正在运行的进程中,并获得了类似

的回溯
#0  0x00007fff077ffa01 in clock_gettime ()
#1  0x0000003e1ec03e46 in clock_gettime () from /lib64/librt.so.1
#2  0x00002b5b5e302a1e in ?? () from /usr/lib64/libcuda.so
#3  0x00002b5b5dca2294 in ?? () from /usr/lib64/libcuda.so
#4  0x00002b5b5dbbaa4f in ?? () from /usr/lib64/libcuda.so
#5  0x00002b5b5dba8cda in ?? () from /usr/lib64/libcuda.so
#6  0x00002b5b5db94c4f in cuCtxSynchronize () from /usr/lib64/libcuda.so
#7  0x000000000041cd8d in cudart::cudaApiDeviceSynchronize() ()
#8  0x0000000000441269 in cudaDeviceSynchronize ()
#9  0x0000000000408124 in main (argc=11, argv=0x7fff076fa1d8) at src/fraps3d.cu:200

我手动执行frame 8; return;强行完成,这导致它最终停留在下一个cudaDeviceSynchronize()调用上。再次这样做会使它在之后的下一次同步调用中停留(每次都使用相同的帧0到8)。更奇怪的是,失败发生在主循环的中间,在第5000次通过。

杀死它后,下一个作业开始并正常运行,因此它似乎不是执行主机的系统性故障。

关于什么可能导致像这样的随机故障的任何想法?

我正在使用V6.0.1进行编译和运行,运行驱动程序版本为331.62。

0 个答案:

没有答案