如何调试DirectX 11计算着色器?

时间:2009-12-19 17:09:31

标签: debugging directx gpgpu directx-11 compute-shader

我开始使用 DirectX 11 Compute Shader 技术进行GP-GPU编程。我在HLSL上编写了一个非常复杂的程序,当我想调试它时,我意识到DX SDK 2009年8月的 PIX 实用程序不支持Compute Shaders ......我知道Nvidia将会发布 Nexus 用于Visual Studio,它将支持Direct Compute调试,但仅适用于尚未发布的下一代NVidia GPU :( Compute Shader技术看起来非常有前途,因为设备独立性,但它没有调试支持就很难使用。

您是否知道可用于Compute Shader调试的任何工具或方法,现在可用或计划在不久的将来发布?

4 个答案:

答案 0 :(得分:2)

我正在等待NVIDIA Nexus广泛使用。也许微软可以提出一些与参考光栅化器兼容的东西,但我会说重要的是与硬件紧密集成:在这种情况下,只有供应商才能提供必要的工具。

有人可能知道AMD是否计划在GPU PerfStudio中添加对计算着色器的支持。

答案 1 :(得分:2)

开发和调试复杂的HLSL Compute Shader的有效方法是将其编译为C ++。一旦实现了这一点,就可以利用通常与C ++一起使用的IDE调试功能,如内存和变量查找等。下面是一个概念验证演示项目,演示如何调试示例DirectX HLSL Compute Shader:

https://github.com/cezbloch/shaderator

一旦你的代码工作正确,你就可以在GPU上执行--C ++版本只是为了帮助开发。

答案 2 :(得分:0)

很抱歉,暂时没有回答这个问题。

也许尝试注册NVIDIA Nexus测试计划: http://supportcenteronline.com/ics/support/default.asp?deptID=4639

你在哪里阅读 Nexus 需要基于费米的GPU?我认为具有2个NVIDIA GPU或2个基于NVIDIA的工作站(然后远程调试目标)的SLI工作站的要求。

答案 3 :(得分:0)

不幸的是,调试计算着色器非常类似于调试顶点和像素着色器...我发现的最好方法是执行小的更改并将测试值输出到临时纹理资源。然后,您可以将纹理资源渲染到应用程序的屏幕(甚至保存到文件中),并使用它来提取有关着色器内容的信息。

这真是一个非常糟糕的情况,但这就是现在的工具情况......