我有一个附有2个cuda卡的桌面,我尝试通过将一些断点放入内核行来调试cuda代码。不过,调试器仅显示内核函数的入口和终端。它没有提供在内核函数体上加载的能力。它只是无视。我已经读过,要调试GPU内核,您需要将代码运行到当前系统未使用的图形卡上。在此基础上,我还尝试通过将我的活动GPU设置为第二个(未由系统使用)来运行调试器,但仍然调试器忽略内核主体。我如何解决这个问题,使用CUDA调试器?否则,编写复杂的cuda内核是非常痛苦的。在Ubuntu Nsight上调试cuda内核代码?
可能与当前的304驱动程序版本相关联,位于bumblebee optimus卡上?
您使用的是cuda-gdb吗?还是Nsight EE?你正在编译与-G开关?尝试在内核入口处设置一个断点(即发出'break mykernel'命令或任何内核名称),然后查看是否在命中该断点后,可以在内核代码中设置断点。 cuda-gdb手册还提供了可以尝试的示例练习。 – 2013-04-28 15:33:50
使用cuda-gdb作为Nsight的默认设置。我也试着直接用cuda-gdb在终端上调试它,但仍然是同样的问题。 – erogol 2013-04-28 15:53:00
如果您尝试了我的建议,我无法从您的回复中得知。你有没有尝试在内核名称处设置一个断点,然后运行,直到遇到该断点,然后在内核中设置断点?我建议在不驱动显示器的GPU上执行此操作,并配置该GPU以便X不使用它(即不会显示在“xorg.conf”文件中)。 – 2013-04-28 20:45:35