Question

I've started using DirectX 11 Compute Shader technology for GP-GPU programming. I had written quite a complex program on HLSL and when I wanted to debug it, I realized that PIX utility from DX SDK August 2009 does not support Compute Shaders... I know that Nvidia is going to release Nexus for Visual Studio, which will support Direct Compute debugging, but only on next generation of NVidia GPUs which are not released yet :( Compute Shader technology looks very promising to me, because of device independence, but it would be very hard to use without debugging support.

Do you know any tools or approaches, which can be used for Compute Shader debugging, available now or planned for release in the near future?

Was it helpful?

Solution

I am waiting for NVIDIA Nexus to become widely available. Maybe Microsoft could come up with something that works with the reference rasterizer but I would say what's important is to get tight integration with the hardware: in such a case, only vendors could provide the necessary tools.

Someone might know whether AMD plans to add support for compute shaders in GPU PerfStudio.

OTHER TIPS

An efficient way to develop and debug complex HLSL Compute Shader is to compile it to C++. Once you have achieved that you can leverage your IDE debugging features that you normally use with C++ like memory and variable look-up etc. Below is a proof of concept demo project showing how to debug a sample DirectX HLSL Compute Shader:

https://github.com/cezbloch/shaderator

Once your code is working and correct you execute it on GPU - the C++ verion is only meant to help with development.

Sorry but there's no trivial answer to that question for the moment.

Maybe try to enrolled in NVIDIA Nexus beta program: http://supportcenteronline.com/ics/support/default.asp?deptID=4639

Where did you read Nexus need a Fermi-based GPU? I thought that the requirements where a SLI capable workstation with 2 recents NVIDIA GPUs, or 2 NVIDIA-based workstations (and then debugging the target remotely).

Unfortunately, debugging compute shaders is very much like debugging vertex and pixel shaders used to be... The best way that I have found is to perform small changes and output test values to a temporary texture resource. Then you can render the texture resource to the screen of your application (or even saved to file), and use that to extract info about what is going on in shader.

It is really a terrible situation, but that is how the tooling situation is right now...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top