我正在尝试从cuda-gdb获取内存跟踪。但是,我无法深入了解内核代码。我使用了nvcc标志-g、-G和-keep,但都没有效果。我可以在内核函数上设置一个断点,但是当我尝试访问下一条指令时,它会跳到内核函数的末尾。我已经在sdk示例中尝试过了,并且我观察到了相同的行为。我正在开发cuda 5工具包。有什么建议吗?谢谢!
发布于 2013-06-19 08:57:02
这是内核启动失败时的典型行为。确保检查CUDA调用的返回代码。请注意,对于调试,您可能希望在内核调用之后立即添加额外的调用cudaDeviceSynchronize,并检查此调用的返回代码-这是获得异步内核启动失败原因的最精确方法。
GPU:,在调试器之外运行但不在cuda-gdb中运行的代码,最常见的原因是试图从图形环境在单个系统上进行调试。cuda-gdb不能与Xwindows共享GPU,因为这会挂起操作系统。
如果您的系统只有一个GPU,则需要退出图形环境(例如,退出X窗口)并从控制台进行调试。
如果你有一个多图形处理器系统,那么你应该检查你的Xwindow配置(Xorg.conf),这样它就不会使用你为调试而保留的图形处理器。
https://stackoverflow.com/questions/17181032
复制相似问题