我有一段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。