我正在尝试调试 cuda-gdb 中的程序。我能够在主机 (CPU) 上运行的代码中成功设置断点,但是每当我尝试在 GPU 上运行的代码中设置断点时,调试器就会跳过断点并给我以下错误:
"warning: Cuda API error detected: cudaLaunchKernel returned (0x7)"
然后它继续成功地执行其余的代码。我怎样才能使这些工作?
根据 NVIDIA 开发论坛的这个答案,我能够让断点工作。即,在 nvcc 编译器选项中,您需要通过使用maxrregcount
标志来限制使用的寄存器数量,例如:
nvcc -arch sm_60 -g -G -dc --maxrregcount=64 --compiler-options -Wall -std=c++14 basic.cu
(注意:要查看您有多少寄存器,请进入info cuda devices
cuda-gdb 并检查该Regs/Lane
列)