如何使用仅有一块GPU的Eclipse Nsight调试CUDA程序

7
我遇到了一个错误: "所有CUDA设备都被用于显示,无法在调试时使用"(使用Ubuntu)。
有没有办法仅使用一张GPU来进行Nsight Eclipse的调试?
我看到过一些解决方案,如使用"sudo service lightdm stop" 来终止X,但这也会关闭Nsight Eclipse,那有什么意义呢?
更新:由于不可能使用运行X的同一张GPU进行调试,我必须问:如何才能利用家庭网络中的另一台计算机以"远程"方式访问Ubuntu,使得客户端计算机执行X桌面渲染,而主机GPU则运行调试器?

如果您可以物理控制机器,您可以添加一张通用的廉价显卡并在其上运行X,以释放GPU进行调试。 - Roger Dahl
3个回答

5
通常情况下,不支持在托管X显示的同一GPU上进行调试。来自nsight getting started guide的内容如下:“运行X11(在Linux上)或Aqua(在Mac上)的GPU无法用于调试CUDA应用程序,并且将从在调试器中运行的应用程序中隐藏。这样的GPU仍然可以用于分析GPU应用程序。
我认为实际上不同的窗口管理器之间有不同的行为。我有一台配备Quadro1000M和RHEL 6.2(带GNOME)的笔记本电脑,使用CUDA 5.0,我能够进入nsight EE中的调试器(Project...Build Project后跟Run...Debug)。此时,我可以在主机代码中设置断点并逐步执行。如果我运行代码以完成,则会得到正确的输出。但是,您仍然无法调试设备代码。如果在设备代码中设置断点(并击中该断点),则会挂起X会话。

编辑:CUDA 5.5及更高版本现在支持在单个cc3.5或更高版本的GPU上进行调试。


谢谢,我浪费了很多时间来安装Ubuntu,学习如何使用它和配置它 - 只是现在才发现。他们应该用闪烁的红色粗体字写下这个警告... - alonhzn
我知道你在问题中提到了“只有一个GPU”。但是,如果你碰巧有一个集成了显卡的(台式)系统,那么将X显示器移动到那里并将CUDA GPU保留无显示器并不是很困难。然后,你就可以顺利地运行nsight EE。 - Robert Crovella
很遗憾,我没有。但是如果有人知道的话,我找到了一个关于如何配置它的解释:http://www.onextrabit.com/view/50310aea65e7d250c5000002 - alonhzn
我成功地通过进入 Window -> Preferences -> Nsight 菜单并勾选启用 CUDA 软件抢占调试的复选框,在 Nsight 中打开了此功能。 - Aaron Swan

1

看起来你可以在只有一张GPU的机器上使用CUDA 5.5来调试CUDA程序。 请参考CUDA_Toolkit_Release_Notes中的第1.7.3.2节CUDA-GDB。


3
软件抢占特性需要一台具有计算能力3.5(GK110)的设备,这些设备目前相当高端。然而,过几年后这些设备将会变得非常普遍。 - Freerobots
目前来看,只有GTX Titan和GTX 780 Geforce显卡支持此功能。因此,这对于爱好者和业余爱好者来说是遥不可及的。:( - Shayan RC
1
@Shayan RC:有趣的是,根据CUDA GPUs网站,GeForce GT 640(GDDR5)显卡具有CC 3.5。最近还推出了Maxwell显卡GeForce 750和750 Ti,具有CC 5.0,因此这些显卡也应支持软件抢占。 - Grzegorz Szpetkowski

0

另一种可能有效的方法是使用主板上的视频输出来显示。

这样,您可以使用主板上的图形来显示,并使用GPU进行调试。

为此,您需要:

  • 进入BIOS并将主显示适配器更改为“On-Board”(这因制造商而异)
  • 物理连接您的显示器到主板上的显示输出
  • 重新启动,然后运行Nsight

如果您使用的系统没有主板上的图形,则很遗憾!

这个已经能够在Windows中使用Visual Studio和Nsight插件运行它。

P.S. 您可能需要编辑xorg.conf以使X使用主板上的图形而不是Nvidia GPU。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接