Search code examples
eclipsecudagpunsight

How to debug CUDA using eclipse Nsight with only one GPU


I'm getting an error: "all cuda devices are used for display and cannot be used while debugging" (Using Ubuntu)

Is there ANY way to use Nsight eclipse with only one GPU for debugging? I have seen solutions like "sudo service lightdm stop" to kill X but that kills Nsight eclipse too so what's the point?

Update: Since it is not possible to debug with the same GPU that runs X, I have to ask: How does one go about using ANOTHER computer in his home network to "remotely" access Ubuntu in such a way that the X desktop rendering will be performed by the Guest computer while letting the host GPU run the debugger?


Solution

  • In general, it's not supported to debug on the same GPU that is hosting an X display. From the nsight getting started guide: "A GPU that is running X11 (on Linux) or Aqua (on Mac) cannot be used to debug a CUDA application and will be hidden from the application ran in the debugger. Such GPU can still be used for profiling GPU applications. "

    I believe there is actually different behavior amongst different window managers, however. I have a laptop with Quadro1000M and RHEL 6.2 (with GNOME), with CUDA 5.0, and I am able to get into the debugger in nsight EE (Project...Build Project followed by Run...Debug). At that point I can step through and set breakpoints in host code. And if I run the code to completion I get proper output. However, you still can't debug device code. If you set a breakpoint in the device code (and hit that breakpoint), you will hang the X session.

    EDIT: CUDA 5.5 and beyond now support the ability to debug on a single cc3.5 or higher GPU.