这篇文章最初发表在 NVIDIA 技术博客上。
NVIDIA Nsight 开发者工具 提供对 NVIDIA GPU 和图形 API 的全面访问,用于性能分析、优化和调试活动。当使用光线跟踪或路径跟踪等高级渲染技术时,Nsight 工具是您创造流畅体验的伙伴。
在 SIGGRAPH 2023 上,NVIDIA 举办了一个实验室,探索如何使用 NVIDIA Nsight Tools 来调试和分析光线追踪应用程序。新版本的 NVIDIA Nsight Aftermath SDK,NVIDIA Nsight Graphics 和 NVIDIA Nsight Systems 也已提供。有关 Nsight Tools 在 SIGGRAPH 上发布的更多信息,请查看 NVIDIA Graphics Tools 的最新视频。
这篇文章探讨了 Nsight Aftermath SDK 2023 . 2 如何通过改进事件标记器性能来加速 GPU 崩溃调试。
Nsight Aftermath SDK GPU 碰撞尸检分析
很少有问题像 GPU 崩溃那样紧迫,这可能会突然阻碍开发进度,直到问题得到解决。开发人员和最终用户都觉得这些崩溃令人沮丧,尤其是当他们在失败时无法从 GPU 管道中获取有用的调试信息时。为了揭示隐藏的异常,Nsight Aftermath SDK 在游戏失败时打开一个进入 GPU 的窗口。这有助于查明问题的根源,并指导开发人员解决问题。
Nsight Aftermath SDK 可生成 GPU 崩溃转储文件,这些文件可以加载到 NVIDIA Nsight Graphics 中,以可视化 GPU 状态,揭示 MMU 故障信息、扭曲细节、有问题的着色器源等。将 Aftermath 集成到现有的崩溃报告程序中,可以从最终用户的机器中提供更精细的管道转储,从而提供可操作的报告。今天的 Nsight Aftermath SDK 更新改进了通过低开销、特定于应用程序的标记提供的上下文数据。
在 Nsight Aftermath SDK 中,我们增强了用于 DirectX 12 应用程序的事件标记器性能。您可以按照所需的间隔将这些标记插入到 CPU 代码中,显著减少的开销使它们可用于运行应用程序。这些标记被写入 Aftermath 崩溃转储文件,指示在应用程序帧中 GPU 异常发生的位置。有了这些信息,您可以确定在 GPU 上执行的工作负载,并查看崩溃时使用的着色器。
Nsight Aftermath SDK 的 2023 . 2 版本还支持收集和显示着色器寄存器值,以帮助调试流式多处理器( SM )异常。在 SM 上,寄存器在指令执行时存储指令的结果。如果着色器工作负载触发了故障,则此数据与确定故障源特别相关。在写入 Nsight Aftermath 转储文件后,您可以在 Nsight Graphics 中检查寄存器值中的错误线程。这有助于确定着色器执行失败的位置和原因。
图 1 。 Nsight Aftermath SDK 公开与导致异常的着色器源代码行相对应的着色器寄存器值
SM 寄存器数据现在可用于 DirectX 12 和 Vulkan 应用程序。请注意,查看此数据需要 NVIDIA Nsight Graphics Pro。如需协调,请联系您的 NVIDIA 开发者技术或开发者关系联系人,或者发邮件请求访问。
Nsight Aftermath 现在也可以通过 DirectX Agility SDK 使用。
Nsight Aftermath SDK 和事件标记入门
开始使用 SDK 很容易。这里有一些提示可以帮助您使用 GPU 崩溃转储和事件标记。更多信息包含在阅读我下载的部分。
- 下载 Nsight Aftermath SDK 2023.2。
- 通过调用启用 GPU 崩溃转储创建
GFSDK_Aftermath_EnableGpuCrashDumps
。请注意,不会对该调用之前生成的设备进行崩溃转储。请确保先启用它。 - 设置 Nsight Aftermath 选项以控制捕获的信息。
例如,您可以在初始化设备的 Nsight Aftermath 时启用着色器调试信息和运行时着色器错误报告"标志"。
**提示:**如果要使用事件标记,请确保在此步骤中启用了事件标记标志。您还可以使用 Nsight Aftermath Monitor 应用程序来启用 SM 寄存器收集。
图 2 :包含在 SDK 和 Nsight Graphics 中的 Nsight Aftermath Monitor 是收集崩溃信息的命令中心
- 当您的 GPU 转储被收集后,可以使用 Nsight Graphics 来实现丰富的数据可视化。 Nsight Graphics 将帮助您分析崩溃并确定如何解决。
提示: Aftermath API 提供了一个简单而轻量级的解决方案,用于在 GPU 时间线上插入事件标记。为了将 CPU 开销保持在最低限度,您可以设置 dataSize=0
,这将指示 Aftermath 依赖应用程序来管理和解析标记数据本身。
下载 NVIDIA Nsight 开发工具
下载所有在 SIGGRAPH 上发布的新 Nsight 开发工具。
如果您想深入了解或有任何问题,可以访问 Developer Tools 论坛,或者了解更多关于 2023 年 SIGGRAPH 上使用 Nsight 工具进行图形开发 的信息。