Last month at GDC 2023, we introduced some additional features in Radeon™ GPU Profiler (RGP). A pre-recorded version of the full presentation is available online.
RGP 1.15, which includes these features (and others), is now available for download!
At the 12:32 mark in the above video, we introduced the enhanced ISA view that has been integrated into RGP’s Pipeline state and Instruction timing views. Since GDC, things have continued to evolve with this view, and we are eager to have you try out the current version of this user interface.
Here is a look at the enhanced ISA view in the Instruction timing pane:
And here it is in the Pipeline state pane:
In addition to providing a common look and feel for the ISA views in the Pipeline state and Instruction timing views, we have also implemented several enhancements over previous versions.
First, individual blocks within the disassembled ISA can now be collapsed and expanded:
To expand or collapse a single block, click on the arrow on the left side of the instruction line. To expand or collapse all blocks in a shader at once, use the Ctrl + Right or Ctrl + Left shortcut, respectively.
We have also implemented a feature that is available in many text editors: the automatic highlighting of identical tokens. With this feature, you can simply click on a text token in the ISA view and it will automatically highlight other instances of the same token. This works for instruction opcodes, registers, and constants.
In the below screenshot the user has clicked on the s0 scalar register. Note how the view has highlighted all instances of that register. Note, too, that in the case of registers, any register range that includes the selected register will also be highlighted. This can be seen in the lines where s[0:1] is also highlighted.
Two-way navigation within a shader between branch instructions and the targets of those branches is now also supported. When the target of a branch is clicked, the ISA view will be automatically scrolled to show the block identified by that label. Similarly, when a block label is clicked, the ISA view will be automatically scrolled to show the branch instruction that branched to the block. In cases where more than one branch instruction references the same block, clicking the block label will display a menu allowing the user to select which branch instruction to show. This two-way navigation also maintains a history of branches and block labels that the user has navigated to. There are navigation history controls available to quickly traverse through the navigation history (or to jump to a specific item in the history). In the screenshot below, you can see that the branch instruction targets and the block labels are displayed as hyperlinks as an indicator that they can be clicked on to navigate. You can also see the navigation history controls in the upper right corner above the ISA display (these are the left and right arrows with the menu in the middle).
The enhanced ISA views also allow for improved user customization. You can choose which columns are displayed using the Viewing Options dropdown. Columns can also be reordered by dragging column headers to a new location.
Although the largest feature addition in this release is the enhanced ISA view, there are also some other smaller improvements that are worth mentioning.
RGP will now display the proper name of any Mesh Shader events. In previous versions, these events were labeled as Unknown. Below are two screenshots of RGP’s event lists showing the DispatchMesh (DirectX®12) and vkCmdDrawMeshTasksEXT (Vulkan®) event names.
One of the new hardware features on AMD RDNA™ 3 architecture-based Radeon™ RX 7000 Series GPUs is the support for wave matrix multiply accumulate (or WMMA) instructions. These instructions are useful for certain matrix math operations that are used in machine learning or artificial intelligence workloads. In this version of RGP, the Instruction timing feature set supports WMMA instructions. In addition to showing the Hit count, Instruction cost, and Latency for these instructions, the Details panel contains an extra row in the Instruction Hit Count table to report the total number of WMMA instructions executed by the current shader.
More information on WMMA instructions can be found in this excellent GPUOpen blog post.
We have added support for showing whether or not Conservative Rasterization is enabled for any given Draw event. In the Pipeline state pane, this appears on the RS stage (for a DirectX®12 profile) and the Rasterizer stage (for a Vulkan® profile), indicating which conservative rasterization mode is used for the selected Draw event. Here is what it looks like for a DirectX®12 profile (highlighted by the green outline):
In addition to the features outlined above, there have been plenty of bug fixes and other smaller enhancements in RGP 1.15, including:
Support for additional RDNA™ 3 GPUs
Improved performance in the System activity timeline in the Frame summary pane when opening large profiles (especially large HIP and OpenCL™ profiles)
Improved keyboard selection when navigating in the tree view in the Event timing and Pipeline state panes.
Please visit the RGP product page on GPUOpen and download the latest version to check it out.