AMD Radeon™ Developer Panel
RDP 提供了与 Radeon™ Adrenalin 驱动程序的通信通道。它生成 Radeon™ GPU Profiler (RGP) 使用的事件计时数据,以及 Radeon™ Memory Visualizer (RMV) 使用的内存使用情况数据。
在 2024 年 GDC 上,我们展示了 Radeon™ Developer Tool Suite 的一些新功能。您可以通过此处的预录制版本观看演示来了解我们展示的内容。
我们很自豪地在此发布 Radeon™ GPU Profiler (RGP) 2.1 版本,其中包含了一些我们之前提到的新功能以及其他一些改进。
RGP 用户向我们提出的一项请求是,希望能够利用 RGA 提供的一些分析功能。从 RGP 2.1 开始,我们现在提供了一种简单的方法,可以快速将在 RGP 数据集中包含的任何着色器直接在 RGA 中打开。这项新功能利用了 RGA 2.9 版本去年添加的二进制分析模式。此模式允许 RGA GUI 应用程序加载任何预编译的 AMD GPU 代码对象二进制文件,显示代码对象中包含的任何着色器的相应 ISA,并分析这些着色器。
使用此功能最简单的方法是将任何包含已编译代码对象二进制文件的文件拖放到 RGA GUI 应用程序上。有关此功能的更多详细信息,请参阅上面链接的 GDC 2024 视频。
RGP 数据集已包含应用程序已被分析部分使用的所有管线、着色器或内核的必要代码对象二进制文件。从 2.1 版本开始,RGP 现在支持从加载的配置文件数据集中提取这些代码对象,并将它们加载到 RGA 的二进制分析模式中。借助这项新功能,RGP 用户现在可以充分利用 RGA 中提供的一些高级分析功能,例如 VGPR 压力分析功能。
您可以从多种方式中受益于 RGP 的这项新功能。在 RGP 的任何地方,当您选择一个事件或管线时,右键单击该事件或管线时出现的上下文菜单中将包含一个菜单项,其标题为 **在 Radeon GPU Analyzer 中分析管线**。
示例如下所示。
在这里,我们可以在左侧的 **事件计时** 和 **管线状态** 窗格中出现的树状视图中看到它。
在这里,它出现在 **Wavefront Occupancy** 窗格的事件时间轴行中。
在这里,它出现在 **Instruction Timing** 窗格中出现的新菜单控件中。
此菜单项在 RGP 的 **Overview** 部分的以下位置也可用:
选择此菜单项后,RGP 将提取指定的管线二进制文件,并将其传递给新启动的 RGA 实例。然后,RGA 将加载、反汇编并分析该二进制文件。在这里,我们可以看到 RGA 加载了从 RGP 数据集中提取的二进制代码对象。
如果选定的事件或管线关联了多个二进制代码对象(例如,间接光线追踪管线),RGP 将显示一个对话框,允许您选择一个或多个二进制文件在 RGA 中进行分析。该对话框如下所示。
如果您从该对话框中选择多个二进制文件,将为每个二进制文件启动一个单独的 RGA 实例。
RGP 中提供了一些新设置,允许用户配置此新互操作性的行为。
您可以告知 RGP 应启动哪个 RGA 实例。默认情况下,它将使用与 RGP 运行的 Radeon™ Developer Tool Suite 包相同的版本。您还可以指定提取的管线要存储在磁盘上的哪个位置。默认情况下,这是一个名为“rgp_exported_pipeline_binaries”的文件夹,位于 Radeon™ Developer Panel 在捕获配置文件时使用的“rgp_profiles”文件夹旁边。您还可以配置 RGP 是否应提示您覆盖磁盘上任何现有的管线二进制文件。
RGP 在显示其信息时大量使用颜色,并提供多种不同的着色模式,使呈现的数据更易于理解。在 RGP 2.1 中,我们添加了两种额外的“按颜色着色”模式,使理解配置文件数据更加容易。
第一个附加模式是“按限制因素着色”。选择此模式后,事件和/或 Wavefronts 可以着色以指示哪个因素(如果有)限制了占用率。此新模式将突出显示理论占用率受 VGPR 使用量、LDS 使用量或线程组维度限制的事件。下面是一张截图,其中 Wavefront 时间轴和事件时间轴的着色模式均设置为按限制因素着色。您可以看到许多由 VGPR 使用量(蓝色)限制的事件,而一个事件受 LDS 使用量(绿色)限制。
第二个附加模式是“按上下文切换着色”。选择此模式后,将突出显示触发了上下文切换的事件,从而更容易看到游戏如何使用图形状态导致硬件使用一组新的上下文寄存器。
新的“按颜色着色”模式均支持 **Wavefront Occupancy** 和 **Event Timing** 窗格。这些新模式使用的颜色也可以在 **Settings** 窗格的 **Themes and Colors** 页面中进行自定义。
RGP 2.1 中的另一个增强是可视化 RGP 的 **Instruction Timing** 窗格中的“预发布停顿”。对于显示的每个指令,延迟值现在可以细分,以指示在当前指令发布之前发生的总延迟的哪个部分。这在延迟条的红色部分表示为阴影图案,如下所示。
此外,当您将鼠标光标悬停在延迟条上时出现的工具提示现在将包含一行附加信息,告诉您有多少总延迟被确定为预发布停顿。
在上面截图的工具提示中,显示的指令的平均延迟为 909 个时钟周期。其中 720 个时钟周期被其他 Wavefront 插槽上的 VALU 工作隐藏。预发布停顿为 907 个时钟周期,这意味着 2 个时钟周期(909 - 907)不归因于预发布停顿,而 907 个总预发布停顿时钟周期中的 187 个未被其他 Wavefront 插槽上的 VALU 工作隐藏。
我们已继续基于RGP 2.0 中添加的用户自定义功能进行开发。在 RGP 2.1 中,您现在还可以自定义 **Wavefront Occupancy** 窗格中每一行的 [高度]。只需将鼠标悬停在行之间的分割线上,您就可以调整上方行的大小,使其变高或变短。这允许您设置视图并为每行分配足够的屏幕空间以满足您的需求。下面是一张显示调整了部分行大小后的 Wavefront Occupancy 窗格的截图。
此版本还包含大量的错误修复和其他小型增强。例如,当选择一个事件时,在右手详细信息面板中显示的着色器表现在将显示所有着色器阶段的 LDS 使用量(如果适用)。以前,LDS 使用量仅针对计算着色器阶段显示。
请前往 gpuopen.com 上的产品页面并下载最新版本进行体验。对我们有反馈意见,或者想请求增强功能或新功能?您可以使用 GitHub 上的 Issues 列表。