使用 Radeon™ 开发者面板 2.1 统一 Radeon™ GPU Profiler 和 Radeon™ Memory Visualizer

最初发布于:
Gordon Selley's avatar
Gordon Selley

Radeon™ Developer Panel 简介

Radeon™ Developer Panel (RDP) 是我们 GPU 工具策略的关键组成部分。RDP 提供了一个通信通道,用于向驱动程序发送请求并接收驱动程序的数据。

当 RDP 连接到 Radeon™ Adrenalin 驱动程序时,它会启用开发者模式,从而允许生成 Radeon™ GPU Profiler (RGP) 使用的事件计时数据,以及 Radeon™ Memory Visualizer (RMV) 使用的内存使用情况数据。

该面板可以连接到本地计算机上运行的 Radeon™ Adrenalin 驱动程序,也可以连接到远程计算机上运行的驱动程序。

图 1:显示了从本地计算机生成 RMV 和 RGP 数据的四个步骤

为了支持远程连接,需要在远程计算机上运行一个名为 Radeon™ Developer Service (RDS) 的小型可执行文件,以提供连接端点。

生成的 RDP 数据文件(配置文件和内存跟踪文件)会保存到磁盘,然后 RDP 充当文件浏览器,可以在 RMV 或 RGP 中打开它们。

图 3:显示了如何在客户端查看器工具(RMV 或 RGP)中打开配置文件和内存跟踪文件

Radeon™ Developer Panel 经过重新设计,提供了一个可扩展的用户界面,能够容纳新工具功能的可用性。

它提供两种操作模式:基本模式和高级模式。

  • 基本模式提供了一个简单易用且简化的用户体验,只需四个鼠标点击即可生成配置文件和内存数据。此模式可以满足您的大部分需求。
  • 高级模式允许按应用程序自定义您的工作流程,并将帮助处理多个可执行文件或具有更复杂应用程序启动模式(例如游戏启动器)的开发人员。

RDP 2.1 有哪些新功能?

在以前版本的面板中,Radeon™ Developer Panel (RDP) 版本 1.7 仅支持 Radeon™ GPU Profiler (RGP) 功能,而 RDP 版本 2.0 仅支持 Radeon™ Memory Visualizer (RMV)。此外,这两个面板具有不同的 UI 和工作流程,导致用户体验不佳。

好消息是,RDP 2.1 统一了早期面板中的 RMV 和 RGP 功能,并提供了统一的工作流程体验。此外,RDP 2.1 基于全新的开发者驱动程序代码构建,提供了更好的工具支持、稳定性和整体用户体验。

以下是 RDP 2.1 主要改进的摘要:

  1. 现在同时支持 RGP 性能分析和 RMV 内存跟踪。
  2. 可以在同一应用程序会话中生成 RGP 配置文件和 RMV 跟踪。
  3. 简化的指令跟踪。
  4. RMV 快照标记插入。
  5. 引入了可自定义和用户创建的工作流程。

有关 RDP 2.1 各方面的更多信息,请阅读完整的 RDP 帮助文档

让我们更详细地了解这些变化。

RDP 2.1 入门

连接面板与 RDP 2.0 保持不变,首次连接后,它将在启动时自动重新连接。

图 4:面板首次运行时(未连接)

连接到 Radeon™ 驱动程序后,面板会切换到选中的系统选项卡,等待自动检测 DirectX® 12、Vulkan® 或 OpenCL™ 应用程序的启动。

图 5:面板连接到开发者驱动程序,等待应用程序启动

检测到使用受支持 API 的应用程序启动后,面板会切换到应用程序窗格,您可以在其中看到正在分析的应用程序的名称以及可用的功能。

可执行文件名、图形 API 及其进程 ID 显示在左侧列中,右侧是每个功能的选项卡 -性能分析内存跟踪设备时钟

您可以在应用程序运行时切换选项卡,从而在同一会话中生成配置文件、内存跟踪并更改时钟速率。

图 6:应用程序选项卡的主要 UI 元素

应用程序性能分析

要生成 RGP 配置文件,请单击“捕获配置文件”按钮,就是这么简单!

生成的配置文件显示在“最近收集的配置文件”列表中。默认情况下,配置文件存储在用户的文档位置的“rgp_profiles”目录中。为每个唯一的应用程序名称创建一个子目录,用于存储来自该应用程序的配置文件。

完整的路径位置显示在“性能分析”窗格中。右键单击列表中的配置文件会打开一个弹出菜单,允许您轻松导航到配置文件的文件位置。

图 7:显示了用于其他文件操作的右键上下文菜单

更简单的指令跟踪

RDP 1.7 仅限于一次生成一个特定 PSO 的指令计时数据,并且工作流程需要多次配置文件捕获。借助 RDP 2.1,现在可以在单个配置文件(仅限于单个着色器引擎)中收集所有 PSO 的指令计时数据。

要使用此功能,请在捕获配置文件之前勾选“启用指令跟踪”选项。捕获配置文件后,它将包含详细的指令计时数据。

图 8:显示了已设置的“启用指令跟踪”复选框

应用程序内存跟踪

您可以在应用程序运行时切换工具选项卡,从而进行性能分析,切换到“内存跟踪”选项卡,并生成 RMV 内存跟踪。

这里我们可以看到一个实时 DirectX® 12 应用程序。进程 ID 显示在左侧。

要生成内存跟踪,请单击“转储跟踪”按钮或关闭您的应用程序。在应用程序关闭期间删除图形设备将触发当前内存跟踪数据的转储。

图 9:显示内存跟踪选项卡

请记住,内存跟踪在应用程序启动时开始,并在您单击“转储跟踪”按钮或应用程序关闭时结束。

您可以在应用程序运行时多次捕获 RGP 配置文件,但只能有一个 RMV 跟踪文件。

请注意,生成跟踪后,“转储跟踪”按钮将不再激活,并且在当前会话中无法创建另一个跟踪。

图 10:显示内存跟踪文件在跟踪完成后添加到文件列表中

RMV 快照标记插入

在应用程序运行时,可以使用“插入快照”功能将快照插入到内存跟踪中。

例如,在加载游戏关卡之前和之后添加快照可用于检测内容内存泄漏(例如,忘记从 GPU 内存中卸载内容)。只需在文本框中键入字符串,然后单击插入。

图 11:显示用户字符串“Snapshot 1”被添加到内存跟踪中

在 RMV 中加载内存跟踪时,快照将显示在“快照时间线”中。

图 12:显示了三个快照,它们是使用面板在应用程序运行时添加到内存跟踪中的

设备时钟

时钟控件包含在“设备时钟”工具选项卡中,使用它们需要您的目标应用程序正在运行。如果没有运行应用程序,则 UI 中不会显示这两个时钟模式。

激活时,时钟 UI 允许您在以下选项之间切换:

  • 默认时钟模式 - 按需波动。
  • 稳定时钟模式 - 固定在较低但稳定的时钟速率。

更改时钟模式会立即生效。

请注意,当捕获 RGP 配置文件时,默认模式和稳定模式都会被覆盖。在性能分析期间,GPU 会设置为以稳定的峰值时钟速率运行数帧。

图 13:显示了选择“默认”时钟模式的时钟 UI

引入工作流程

工作流程允许您控制会话期间哪些功能处于活动状态。此外,可以在工作流程中自定义每个工具的设置。

面板预装了三个基本工作流程:

  1. 默认 - 在同一会话中同时支持性能分析和内存跟踪。
  2. 性能分析 - 在会话中仅支持性能分析。
  3. 内存跟踪 - 在会话中仅支持内存跟踪。

系统选项卡中,“工作流程”下拉菜单允许您选择最适合您任务的工作流程。工作流程选择是固定的,下次启动 RDP 2.1 时将保留。

大多数简单的使用场景只需要使用三个基本工作流程选项之一。“工作流程”选择是全局的,并且将应用于您分析的任何应用程序。

图 14:显示随 RDP 2.1 附带的三个工作流程

为什么会有三个工作流程,难道默认工作流程不能满足所有需求吗?

性能分析和内存跟踪都会增加少量的处理开销,因此减少活动工具是可取的。如果您只想分析应用程序,最好只使用“性能分析”工作流程。

如果您有应用程序的多个版本(例如,一个针对渲染优化,一个针对 GPU 内存占用优化),您可能会发现自己在“性能分析”和“内存跟踪”之间切换全局工作流程。幸运的是,RDP 2.1 为此提供了解决方案。

什么是高级模式

RDP 2.1 默认处于高级模式关闭状态。我们称之为基本模式,选定的工作流程将应用于所有正在分析的应用程序。

开启高级模式后,您可以:

1)     为不同的可执行文件分配特定的工作流程。例如,为优化渲染的可执行文件分配性能分析工作流程,为优化 GPU 内存占用的可执行文件分配内存跟踪工作流程。

2)     指定应用程序名称和所需的 API(DX12®、Vulkan® 或 OpenCL™)作为进程过滤器。如果您有一个可以使用任一图形 API 进行渲染的可执行文件,但只想在它使用其中一个(例如 Vulkan®)时进行分析,这将非常有用。当可执行文件使用 DX12® 运行时,如果将 API 指定为 Vulkan®,则会忽略它。

3)     自定义现有工作流程或创建自己的新工作流程!

图 15:显示了三个不同的应用程序,每个应用程序使用不同的工作流程

高级模式开启时,每个可执行文件都可以分配一个不同的工作流程。这样就避免了在切换不同应用程序时需要记住切换全局模式。

高级模式的另一项功能是,面板只会处理可执行文件名列表中的应用程序,而忽略其他所有应用程序。

相比之下,在基本模式下,面板将与使用受支持 API 的任何应用程序一起工作。基本模式的这一方面在使用启动器启动应用程序时可能会遇到困难,因为启动器本身会使用受支持的 API。在这种情况下,面板会首先检测并连接到启动器可执行文件,而忽略您想分析的应用程序。

要永久阻止某个应用程序(例如启动器)被面板使用,您可以将可执行文件名添加到阻止的应用程序列表中。面板的默认阻止应用程序列表已经包含了许多已知的会抢占面板焦点的可执行文件。或者,您可以使用高级模式来排除除指定可执行文件之外的所有应用程序。

自定义工作流程

为什么我要创建自己的工作流程?

在某些情况下,工作流程可能非常强大。例如,让我们使用一个 OpenCL™ 应用程序并为其自定义工作流程。

在上图(图 15)中,OpenCL™ 应用程序MatrixMulDispatchCounter正在使用默认工作流程。

要编辑工作流程:

  1. 转到“系统”/“我的工作流程”UI,如下图所示。默认工作流程将自动选中(灰色高亮显示)。
  2. 在下面的“工作流程设置”窗格中,单击 OpenCL 选项卡以显示特定于该 API 的设置。

默认设置显示“启用自动捕获”已禁用。这意味着用户需要单击“捕获配置文件”按钮来生成配置文件。配置文件还将运行直到在用户单击“性能分析”按钮后计算出 50 个分派。

图 16:显示了工作流程编辑器,用于更改“默认”工作流程中的性能分析器设置

然而,可以合理地假设用户可能有一个应用程序只需要自动捕获单个分派。在这种情况下,我们可以编辑此工作流程的设置,或者另创建一个专门用于此应用程序的新工作流程。

在 UI 顶部有一个文本输入框,您可以在其中输入新工作流程的名称,并有一个“添加”按钮来创建它。

此处的示例(图 17)显示了一个名为“SingleDispatch_OCL”的新工作流程,其中启用了性能分析器,而其他工具被禁用。OpenCL™ 设置已设置为使用自动捕获来分析第一个分派。

图 17:在工作流程编辑器中创建了一个新工作流程

切换到“我的应用程序”菜单(开启高级模式),我们现在可以将此新工作流程分配给MatrixMulDispatchCounter可执行文件。

现在,应用程序一启动,面板就会自动捕获第一个分派的配置文件。

图 18:显示了用户创建的工作流程“SingleDispatch_OCL”分配给了 MatrixMulDispatchCounter 可执行文件

在此处的截图中(图 19),我们可以看到新配置文件的大小比之前使用 50 个分派捕获的配置文件要小,这反映了它仅包含单个分派的数据。

图 19:捕获了两个配置文件,每个配置文件使用不同的工作流程(默认和 SingleDispatch_OCL)

如下图所示,我们可以通过在 RGP 中打开这两个配置文件来确认更改:(图 20 和图 21)

图 20:显示了手动启动的 50 个分派配置文件

图 21:显示了启动时自动触发的单个分派配置文件

随着我们未来在 Radeon™ Developer Panel 中添加更多功能,工作流程将变得更加有用。

本次就到这里!

我们希望您觉得 RDP 2.1 对您的开发工作有所帮助,并且如果您认为可以改进的地方,请随时向我们提供反馈。请在此处 提供 RDP 反馈

再次强调,您可以在此处找到 RDP 2.1 的帮助文档:

Radeon Developer Panel 文档
Gordon Selley's avatar

Gordon Selley

Gordon 是 AMD GPU Developer Tools 团队的高级经理。在加入 AMD 之前,他曾在游戏、电影特效和飞行模拟行业工作。

相关新闻和技术文章

相关视频

© . This site is unofficial and not affiliated with AMD.