关于调试:如何调试只有1个显卡运行X11的CUDA库

How do I debug a CUDA library with only 1 graphics card running X11

我正在运行一个 CUDA 库,我需要针对内存问题和其他问题进行调试。但是当我将 cuda-gdb 附加到进程时,我得到了错误

error: All CUDA devices are used for X11 and cannot be used while debugging.

我了解错误,但必须有一种方法可以调试问题。由于我只有 1 个 GPU,因此关闭 X11 确实不切实际。

在非 Nvidia 硬件上,我认为有一种方法可以模拟 cuda gpu。即使我有一个 NVIDIA gpu,这是否可以设置为调试?


首先,当您使用 Linux 时,您处于一个幸运的位置,因为您可以很容易地在调试时杀死 X。

但是,如果您真的想在调试时坚持运行 X,那您就很不走运了,因为这是不可能的,原因很充分:显示驱动程序有一个称为看门狗定时器的保护机制,当 GPU 在使用还驱动显示器。看门狗定时器会中断任何运行较长 AFAIR 5s 的内核。这是为了防止 GPU 锁定。

或者,您可以尝试使用 ocelot,但我不确定它提供的调试功能有多好。