cuda-gdb 在 Linux 上的 nsight 中不起作用
Posted
技术标签:
【中文标题】cuda-gdb 在 Linux 上的 nsight 中不起作用【英文标题】:cuda-gdb not working in nsight on linux 【发布时间】:2012-10-11 01:44:50 【问题描述】:我在我的 Ubuntu 12.10 中安装了 cuda 5,它运行良好,我也可以在终端中通过 cuda-gdb 编译和调试。我正在尝试使用 nsight,它可以毫无问题地编译和执行我的代码,但是当我尝试调试时出现以下错误
Error in final launch sequence
Failed to execute MI command:
-gdb-set cuda api_failures ignore
Error message from debugger back end:
Undefined set cuda command: "api_failures ignore". Try "help set cuda".
Undefined set cuda command: "api_failures ignore". Try "help set cuda".
我正在使用 ubuntu 12.10 64 位并使用 optirun (bumblebee) 启动 cuda 可执行文件和 nsight,因为我有 GTX 675M (optimus)。我通过 apt-get 安装了 cuda-gdb,我得到了 4.2 版:
frederico@zeus:~/Dropbox/coisas/projetos/delta_cuda$ cuda-gdb --version
NVIDIA (R) CUDA Debugger
4.2 release
Portions Copyright (C) 2007-2012 NVIDIA Corporation
GNU gdb (GDB) 7.2
我认为这不是问题,因为我可以单独使用它(无需 nsight)。我也将 nsight 更改为使用 optirun 启动 cuda-gdb,但仍然收到相同的错误。
【问题讨论】:
【参考方案1】:问题出在 cuda-gdb 的版本上,我必须使用 cuda-gdb 版本 5。它带有工具包版本 5,只是对 /usr/bin 进行了符号舔,它就可以工作了。
【讨论】:
您收到此消息是因为 Nsight 尝试运行仅在 CUDA 5.0 中引入的较新的 cuda-gdb 命令之一。 您的解决方案有效,但很难在您不是管理员的多用户系统上设置。大多数时候,系统管理员不愿意在/usr/bin
中添加指向/opt
的链接...【参考方案2】:
可以用 nsight 和 bumblebee 调试 CUDA 程序。 (nsight v.5.0.0, bumblebee 3.2.1, Debian sid)
您只需将调试器命令行 (CUDA GDB Executable) 替换为: 项目资源管理器 -> 右键单击您的项目 -> 选择“调试为” -> 单击“调试配置...” -> 选择“调试器”选项卡
CUDA GDB 可执行文件:optirun --no-xorg cuda-gdb
(另一种可能性是制作一个小的 shell 脚本,如下所示:/usr/bin/opti-cuda-gdb
)
#!/bin/bash
optirun --no-xorg /usr/bin/cuda-gdb $*
这种方式 optirun 不会为 gdb 启动虚拟屏幕,GPU 不接受图形并且可以进行调试。
希望有帮助!
【讨论】:
【参考方案3】:无需创建此链接。
您可以在 Run/Debug Configurations... 菜单中选择 nsight 使用的 cuda-gdb
可执行文件。
在此菜单中,单击 C/C++ Application 下的应用程序,然后选择 Debugger 选项卡,您可以在其中浏览文件系统并将路径设置为 cuda-gdb-5.0可执行文件。
【讨论】:
那行得通。但是,对我而言,将其设置为所有用户比向管理员解释情况要大 我再次不同意。因为如果每个用户都使用 cuda-gdb-5.0,那么它应该安装在默认位置,或者用户PATH
应该相应地更新到该位置。不过,享受cuda-gdb
:)以上是关于cuda-gdb 在 Linux 上的 nsight 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何将 cuda-gdb 与使用 nvcc 编译的静态库的 g++ 链接程序一起使用?
cuda-gdb:“CUDA_EXCEPTION_9:Warp Hardware Stack Overflow”的含义/出现