October 1, 2009

GPU Debugging Grows Up

Michael Feldman

Lost in the shuffle around NVIDIA’s big Fermi GPU unveiling was the company’s announcement of the Nexus development toolset. Since this week’s GPU Technology Conference is very much focused on GPU computing developers, the news is especially relevant for this crowd.

Nexus is basically a set of three tools — a debugger, a performance analyzer, and something called a graphics inspector — that has been integrated into Microsoft Visual Studio. It’s designed to work with CUDA code, but support for OpenCL and Microsoft’s DirectCompute is promised for future iterations.

The idea here is to bring GPU debugging onto the mainstream development platform. The timing is good, inasmuch as Fermi is designed to attract a lot more mainstream developers. And given that many programmers develop on Windows, even those coding up scientific applications, the Visual Studio platform just made sense. The Linux CUDA toolset does include its own debugger (GDB) and a profiler, but these are standalone tools.

One of the unique features of the Nexus debugging tools is that it they understand both the CPU and GPU environments and manage them transparently. For example, you can examine local GPU memory, set source breakpoints in GPU-resident code, track GPU threads, view GPU events, as well perform the those same operations on the CPU side. You can also do typical debug operations like setting conditional breakpoints, detecting out-of-bounds memory accesses, and so on. A demo of the Nexus debugger and other tools in action is available on YouTube. If that sort of thing gets your blood racing click here.

By the way, if you still prefer to debug your code with printf (and many do), software support for the C standard I/O library, stdio.h, has been added in the new architecture.

A beta version of Nexus is scheduled to drop on October 15. To register for the beta or just to get some more info, check out www.nvidia.com/nexus.

Share This