我正在尝试从cuda-gdb获取内存跟踪。但是,我无法进入内核代码。我使用nvcc标志-g -G和-keep但没有效果。我能够在内核函数上设置一个断点,但是当我尝试访问下一条指令时,它会跳转到内核函数的末尾。我在sdk示例上试过这个,我观察到了同样的行为。我正在研究cuda 5工具包。有什么建议? 谢谢!
答案 0 :(得分:1)
此行为是内核启动失败的典型行为。确保检查CUDA呼叫的返回码。请注意,对于调试,您可能希望在内核调用后立即添加额外的调用cudaDeviceSynchronize
并检查此调用的返回代码 - 这是获取异步内核启动失败原因的最精确方法。
更新:在调试器外运行但在cuda-gdb中运行的代码通常是由于尝试从图形环境调试单GPU系统引起的。 cuda-gdb无法与Xwindows共享GPU,因为这会挂起操作系统。
如果您的系统只有一个GPU,您需要退出图形环境(例如退出X窗口)并从控制台进行调试。
如果你有一个多GPU系统,那么你应该检查你的Xwindow配置(Xorg.conf),这样就不会使用你预留的GPU进行调试。