快速入门
Radeon GPU Analyzer 快速入门
安装和运行 RGA
可在 RGA GitHub releases 页面 下载该工具。
- Windows:使用 .msi 安装程序或 .zip 压缩包。对于 Vulkan®,安装程序还将安装 RGA Layer,因此是推荐的选项。
- Linux:使用 .tgz 压缩包。
要运行应用程序,请运行 RadeonGPUAnalyzerGUI 可执行文件。
启动对话框
图形用户界面已扩展,支持一种以上的 API,因此在启动时会提示您选择默认的 API。您可以勾选“不再询问”复选框,以始终以所需的模式启动应用程序。

Vulkan® 模式
主页
在启动时选择 Vulkan® 作为默认 API。然后,在主页上,我们有两个起始选项:
- 创建图形管线
- 创建计算管线
创建项目

让我们从创建一个图形管线开始。
接下来会提示您可选地重命名您的项目。

创建项目后,您可以使用此菜单添加着色器。

添加着色器文件时,您有两个选项:
- 创建一个由 RGA 自动生成的模板 GLSL 文件。如果您有兴趣进行快速原型设计,并希望有一个可以编译的基线,这是一个不错的选择。
- 添加现有的 SPIR-V 二进制文件或 GLSL 源文件。
让我们创建模板顶点和片段着色器。

创建/添加文件后,您可以在编辑器中编辑源代码。这不仅适用于 GLSL 文本代码。也可以在 RGA 中加载 SPIR-V 二进制文件。如果您这样做,该二进制文件将被反汇编,您将能够以文本代码的形式进行编辑。编译后,RGA 会为您重新汇编 SPIR-V 二进制文件。

在编辑了我们的着色器源代码、SPIR-V 二进制文件或两者的混合后,让我们确保管线状态与我们的着色器匹配。单击“管线状态”将打开 RGA 的管线状态编辑器。

该编辑器提供了 Vulkan® 管线状态的树形表示,允许用户编辑图形或计算管线的创建参数。在此视图中,可以根据项目的管线类型配置不同的部分。
- 图形管线
- VkGraphicsPipelineCreateInfo
- VkPipelineLayoutCreateInfo
- VkDescriptorSetLayoutCreateInfo 数组
- VkRenderPassCreateInfo
- 计算管线
- VkComputePipelineCreateInfo
- VkPipelineLayoutCreateInfo
- VkDescriptorSetLayoutCreateInfo 数组
此视图的一个优点是它可以让您直观地看到 Vulkan® 管线状态中 create info 结构的关系,这一点有时仅凭查看平面的 Vulkan® 规范很难做到。
您可以使用 Ctrl+F 搜索状态。

这将滚动到相关出现的位置。

在搜索时也可以使用筛选选项。

启用此选项进行搜索将仅显示树的相关部分。

另一个有用的选项是加载管线状态文件。RGA 将 Vulkan® 管线状态存储在 JSON 文件中。
- 对于图形管线,文件为 .gpso,其中包含 VkGraphicsPipelineCreateInfo 的表示。
- 对于计算管线,文件为 .cpso,其中包含 VkComputePipelineCreateInfo 的表示。
这些文件可以使用 RGA Layer 在运行时从您的 Vulkan® 应用中序列化出来,RGA Layer 是 RGA 附带的一个 Beta 功能。有关此功能的更多信息,请参阅 Vulkan® 帮助手册部分。
当您使用 RGA 构建项目时,该工具会启动一个 Vulkan® 应用,该应用接受您的状态的 JSON 表示(基于 UI 中的值)。
生成反汇编
在管线状态与我们的着色器匹配后,让我们构建项目。

编译器输出可以在底部的“构建输出”窗格中查看。

如果构建成功,反汇编和硬件资源使用信息将显示在右侧。

好了,我们使用 RGA 构建了第一个 Vulkan® 管线。
有关反汇编视图中某些功能的更多信息,请参阅 反汇编视图 部分。
OpenCL™ 离线模式
主页
创建项目
RGA 项目是一个可以包含任意数量的 OpenCL™ 源文件(.cl)以及一组构建设置的容器。当您构建项目时,OpenCL™ 源文件将被编译并链接成单个代码对象二进制文件。
当您在主页上添加或创建文件时,RGA 将自动为您创建项目。
要添加现有的 .cl 源文件,请使用 Ctrl+O 或在“开始”部分下单击“打开现有的 .cl 文件”。

您也可以通过单击“文件”->“打开现有的 c.l 文件”来实现。

类似地,您可以通过创建空的 .cl 文件来创建项目。使用 Ctrl+N 快捷键或单击“创建新的 .cl 文件”。
接下来会提示您可选地重命名您的项目。

RGA 将使用 yymmdd-hhmmss 日期时间字符串作为项目的默认名称。勾选“始终使用自动生成的项目名称”复选框,以指示 RGA 在不提示重命名的情况下始终使用默认名称。
生成反汇编
要构建您的项目并生成反汇编,请使用 Ctrl+Shift+B 快捷键。或者,您可以使用“构建”->“构建项目”菜单项。

当触发构建时,将调用 rga 命令行工具。“构建输出”窗口底部将显示 RGA 命令行工具的调用命令及其输出。
如果构建成功,左侧文件菜单中的每个条目下方将显示每个文件中的内核列表。
使用该列表控制哪个内核处于焦点(以黄色突出显示)。

相关内核的反汇编将显示在右侧的反汇编视图中。

- 高亮显示的行与左侧源代码视图中的当前行相关联。
- 可以通过使用“查看选项”下拉菜单来显示或隐藏列。
- 如果定位了多个 GPU,请使用左上角的下拉菜单切换设备。
- 资源使用行显示了由所呈现代码消耗的 GPU 资源。
反汇编视图还显示了着色器指令中的 VGPR 压力。“VGPR 压力”列的标题显示了着色器使用的 VGPR 总数以及为着色器分配的总 VGPR 数。此列的单元格可视化了每个指令的 VGPR 分配和利用率。由于 VGPR 是以块为单位分配的,因此减少少量 VGPR 可以节省整个块的分配。将鼠标悬停在任何 VGPR 压力单元格上都会显示一个提示,该提示考虑了特定着色器的 VGPR 分配块大小,并计算出在该程序点需要释放多少 VGPR 才能节省一个 VGPR 块。请注意,VGPR 分配块大小取决于目标 GPU 以及着色器的某些特性,例如为其编译的波形大小(如果适用)。
如果由于使用 GPU 资源而导致性能问题,RGA 将显示一个警告图标并突出显示相关资源。
![]()
可能的危险包括:
VGPR 溢出
SGPR 溢出
LDS 使用量超过推荐限制(基于目标 GPU 的硬件特性)
Scratch 内存使用量非零
代码大小大于指令缓存
有关反汇编视图中某些功能的更多信息,请参阅 反汇编视图 部分。
二进制分析模式
主页
加载代码对象二进制文件
在二进制分析模式下,RGA 项目是一个包含单个代码对象二进制文件的容器。
当您在主页上加载代码对象二进制文件时,RGA 将自动为您创建项目。
要加载现有的代码对象二进制文件,请使用 Ctrl+O 或在“开始”部分下单击“加载代码对象二进制文件”。

您也可以通过单击“文件”->“加载代码对象二进制文件”来实现。

RGA 将使用 yymmdd-hhmmss 日期时间字符串作为项目的默认名称。
反汇编视图
当加载代码对象时,将调用 rga 命令行工具。“构建输出”窗口底部将显示 RGA 命令行工具的调用命令及其输出。
如果二进制分析成功,左侧文件菜单中的每个代码对象二进制文件的内核或管线阶段列表将显示在每个条目下方。
使用该列表控制哪个内核处于焦点(以黄色突出显示)。

相关内核的反汇编将显示在右侧的反汇编视图中。

有关反汇编视图中某些功能的更多信息,请参阅 反汇编视图 部分。