我正在尝试调试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
(注意:要查看您有多少寄存器,请在cuda gdb中输入info cuda devices
并检查Regs/Lane
列(