【问题标题】:How to debug DirectX 11 Compute Shaders?如何调试 DirectX 11 计算着色器?
【发布时间】:2010-12-28 08:34:38
【问题描述】:

我已经开始使用 DirectX 11 Compute Shader 技术进行 GP-GPU 编程。我在 HLSL 上编写了一个相当复杂的程序,当我想调试它时,我意识到 DX SDK 2009 年 8 月的 PIX 实用程序不支持计算着色器...我知道 Nvidia 将发布用于 Visual Studio 的 Nexus,它将支持直接计算调试,但仅限于尚未发布的下一代 NVidia GPU 上:( Compute Shader 技术对我来说看起来很有希望,因为设备独立性,但它如果没有调试支持,将很难使用。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      https://github.com/cezbloch/shaderator

      一旦您的代码工作并更正,您就可以在 GPU 上执行它 - C++ 版本仅用于帮助开发。

      【讨论】:

        【解决方案3】:

        抱歉,目前这个问题没有简单的答案。

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

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

        【讨论】:

          【解决方案4】:

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

          这确实是一个可怕的情况,但这就是现在的工具情况......

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-11-10
            • 2023-03-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多