Live from Super Computing 2011: Live C++ AMP Debugging on nVidia’s GPUs!

Our parallel debugging team, headed by architect Paul Maybee and development lead Maria Blees have been putting extra hours working jointly with nVidia engineers to enable live on-hardware GPU debugging for C++ AMP, which visitors to SC’11 can now play with at our Microsoft Parallel Computing booth. Here is a snapshot of (from left to right) Paul Maybee (Microsoft) with nVidia’s engineers Magnus Strengert, Chris VanderKnyff and Sebastien Domine showing off their mutual creation:

And here’s a closer snapshot of the debugging session:

You can watch Daniel Moth’s video on C++ AMP debugging to understand what is being shown here in greater detail, but, briefly:

1. Locals are evaluated on the GPU and shown in the Locals window (bottom left)

2. The call stack is shown on the bottom right. Note: the call stack is in reality completely inlined when generating code for the GPU, but we have enough symbolic information to reconstitute it and allow you to query it, as if it still existed.

3. The parallel stack window now show all threads in flight on the GPU (top right)

4. The main code window (top left) shows we’re stopped at a breakpoint and at the line of code above the breakpoint you can also see a little indicator (green hued) showing that there are other threads currently there, at that position in their execution.

Compared to debugging on the reference accelerator, true hardware debugging really shows you what’s going on on the graphics card, for example, you can see how mathematical operations may have different precision than that which is calculated on the CPU, and as another example, you will see many more threads and thread tiles in flight.

This is yet another illustration of the close relationship we have with hardware partners. The debugging interfaces are open for all hardware vendors to implement and we are very excited that nVidia has been there to work with us and enable this important feature on time for the Super Computing conference and the upcoming Beta release of the next version of Visual Studio.


Comments (4)

  1. oscarb says:

    can we expect directcompute shader GPU debugging also?

  2. DanielMoth says:

    Hi oscarb, Visual Studio 11 does not expose the GPU live debugging directly to projects using HLSL; it only supports projects using C++ AMP. The debug engine is DirectCompute aware, but the UI does not expose it since we did not have time to test that scenario – sorry. It is good to know this is something that interests you, so we can take it in account for future releases.

    BTW, is there anything preventing you from using C++ AMP instead of using DirectCompute directly?

  3. oscarb says:

    I'm interested in cutting edge graphics programming so DirectCompute debugging of 3d fluid simulator for example would be good:

  4. DanielMoth says:

    Hi Oscarb, sounds cool. Please let us know (in our MSDN forum) how you get on with any porting efforts from DirectCompute to C++ AMP. One of my colleagues ported the Julia Set from that sample and it was straight forward…