Giter Club home page Giter Club logo

radeon_gpu_profiler's Introduction

Radeon™ GPU Profiler

The Radeon GPU Profiler (RGP) is a ground-breaking low-level optimization tool from AMD. It provides detailed timing information on Radeon Graphics using custom, built-in, hardware thread-tracing, allowing the developer deep inspection of GPU workloads.

This unique tool generates easy to understand visualizations of how your DirectX®12 and Vulkan® games interact with the GPU at the hardware level. Profiling a game is both a quick, and simple process using the Radeon Developer Panel and the public display driver.

In order to use the latest features of RGP, it is strongly recommended that users update to the latest driver.

Getting Started

  1. Install the latest AMD Video/display driver.
  2. Unzip/Untar the download file. The directory contains the following:
    • Radeon Developer Service (RDS)
    • RadeonDeveloperServiceCLI (RDS headless)
    • Radeon Developer Panel (RDP)
    • Radeon GPU Profiler (RGP)
  3. To capture a profile from a game, run the Radeon Developer Panel and follow the instructions in the Help. Help can be found in the following locations:

Graphics APIs, RDNA™ hardware, and operating systems

Supported APIs

  • DirectX12
  • Vulkan

Supported RDNA hardware

  • AMD Radeon RX 7000 series
  • AMD Radeon RX 6000 series
  • AMD Radeon RX 5000 series
  • AMD Ryzen™ Processors with Radeon Graphics

Supported Operating Systems

  • Windows® 10
  • Windows® 11
  • Ubuntu 22.04 LTS (Vulkan only)

Compute APIs, RDNA hardware, and operating systems

Supported APIs

  • OpenCL™
  • HIP

Supported RDNA hardware

  • AMD Radeon RX 7000 series
  • AMD Radeon RX 6000 series
  • AMD Radeon RX 5000 series
  • AMD Ryzen Processors with Radeon Graphics

Supported Operating Systems

  • Windows 10
  • Windows 11

radeon_gpu_profiler's People

Contributors

ahosier avatar cal3d avatar chesik-amd avatar dependabot[bot] avatar gselley avatar jbigalet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

radeon_gpu_profiler's Issues

Profiler instantly shuts down without error message on certain compute shader traces

While testing the new profiler with my some of my examples I noticed that certain compute shader traces will cause the profiler to instantly close itself upon loading without any error or message whatsoever.

While the R9 390X isn't mentioned in the readme, other examples (including some compute ones) work fine, so I guess this may be caused by a certain combination triggered by those examples.

Here are a few traces that instantly crash/close the profiler for me:

computecloth-20170727-213058.zip
computenbody-20170727-213447.zip

Connection dilemma

I have difficulty with launching RadeonDeveloperPanel executable from linux ssh terminal.
It complains it can not access x window
./RadeonDeveloperPanel
qt.qpa.screen: QXcbConnection: Could not connect to display
Could not connect to any X display.

But connection settings to same ssh session already setup X-11 forwarding enabled. Why?

I also tried remotely from invoking RadeonDeveloperPanel from client Windows machine and establish connection to ssh connected machine through its IP.
But when remotely connecting this way, when I try select the app to dump the rgp trace, it allows me to browse through files on the client machine not the ssh machine in which the ./RadeonDeveloperServiceCli is running and also it is the same machine in which I am going to run the target machine.
How can browse its folder and files from remotely connected client?

Incorrectly reported occupancy on GCN hardware

I recently profiled Devil May Cry 5 on an RX 480 and an RX 6800 on 21.3.1 and noticed that the occupancy is most likely reported incorrectly on the RX 480. Specifically the occupancy values seem to be reported as 1/4 of the true value:

Scene:
grafik

Profile on RX 480:
grafik

Profile on RX 6800:
grafik

I have noticed this in several settings and also on a Vega 56, so this is not specific to DMC5 or Polaris.

Dark Mode

Are there any plans to implement a dark mode for RGP? It already has quite an amount of theme settings for the profiler itself just not for the bright background. Maybe I am missing something though...

Display shader names in event details?

It would be useful if it was possible to see the names of shaders (set via vkDebugMarkerSetObjectNameEXT) used for a given draw/dispatch somewhere, for instance in the pipeline state view.

This would make it much easier to figure out which shaders are in use for a given event - currently I see no easy way to do this (unless I'm missing something?) outside of adding debug markers before individual events.

CreateD3D12 Error on profiling both in RGP and in using RGP with RenderDoc

Hello,

I have been receiving a "CreateD3DDevice" error when using RGP so I'm not able to profile using it. Same error is appearing when I try to capture through RenderDoc and use the RGP extension. Normal RenderDoc captures work great. My laptop has an integrated Intel UHD 630, a dedicated Nvidia GTX 1060 Max-Q and I'm using an AMD Radeon RX 560 using an eGPU Sonnet box (AMD XConnect).

Following is the log from RenderDoc whenever I perform a capture after enabling the RGP extension :

RDOC 004260: [22:16:17] core.cpp( 310) - Log - RenderDoc v1.2 64-bit Release (204724bebe2484ee2d14a572d9f1074dd3f933a9) loaded in replay application
RDOC 004260: [22:16:17] crash_handler.h( 112) - Log - Creating crash-handling server
QTRD 004260: [22:16:18] qrenderdoc.cpp( 88) - Log - QRenderDoc initialising.
RDOC 004260: [22:16:19] rdcfile.cpp( 240) - Log - Opening RDCFile C:\Users\parik\Desktop\PVGIRenderDocCapture.rdc
RDOC 004260: [22:16:19] rdcfile.cpp( 240) - Log - Opening RDCFile C:\Users\parik\Desktop\PVGIRenderDocCapture.rdc
RDOC 004260: [22:16:19] amd_rgp.cpp( 81) - Log - Attempting to enable AMD RGP Interop
RDOC 004260: [22:16:19] amd_rgp.cpp( 135) - Log - AMD RGP Interop was successfully enabled
RDOC 004260: [22:16:19] d3d12_replay.cpp(3658) - Error - Couldn't create a d3d12 device :(.
RDOC 004260: [22:16:20] replay_controller.cpp(1927) - Error - Couldn't create a replay device :(.
RDOC 004260: [22:16:20] replay_controller.cpp( 188) - Log - Shutting down replay renderer

VK_EXT_debug_utils support.

Is there support for debug markers created with VK_EXT_debug_utils extension? If no, it would be great to have this functionality. It is recommended extension for debug reporting/markers and probably more and more developers are starting to use it.

Unable to capture profiler data on ubuntu 18.04 + Wx5100

System: Ubuntu 18.04
GPU: wx5100
AMDPro driver : amdgpu-pro-18.20-621984

I can't capture any data with my own app.
For testing, I try capture the data for /usr/bin/glxgears. This also failed.

Any suggestion on how to debug this issue?

--- Here's the connection log ---
[RDP] Loaded RDP settings file.
[RDP] Attempting to start Radeon Developer Service locally.
[RDP] Launching local RDS.
[RDP] Established connection to RDS within timeout.
[RDP] Connected successfully

Unable to connect

When I try to connect to localhost 27300, I get Operating in Headless mode and it fails to connect.

[RDP] Loaded RDP settings file.
[RDP] Attempting to start Radeon Developer Service locally.
[RDP] Launching local RDS.
[RDS] Failed to connect RDP to RDS. Connection timed out.

Ubuntu 16.04.2 x64 and 480rx with 17.30

capture from app start

There should be an option to capture an RGP profile from app start, or from a particular frame. That way you can consistently run the same frame, eg to optimize an API trace or benchmark.

How to capture specific frame with frame number

Looks like while running in full screen mode the only way to capture is with hot key (ctrl+shift+c). The problem with hot key is that it is very difficult to pinpoint on the frame of interest. Is there a way to pass the frame index to the profiler so that users don't have to rely on hot key to capture the specific frame?

ISA not displaying in 1.6 UI

I was just poking around the new 1.6 client, and realized that I wasn't able to see the ISA that was captured as part of the RGP trace. If I open the same trace inside the 1.5 client, I can see the ISA just fine.

I can't share the traces here, but happy to share some artifacts offline.

AMD APU + AMD GPU combinations supported?

I am looking at some laptop configurations with AMD APU (either the older Bristol Ridge or the newer Raven Ridge) with a discrete RX 500 series GPUs. Are these combinations supported? Will I able to use the Radeon GPU profiler to profile the discrete GPU?

question about ray tracing profiling .

I had try the GPU Profiler 1.9 with 6800XT on some DXR program and I found some of them can view the detail of RA pipeline and some can not show as RT workload(in 3dmark dxr feature ,RT workload is include in CS workload, is it because the inline RT?).

Can't capture OpenCL with AMD Radeon VII on Ubuntu 18.04.1

Hello,

I'm using the Radeon GPU Profiler on Ubuntu 18.04.1 with the new AMD Radeon Vega VII card but can't use the capturing functionality.
I'm using the 18.50 drivers from the release day (February 7th, 2019)
I'm trying to profile OpenCL application but when I run the applications I can't click 'capture' in the 'Profiling section.

Is the Radeon VII even supported with OpenCL applications?
I'm running the GPU Profiler version 1.4.0.16

Thanks

RGP source code

Are there plans to post RGP source code here on GPUOpen-Tools? I only see README / docs.

Ative applications doesn't show anything on Windows 10

Windows 10 Build 1809 here, with AMD Radeon RX580 and 19.4.1 Drivers.

Opened Radeon Developer Panel 1.4.1.34, configured target application (tried multiple OpenCL applications) but none show on Active applications panel. Would be cool if we could just input process id.

Incorrect primitive count

Hi,

The primitive count, index count (Input Assembler tab) and Input primitives (Event timing tab) are computed from only the last draw of vkCmdDrawIndexedIndirect commands.

As a side effect the vertices/primitive stats will occasionally show something a few orders of magnitudes larger than 3 for triangles. That doesn't seem right to me. ;)

This tools is looking really good so far!

Radeon GPU Profiler crashing every Vulkan application, once the profiling is enabled

Configuration:

  • Windows 7 x64
  • Radeon RX 470
  • Adrenalin 19.12.2 drivers
  • RGP 1.7

I've checked with vkcube.exe, a host of Sascha Willems' Vulkan samples, and Wolfenstein II.
What's interesting is the behavior of the apps is the same exact as I've observed when my drivers were broken.

  • Bloom sample
    sample bloom no profile
    sample bloom profile
[RDP] Received client connected from unknown client with id 2667.
[RDP] Received client halted from unknown client with id 2667.
[RDP] DeveloperPanelModel::AddClientInfo() - Processing halted client with id 2667: bloom.exe:5188 - AMD Vulkan Driver
[RDP] bloom.exe with clientId 2667 connected to driver control client in driver state HaltedOnDeviceInit
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'bloom.exe' (processId 5188, clientId 2667) in the HaltedOnDeviceInit driver state.
[RDP] Found 0 settings.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is HaltedOnDeviceInit for process 'bloom.exe', ProcessId = 5188
[RDP] Advance to next driver state.  Current driver state is HaltedOnDeviceInit for process 'bloom.exe', ProcessId = 5188
[RDP] Step driver for process 'bloom.exe', ProcessId = 5188
[RDP] DeveloperPanelModel::NextDriverState() - Driver has changed from HaltedOnDeviceInit to Unknown state for process 'bloom.exe', ProcessId = 5188, clientId = 2667.
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'bloom.exe' (processId 5188, clientId 2667) in the Unknown driver state.
[RDP] Found 0 settings.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is Unknown for process 'bloom.exe', ProcessId = 5188
[RDP] Advance to next driver state.  Current driver state is Unknown for process 'bloom.exe', ProcessId = 5188
[RDP] Driver has been initialized within bloom.exe process. Attempting to retrieve device clock frequencies.
[RDP] Successfully queried maximum device clocks.
[RDP] Successfully queried device clock frequencies for Normal mode.
[RDP] Successfully queried device clock frequencies for Stable mode.
[RDP] Successfully collected device clock frequencies.
[RDP] Applying user-specified clock mode.
[RDP] Set clock mode to Normal.
[RDP] Resumed execution of process 'bloom.exe', ProcessId = 5188.
[RDP] DeveloperPanelModel::NextDriverState() - Driver has changed from Unknown to Running state for process 'bloom.exe', ProcessId = 5188, clientId = 2667.
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'bloom.exe' (processId 5188, clientId 2667) in the Running driver state.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is Running for process 'bloom.exe', ProcessId = 5188
[RDP] Client with Id 2667 has disconnected.
[RDP] Received client connected from unknown client with id 3252.
[RDP] Received client halted from unknown client with id 3252.
[RDP] DeveloperPanelModel::AddClientInfo() - Processing halted client with id 3252: bloom.exe:3332 - AMD Vulkan Driver
[RDP] bloom.exe with clientId 3252 connected to driver control client in driver state HaltedOnDeviceInit
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'bloom.exe' (processId 3332, clientId 3252) in the HaltedOnDeviceInit driver state.
[RDP] Found 0 settings.
[RDP] EnableProfiling() for clientId 3252.
[RDP] Profile Settings: start = 0, end = 0, mode = 0, PSO = 0x0, flags = 0x0
[RDP] UpdateTraceParameters successful
[RDP] Enabled profiling for target executable 'bloom.exe', ProcessId = 3332.
[RDP] Can enable profiling for client ID 3252
[RDP] Set profiling flag for ProcessId = 3332 (client ID 3252) to true.
[RDP] Capture profile button is enabled because the target application is profilable and there is no profile in progress.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is HaltedOnDeviceInit for process 'bloom.exe', ProcessId = 3332
[RDP] Advance to next driver state.  Current driver state is HaltedOnDeviceInit for process 'bloom.exe', ProcessId = 3332
[RDP] Step driver for process 'bloom.exe', ProcessId = 3332
[RDP] DeveloperPanelModel::NextDriverState() - Query Driver status failed (driver control client likely disconnected)
[RDP] Client with Id 3252 has disconnected.
[RDP] Capture profile button has been disabled because the application is not profilable.
  • VkCube
    vkcube no profile
    vkcube profile
[RDP] Received client connected from unknown client with id 247.
[RDP] Received client halted from unknown client with id 247.
[RDP] DeveloperPanelModel::AddClientInfo() - Processing halted client with id 247: vkcube.exe:8548 - AMD Vulkan Driver
[RDP] vkcube.exe with clientId 247 connected to driver control client in driver state HaltedOnDeviceInit
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'vkcube.exe' (processId 8548, clientId 247) in the HaltedOnDeviceInit driver state.
[RDP] Found 0 settings.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is HaltedOnDeviceInit for process 'vkcube.exe', ProcessId = 8548
[RDP] Advance to next driver state.  Current driver state is HaltedOnDeviceInit for process 'vkcube.exe', ProcessId = 8548
[RDP] Step driver for process 'vkcube.exe', ProcessId = 8548
[RDP] DeveloperPanelModel::NextDriverState() - Driver has changed from HaltedOnDeviceInit to Unknown state for process 'vkcube.exe', ProcessId = 8548, clientId = 247.
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'vkcube.exe' (processId 8548, clientId 247) in the Unknown driver state.
[RDP] Found 0 settings.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is Unknown for process 'vkcube.exe', ProcessId = 8548
[RDP] Advance to next driver state.  Current driver state is Unknown for process 'vkcube.exe', ProcessId = 8548
[RDP] Driver has been initialized within vkcube.exe process. Attempting to retrieve device clock frequencies.
[RDP] Successfully queried maximum device clocks.
[RDP] Successfully queried device clock frequencies for Normal mode.
[RDP] Successfully queried device clock frequencies for Stable mode.
[RDP] Successfully collected device clock frequencies.
[RDP] Applying user-specified clock mode.
[RDP] Set clock mode to Normal.
[RDP] Resumed execution of process 'vkcube.exe', ProcessId = 8548.
[RDP] DeveloperPanelModel::NextDriverState() - Driver has changed from Unknown to Running state for process 'vkcube.exe', ProcessId = 8548, clientId = 247.
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'vkcube.exe' (processId 8548, clientId 247) in the Running driver state.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is Running for process 'vkcube.exe', ProcessId = 8548
[RDP] Client with Id 247 has disconnected.
[RDP] Received client connected from unknown client with id 564.
[RDP] Received client halted from unknown client with id 564.
[RDP] DeveloperPanelModel::AddClientInfo() - Processing halted client with id 564: vkcube.exe:8664 - AMD Vulkan Driver
[RDP] vkcube.exe with clientId 564 connected to driver control client in driver state HaltedOnDeviceInit
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'vkcube.exe' (processId 8664, clientId 564) in the HaltedOnDeviceInit driver state.
[RDP] Found 0 settings.
[RDP] EnableProfiling() for clientId 564.
[RDP] Profile Settings: start = 0, end = 0, mode = 0, PSO = 0x0, flags = 0x0
[RDP] UpdateTraceParameters successful
[RDP] Enabled profiling for target executable 'vkcube.exe', ProcessId = 8664.
[RDP] Can enable profiling for client ID 564
[RDP] Set profiling flag for ProcessId = 8664 (client ID 564) to true.
[RDP] Capture profile button is enabled because the target application is profilable and there is no profile in progress.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is HaltedOnDeviceInit for process 'vkcube.exe', ProcessId = 8664
[RDP] Advance to next driver state.  Current driver state is HaltedOnDeviceInit for process 'vkcube.exe', ProcessId = 8664
[RDP] Step driver for process 'vkcube.exe', ProcessId = 8664
[RDP] DeveloperPanelModel::NextDriverState() - Query Driver status failed (driver control client likely disconnected)
[RDP] Client with Id 564 has disconnected.
[RDP] Capture profile button has been disabled because the application is not profilable.
  • Wolfenstein II
    wolf2 no profile
    wolf2 profile
[RDP] Received client connected from unknown client with id 6182.
[RDP] Received client halted from unknown client with id 6182.
[RDP] DeveloperPanelModel::AddClientInfo() - Processing halted client with id 6182: NewColossus_x64vk.exe:1008 - AMD Vulkan Driver
[RDP] NewColossus_x64vk.exe with clientId 6182 connected to driver control client in driver state HaltedOnDeviceInit
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'NewColossus_x64vk.exe' (processId 1008, clientId 6182) in the HaltedOnDeviceInit driver state.
[RDP] Found 0 settings.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is HaltedOnDeviceInit for process 'NewColossus_x64vk.exe', ProcessId = 1008
[RDP] Advance to next driver state.  Current driver state is HaltedOnDeviceInit for process 'NewColossus_x64vk.exe', ProcessId = 1008
[RDP] Step driver for process 'NewColossus_x64vk.exe', ProcessId = 1008
[RDP] DeveloperPanelModel::NextDriverState() - Driver has changed from HaltedOnDeviceInit to Unknown state for process 'NewColossus_x64vk.exe', ProcessId = 1008, clientId = 6182.
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'NewColossus_x64vk.exe' (processId 1008, clientId 6182) in the Unknown driver state.
[RDP] Found 0 settings.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is Unknown for process 'NewColossus_x64vk.exe', ProcessId = 1008
[RDP] Advance to next driver state.  Current driver state is Unknown for process 'NewColossus_x64vk.exe', ProcessId = 1008
[RDP] Driver has been initialized within NewColossus_x64vk.exe process. Attempting to retrieve device clock frequencies.
[RDP] Successfully queried maximum device clocks.
[RDP] Successfully queried device clock frequencies for Normal mode.
[RDP] Successfully queried device clock frequencies for Stable mode.
[RDP] Successfully collected device clock frequencies.
[RDP] Applying user-specified clock mode.
[RDP] Set clock mode to Normal.
[RDP] Resumed execution of process 'NewColossus_x64vk.exe', ProcessId = 1008.
[RDP] DeveloperPanelModel::NextDriverState() - Driver has changed from Unknown to Running state for process 'NewColossus_x64vk.exe', ProcessId = 1008, clientId = 6182.
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'NewColossus_x64vk.exe' (processId 1008, clientId 6182) in the Running driver state.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is Running for process 'NewColossus_x64vk.exe', ProcessId = 1008
[RDP] Received client connected from unknown client with id 4926.
[RDP] Received client halted from unknown client with id 4926.
[RDP] DeveloperPanelModel::AddClientInfo() - Processing halted client with id 4926: Radeonsoftware.exe:3008 - AMD Vulkan Driver
[RDP] Radeonsoftware.exe with clientId 4926 connected to driver control client in driver state HaltedOnDeviceInit
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'Radeonsoftware.exe' (processId 3008, clientId 4926) in the HaltedOnDeviceInit driver state.
[RDP] Found 0 settings.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is HaltedOnDeviceInit for process 'Radeonsoftware.exe', ProcessId = 3008
[RDP] Advance to next driver state.  Current driver state is HaltedOnDeviceInit for process 'Radeonsoftware.exe', ProcessId = 3008
[RDP] Step driver for process 'Radeonsoftware.exe', ProcessId = 3008
[RDP] DeveloperPanelModel::NextDriverState() - Query Driver status failed (driver control client likely disconnected)
[RDP] Client with Id 4926 has disconnected.
[RDP] Client with Id 6182 has disconnected.
[RDP] Received client connected from unknown client with id 8045.
[RDP] Received client halted from unknown client with id 8045.
[RDP] DeveloperPanelModel::AddClientInfo() - Processing halted client with id 8045: NewColossus_x64vk.exe:3452 - AMD Vulkan Driver
[RDP] NewColossus_x64vk.exe with clientId 8045 connected to driver control client in driver state HaltedOnDeviceInit
[RGP] DeveloperPanelModel::OnDriverStateChanged() - Handle processing for 'NewColossus_x64vk.exe' (processId 3452, clientId 8045) in the HaltedOnDeviceInit driver state.
[RDP] Found 0 settings.
[RDP] EnableProfiling() for clientId 8045.
[RDP] Profile Settings: start = 0, end = 0, mode = 0, PSO = 0x0, flags = 0x0
[RDP] UpdateTraceParameters successful
[RDP] Enabled profiling for target executable 'NewColossus_x64vk.exe', ProcessId = 3452.
[RDP] Can enable profiling for client ID 8045
[RDP] Set profiling flag for ProcessId = 3452 (client ID 8045) to true.
[RDP] Capture profile button is enabled because the target application is profilable and there is no profile in progress.
[RDP] DeveloperPanelModel::OnDriverStateChanged() - Update client run status.  Current driver state is HaltedOnDeviceInit for process 'NewColossus_x64vk.exe', ProcessId = 3452
[RDP] Advance to next driver state.  Current driver state is HaltedOnDeviceInit for process 'NewColossus_x64vk.exe', ProcessId = 3452
[RDP] Step driver for process 'NewColossus_x64vk.exe', ProcessId = 3452
[RDP] DeveloperPanelModel::NextDriverState() - Query Driver status failed (driver control client likely disconnected)
[RDP] Client with Id 8045 has disconnected.
[RDP] Capture profile button has been disabled because the application is not profilable.

DMA queue in Vulkan does not show anything

On RX470 on Windows, submitting work to DMA queue (queue family 2), nothing shows up in the profiler. Async compute shows up however ... Windows 10 64-bit, latest drivers.

Profiler segfaults when opening profile

Hi, I successfully captured a profile of Dota 2 but the RadeonGPUProfiler crashes when I try to open the file.
It works fine on other captures (also from Dota).

The capture

https://flakebi.de/flakebi/dota2-20190527-110052.rgp.xz

Backtrace

* thread #4, name = 'QThread', stop reason = signal SIGSEGV: address access protected (fault address: 0x7fffd9d5fb74)
  * frame #0: 0x00000001005c277d RadeonGPUProfiler` rgpEventProcessorGetBackendEventNumberForStage  + 13
    frame #1: 0x00000001005ceb77 RadeonGPUProfiler` rgpWavefrontProcessorAddWavefrontStart  + 167
    frame #2: 0x00000001005a6006 RadeonGPUProfiler` rgpDataSetLoaderPopulateDataSet  + 3766
    frame #3: 0x00000001005651ca RadeonGPUProfiler` RGPTraceManager::LoadTrace(char const*)  + 250
    frame #4: 0x0000000100566e69 RadeonGPUProfiler` LoadingThread::run()  + 73
    frame #5: 0x00007ffff1c4897a libQt5Core.so.5` ___lldb_unnamed_symbol286$$libQt5Core.so.5  + 330
    frame #6: 0x00007ffff1b82a92 libpthread.so.0` start_thread  + 242
    frame #7: 0x00007ffff17c0cd3 libc.so.6` __GI___clone  + 67

System information

Arch Linux 64-bit
Linux 5.0.17

OpenGL Support

Would love to optimize Godot Engine better for AMD but, as we focus on being general purpose and prioritize compatibility, we use OpenGL 3.3.

This tool does not seem to support OpenGL profiling, and the previous one (GPU PerfStudio) is unmaintained and unusable (crashes constantly for me). There is simply no way to optimize for AMD for us, then?

Unable to capture profile

I am trying to collect performance data. I attempted to capture twice but got the error 'NotReady'.
Cards I used are (with latest drivers 18.Q3.1):
Radeon Pro WX7100 and RX580. Windows 10.
Could you please provide assistance to me?

There is my connection log:

[RDP] Loaded RDP settings file.
[RDP] Attempting to start Radeon Developer Service locally.
[RDP] Launching local RDS.
[RDP] Established connection to RDS within timeout.
[RDP] Connected successfully
[RDP] Received client connected from unknown client with id 2730.
[RDP] Received client halted from unknown client with id 2730.
[RDP] Processing halted client with id 2730: PerformanceBenchmark.exe:3304 - AMD Vulkan Driver
[RDP] Updated PerformanceBenchmark.exe ClientId to 2730
[RDP] Connected DriverControlClient to process 'PerformanceBenchmark.exe', ProcessId = 3304
[RDP] Filtered halted process with ProcessId = 3304
[RDP] EnableProfiling() for clientId 2730.
[RDP] Enabled profiling for target executable 'PerformanceBenchmark.exe', ProcessId = 3304.
[RDP] Can enable profiling for client ID 2730
[RDP] Set profiling flag for ProcessId = 3304 (client ID 2730) to true.
[RDP] Capture profile button is enabled because the target application is profilable and there is no profile in progress.
[RDP] Found 0 settings.
[RDP] Resumed execution of process 'PerformanceBenchmark.exe', ProcessId = 3304. Disconnect client.
[RDP] Driver has been initialized within PerformanceBenchmark.exe process. Attempting to retrieve device clock frequencies.
[RDP] Successfully queried maximum device clocks.
[RDP] Successfully set device clock mode to Normal to query frequency.
[RDP] Successfully queried device clock frequencies for Normal mode.
[RDP] Successfully set device clock mode to Stable to query frequency.
[RDP] Successfully queried device clock frequencies for Stable mode.
[RDP] Successfully collected device clock frequencies.
[RDP] Reverting to user's clock mode.
[RDP] Set clock mode to Normal.
[RDP] Driver initialized successfully on target client PerformanceBenchmark.exe.
[RDP] Capture profile button has been disabled because there is an active profile in progress.
[RDP] Set clock mode to Peak for profiling.
[RDP] Profiling began successfully.
[RDP] Reverted clock after profiling to Normal.
[RDP] Failed to finish executing profile with code 'NotReady'.
[RDP] Capture profile button is enabled because the target application is profilable and there is no profile in progress.
[RDP] Capture profile button has been disabled because there is an active profile in progress.
[RDP] Set clock mode to Peak for profiling.
[RDP] Profiling began successfully.
[RDP] Reverted clock after profiling to Normal.
[RDP] Failed to finish executing profile with code 'NotReady'.
[RDP] Client with Id 2730 has disconnected.

Unable to capture opencl application on Linux/ROCm

I used the opencl application xgemm and attempted to capture. However the rgp does not detect it as running and it is not listed in "active applications", because of it, I can not capture trace.
The same rgp version used can capture vulkan application fine i.e. small app named vkcube that ships with the vulkan-sdk, however no success with opencl app.

Window cannot be resized, it's fixed and exceeded monitor's resolution

I'm using v. 1.7.0.29 (latest downloaded on release tab) on Ubuntu 19.10, kernel 5.3.18-050318-generic.

The window of RGP Profiler cannot be resized, and it exceeds my monitor's resolution so I cannot see the whole thing. My monitor resolution is 1366x768 pixels. Does RGP Profiler require at least larger resolution than mine ? Thanks!

Instruction tracing does not work on RX 480

I'm trying to do a instruction tracing from D3D12 app. I have RX 480 GPU, 19.50 driver.

I supply the API PSO hash to the Developer Panel, but when looking at the capture in RGP, the "Instruction Timing" is greyed-out, and the context menu for the event shows greyed-out "View in Instruction timing [Detailed data unavailable]".

My theory is that the GPU is a bit too old for this. If this is the case, could you maybe make it more visible which GPUs actually support this feature?

edit: it's actually possible to get timing trace for other all PSOs i've tried. It might also matter that the shader i'm trying to profile is started with ExecuteIndirect and it's a CS.

edi2: changing drawcall to regular dispatch didn't help

Radeon 290 Support

I was hoping I could ask for Radeon 290 (Hawaii) support. I see the Radeon 285 is supported - so I was hoping that adding support for the Radeon 290 would be a relatively small extension.
I'm using Vulkan 1.1 and there are simply no good profilers out there that support the Radeon 290 correctly. If I find a good deal on a Vega in Kijiji and had the money I would simply upgrade - however this is not the case.

Thanks !

Unable to Profile RX550 GPU

Hi There,

I'm trying to profile an opencl kernel running on a RX550 GPU (Baffin), but somehow it doesn't work, because I run the application (console application) but the Developer panel never detects the kernel is running, so it never changes to the profiling tab, enabling the capture button. Maybe I'm doing something wrong or this GPU is not supported. I have also tried with CodeXL and the profiling works, but it doesn't have the level of detail of Radeon GPU Profiler. Can anyone point me in the right direction? Thanks in advance.

RadeonGPUProfiler fails to open captures of a specific Vulkan application

I've been trying to use RGP to profile my game engine but RGP fails to open the rgp capture files with the following message:

The profile failed to load. Do you want to remove the profile simple_scene-20190608-103033.rgp from the recent files list?

No more info than that. RGP seems to be working for some simple content (eg vulkan-smoketest) but not for my renderer.

I've uploaded an rgp file here if you want to check out: https://drive.google.com/file/d/1rafnjnSVO0lS3B0Dg3FlWNEhBepuKIgZ

Any idea what might be wrong?

System info:
OS: Ubuntu 18.04
kernel: 5.1.6
RGP: 1.5.1.7 (also fails on 1.4.1.39)
GPU: RX 580
Driver: AMDVLK, driverVersion: 8388699, "2019-5-24 update"

LDS size and theoretical occupancy incorrectly reported

It seems to me that the LDS size reported in the "Wavefront occupancy" and "Pipeline State" tabs are either dynamic values or calculated in DWORDs (the value calculated by hand or by looking at the output of AMD_shader_info is about 4x).

This seems to be used to calculate the possible number of wavefronts that can be launched, but this value is incorrect - RGP underestimates the amount of LDS required by the shader and hence overestimates the number of possible wavefronts.

RX5600XT support

Could you please add support for RX5600XT. It seems to work but after a while it shows a dialog unsupported device and I can't use the profiler anymore without pc reboot

Cannot collect full trace of an OpenCL application

I tried to use Radeon Profiler and Radeon Developer panel to collect OpenCL application timeline trace, but could not get the tools to capture the whole trace of my application's OpenCL calls (it takes a couple of seconds for the application to run). I could only get the first ~50ms of trace since the application starts (rgp file is about 3.7 MB in size).

Any way to capture the whole timeline using Radeon Developer Tool Suite?

Changing dispatch range to 0-1000 does not help to capture more data.

Cryptic Error Message In Developer Panel

I'm trying to capture a trace for a simple Vulkan app that only uses compute. The app only sets up the vulkan state, issues a direct dispatch call (through a compute queue), and submits the queue and waits until completion. I have no error/warning messages popping up from the LunarG validation layers.

It's a pretty straightforward app with the exception that I do not have a main render loop, nor do I present anything via vkQueuePresentKHR().

I get a cryptic error message when trying to capture a trace:

[RDP] Received client connected from unknown client with id 1888.
[RDP] Received client halted from unknown client with id 1888.
[RDP] Processing halted client with id 1888: VulkanThreadScheduler.exe:19844 - AMD Vulkan Driver
[RDP] Updated VulkanThreadScheduler.exe ClientId to 1888
[RDP] Connected DriverControlClient to process 'VulkanThreadScheduler.exe', ProcessId = 19844
[RDP] Filtered halted process with ProcessId = 19844
[RDP] Enabled profiling for target executable 'VulkanThreadScheduler.exe', ProcessId = 19844.
[RDP] Set profiling flag for ProcessId = 19844 to true.
[RDP] Capture profile button is enabled because the target application is profilable and there is no profile in progress.
[RDP] Found 0 settings.
[RDP] Resumed execution of process 'VulkanThreadScheduler.exe', ProcessId = 19844. Disconnect client.
[RDP] Driver has been initialized within VulkanThreadScheduler.exe process. Attempting to retrieve device clock frequencies.
[RDP] Successfully queried maximum device clocks.
[RDP] Successfully set device clock mode to Normal to query frequency.
[RDP] Successfully queried device clock frequencies for Normal mode.
[RDP] Successfully set device clock mode to Stable to query frequency.
[RDP] Successfully queried device clock frequencies for Stable mode.
[RDP] Successfully collected device clock frequencies.
[RDP] Reverting to user's clock mode.
[RDP] Set clock mode to Normal.
[RDP] Driver initialized successfully on target client VulkanThreadScheduler.exe.
[RDP] Capture profile button has been disabled because there is an active profile in progress.
[RDP] Set clock mode to Peak for profiling.
[RDP] Profiling began successfully.
[RDP] Reverted clock after profiling to Normal.
[RDP] Failed to finish executing profile with code 'Error'.
[RDP] Capture profile button is enabled because the target application is profilable and there is no profile in progress.
[RDP] Client with Id 1888 has disconnected.
[RDP] Capture profile button has been disabled because the application is not profilable.

I assume this line signifies something's wrong: [RDP] Failed to finish executing profile with code 'Error'., but is very cryptic.

Any help?

Edit: I should mention I'm on Windows 10 with an RX560 and up-to-date drivers.

Using ncurses 6 (libtinfo.so.6 instead of libtinfo.so.5)

Hi,

first of all I'm on archlinux and not ubuntu, I know that it's not supported, so a short "no" will do if there is no way.

Now the question: It seems that the Profiler is compiled agains ncurses 5.0, but the arch repositories only have ncurses 6.0. I tried to symlink libtinfo.so.5 to libtinfo.so but then I get the following runtime error:

./RadeonGPUProfiler: error while loading shared libraries: /usr/lib/libtinfo.so.5: file too short

which is fair I guess since they are two different version.

Is there any way for me to make this work or should I just wait for another release / roll back my ncurses package (if possible)?

VK_ERROR_OUT_OF_HOST_MEMORY on windows profiling vulkan

Hi, I have this problem that's unique to Windows 10 x64, where after enabling profiling in Developer Panel, my app cannot start up and fails with VK_ERROR_OUT_OF_HOST_MEMORY. Without profiling, everything runs fine. The error occurs in vkCreateDevice. I think the problem might be with queues I want created. If I request only one graphics queue, vkCreateDevice succeeds, but if I request 1 graphics, 3 compute, 1 transfer, then I get the error.

I am only enabling VK_KHR_swapchain, it doesn't matter if I don't select anything in VkPhysicalDeviceFeatures. I have tested with and without validation layers, my application is requesting vulkan 1.1, although, IIRC I also had this problem with 1.0. I have stopped overlays like RTSS, Steam, renderdoc, but nothing helps.

On Linux, everything runs fine (I just need to point VK_ICD_FILENAMES at AMDVLK, because I use RADV by default), but I have not checked if the driver advertises different set of queue families and capacities, my code is sort of flexible in this regard.

Configuration:

  • Windows 10 Enterprise N x64 1803, OS build 17134.48
  • RX Vega 64
  • Threadripper 1950X
  • LunarG SDK 1.1.73
  • RGP 1.2.0.21 (on Windows, some other 1.2 release on Linux)
  • GPU Driver 18.5.2

RDP log:

[RDP] Received client connected from unknown client with id 6800.
[RDP] Received client halted from unknown client with id 6800.
[RDP] Processing halted client with id 6800: v4.exe:11144 - AMD Vulkan Driver
[RDP] Updated v4.exe ClientId to 6800
[RDP] Connected DriverControlClient to process 'v4.exe', ProcessId = 11144
[RDP] Filtered halted process with ProcessId = 11144
[RDP] Enabled profiling for target executable 'v4.exe', ProcessId = 11144.
[RDP] Set profiling flag for ProcessId = 11144 to true.
[RDP] Capture profile button is enabled because the target application is profilable and there is no profile in progress.
[RDP] Found 0 settings.
[RDP] Resumed execution of process 'v4.exe', ProcessId = 11144. Disconnect client.
[RDP] Wait for driver initialization in process 'v4.exe' failed.
[RDP] Attempted to disconnect from DriverControlClient that was already disconnected.
[RDP] Client with Id 6800 has disconnected.
[RDP] Capture profile button has been disabled because the application is not profilable.

RGP crashes every 32-bit Vulkan app

Specifically, it crashes amdvlk32.dll preventing you from profiling them. 64-bit Vulkan apps work fine.

Hardware/software used:
Graphics card: Radeon RX 560 (MSI Aero 4GB)
Driver version: Adrenalin 18.3.1
Windows: 7 64-bit
RGP version: 1.11.17

How to reproduce:

  1. open RadeonDeveloperPanel.exe and click Connect
  2. add any 32-bit Vulkan app executable to a target app list (VULKAN_SDK\bin32\cube.exe is a good example)
  3. run the app

If you need more info, please let me know.

Cache counters on GCN

The cache hit functionality seems very useful and certainly brings RGP closer to what proprietary tools can do that are available for consoles. Will this functionality be implemented for GCN hardware as well?

Navi10 support on launch day?

Hi,
just asking if we can expect an new RGP release on Navi launch day (7 july) or shortly after with support for 5700XT..
if not some ETA?
thanks..

Theoretical occupancy does not take RDNA wave64 into account

I was long wondering why my compute shader had a mediocre occupancy even though it was showing "running maximum wavefronts for your ASIC".

image

Well, through some testing, it turned out that when running with wave64, the hardware can run up to the equivalent of 40 wavefronts in wave32. So the calculation of theoretical occupancy needs to take that into account. Please fix this by bumping the maximum theoretical occupancy halving the hardware register count in wave64 mode accordingly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.