【问题标题】:cuda-gdb does not step into kernelscuda-gdb 不进入内核
【发布时间】:2014-10-27 16:05:51
【问题描述】:

我正在尝试从 cuda-gdb 获取内存跟踪。但是,我无法进入内核代码。我使用 nvcc 标志 -g -G 和 -keep 但没有效果。我可以在内核函数上设置断点,但是当我尝试访问下一条指令时,它会跳转到内核函数的末尾。我已经在 sdk 示例上尝试过这个,我观察到相同的行为。我正在研究 cuda 5 工具包。有什么建议么? 谢谢!

【问题讨论】:

    标签: cuda cuda-gdb


    【解决方案1】:

    这种行为是内核启动失败的典型行为。确保检查 CUDA 调用的返回码。请注意,为了调试,您可能希望在内核调用之后立即添加额外的调用 cudaDeviceSynchronize 并检查此调用的返回码 - 这是获取异步内核启动失败原因的最精确方法。

    更新: 在调试器之外运行但不在 cuda-gdb 中运行的代码最常见的原因是尝试从图形环境在单 GPU 系统上进行调试。 cuda-gdb 不能与 Xwindows 共享 GPU,因为这会挂起操作系统。

    如果您的系统只有一个 GPU,您需要退出图形环境(例如退出 X 窗口)并从控制台进行调试。

    如果您有一个多 GPU 系统,那么您应该检查您的 Xwindow 配置 (Xorg.conf),这样它就不会使用您为调试预留的 GPU。

    【讨论】:

    • 是的,代码在调试器之外工作。它是一个 sdk 示例,它可以正确执行。
    • 是的,这正是问题所在。我在运行我的设备的同一个 GPU 上运行 CUDA 应用程序。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2015-01-27
    相关资源
    最近更新 更多