Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add RenderDoc integration #41

Merged
merged 3 commits into from
Nov 3, 2023
Merged

Add RenderDoc integration #41

merged 3 commits into from
Nov 3, 2023

Conversation

kuhar
Copy link
Collaborator

@kuhar kuhar commented Nov 3, 2023

Use the RenderDoc API programmatically start a capture. We need this because uVkCompute does not present any frames and frame-oriented tools do not know when to start on their own.

The initial implementation supports linux only. The RenderDoc header is vendored under /third_party.

RenderDoc capture is enabled with a new --enable_renderdoc flag. This is coarse-grained: we start a single capture for all of the benchmarks, so you may want to combine it with a --benchmark_filter to profile only some configurations of interest.
In the future we may want to make it more fine-grained, e.g., per registered benchmark, but I was not able to find a clean way to hook into the loop over the final benchmark list.

Note that this transitively enables RGP (Radeon GPU Profiler) support, although without instruction timing.

Use the RenderDoc API programatically start a capture. We need this
because uVkCompute does not present any frames and frame-oriented tools
do not know when to start on their own.

The initial implementation supports linux only. The RenderDoc header is
vendored under `/third_party`.

RenderDoc capture is enabled with a new `--enable_renderdoc` flag. This
is coarse-grained: we start a signle capture for all of the benchmarks,
so you may want to combine it with a `--benchmark_filter` to profile
only some configurations of interest.
In the future we may want to make it more fine-grained, e.g., per
registered benchmark, but I was not able to find a clean way to hook
into the loop over the final benchmark list.

Note that this transitively enables RGP (Radeon GPU Profiler) support,
although without instruction timing.
@kuhar
Copy link
Collaborator Author

kuhar commented Nov 3, 2023

The formatting failure is expected for the renderdoc header in third_party. Probably not worth fixing the lint script just for this.

Copy link
Collaborator

@antiagainst antiagainst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, thanks for adding this! Just a few formatting nits.

uvkc/benchmark/main.cc Outdated Show resolved Hide resolved
uvkc/benchmark/main.cc Outdated Show resolved Hide resolved
uvkc/benchmark/main.cc Outdated Show resolved Hide resolved
@kuhar kuhar merged commit e5af042 into google:main Nov 3, 2023
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants