如何使用 optirun 命令在 nsight 中启动项目的调试版本?

Posted

技术标签:

【中文标题】如何使用 optirun 命令在 nsight 中启动项目的调试版本?【英文标题】:How to start debug version of project in nsight with optirun command? 【发布时间】:2012-11-16 13:11:36 【问题描述】:

我一直在编写一些简单的 cuda 程序(我是学生,所以我需要练习),问题是我可以从终端使用 nvcc 编译它(使用 Kubuntu 12.04LTS),然后使用 optirun 执行它。/ a.out (hardver 是 dell inspiron 上的 geforce gt 525m),一切正常。主要问题是我无法从 Nsight 做任何事情。当我尝试启动代码的调试版本时,消息是“启动失败!找不到二进制文件!”。我认为这是关于使用 optirun 运行命令,但我不确定。有没有类似的经历?谢谢,提前帮助的人。 :)

【问题讨论】:

在 nsight 中,在 Project...Build Configurations...Set Active 下,是否选择了 DebugRelease?您使用什么构建命令来构建您的项目?你用什么命令来运行调试版本? 调试版本已设置。 :) 我不确定你的意思是什么。 :D 我通过单击绿色播放按钮运行它,它作为本地 c/c++ 应用程序运行,我认为现在这可能是一个问题。但我不知道如何正确设置它。你能帮我解决这个问题吗? :) 如果您执行 Project...Clean 然后是 Project...Build Project 然后是 Run...Debug 会发生什么? 非常感谢。我之前没有使用 IDE for C(只有 Java),而且我总是自己输入 Makefile,所以我从没想过推动绿色启动不会执行 make 命令。 :) 这是愚蠢的错误,很抱歉打断你。 :) 再次感谢。 对我来说,按下绿色的“运行”按钮 进行制作(然后启动代码)。你可以试试看底部的状态窗口。或者,为了向自己证明这一点,请尝试 Project...Clean,然后按下绿色的“运行”按钮。我不确定在这种情况下到底是什么问题。但是,我认为按下绿色按钮 不会 启动调试模式。调试模式(即启动调试器)和运行项目的调试版本是两件稍微不同的事情。 【参考方案1】:

由于这是我在搜索“nsight optirun”时发现的第一个帖子,所以我只想写下我为使其对我有用所采取的步骤。

    转到运行 -> 调试配置 -> 调试器

    找到 CUDA GDB 可执行文件的文本框(在我的例子中,它设置为“$cuda_bin/cuda-gdb”)

    添加“optirun --no-xorg”,在我的情况下,它是“optirun --no-xorg $cuda_bin/cuda-gdb”

如果您有一个 OpenGL 窗口,则可能不需要“--no-xorg”选项,甚至会适得其反,因为它会阻止其中任何一个出现。但是对于我的科学代码,它是必需的,因为它可以防止我遇到内核超时。

寻找错误的快乐。

【讨论】:

【参考方案2】:
    我们在没有 optirun 的 Optimus 系统上测试了 Nsight - 有关在 Optimus 系统上使用 CUDA 工具包的信息,请参阅CUDA Toolkit Getting Started 中的“安装 cuda 工具包”。我们尚未尝试使用 Nsight EE 进行 optirun。 如果您仍需要使用 optirun 进行调试,您可以尝试制作一个使用 optirun 启动 cuda-gdb 的 shell 脚本,并在调试配置属性中将该 shell 脚本设置为 cuda-gdb 可执行文件。

【讨论】:

【参考方案3】:

最简单的做法是使用 optirun 运行 eclipse,它也可以正常运行您的应用程序。

【讨论】:

以上是关于如何使用 optirun 命令在 nsight 中启动项目的调试版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VS 2010 中使用 Nvidia NSight 查看 CUDA 线程值?

如何使用 Nsight 调试(GLSL)着色器?

如何在 nvidia Nsight eclipse 中使用 GNU 科学库 (gsl)

如何测量 NVIDIA nsight 系统中复制的数据量?

如何修复 Nsight 分析器中的“低内核并发”警告?

使用 Nsight 确定银行冲突和合并