Skip to content

Enhancement: Add rocprofv2 trace support for AMD GPUs#817

Open
shcho wants to merge 10 commits into
microsoft:mainfrom
shcho:dev/choshenghsun/reliaguard-tracegen-mi300x
Open

Enhancement: Add rocprofv2 trace support for AMD GPUs#817
shcho wants to merge 10 commits into
microsoft:mainfrom
shcho:dev/choshenghsun/reliaguard-tracegen-mi300x

Conversation

@shcho

@shcho shcho commented May 19, 2026

Copy link
Copy Markdown

Description
Extend trace generation to support AMD GPUs using rocprofv2

  • runner.py: Add SB_ENABLE_ROCPROF/SB_ROCPROF_TRACE_DIR env vars to enable rocprofv2 profiling (--hip-trace --kernel-trace --plugin json) in local, torch.distributed, and mpi modes
  • pytorch_base.py: Extend GPU guard to support ROCm (torch.version.hip) so PyTorch profiler works on AMD GPUs

- runner.py: Add SB_ENABLE_ROCPROF/SB_ROCPROF_TRACE_DIR env vars to enable
  rocprofv2 profiling (--hip-trace --kernel-trace --plugin json) in local,
  torch.distributed, and mpi modes
- pytorch_base.py: Extend GPU guard to support ROCm (torch.version.hip)
  so PyTorch profiler works on AMD GPUs
Copilot AI review requested due to automatic review settings May 19, 2026 18:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds ROCm profiling support alongside existing Nsight Systems tracing and updates model benchmark GPU detection to include AMD (HIP) builds.

Changes:

  • Add rocprofv2 command injection (gated by env vars) for local/distributed/mpi runner modes.
  • Introduce ROCm trace directory env var support (SB_ROCPROF_TRACE_DIR).
  • Expand PyTorch GPU check to treat HIP builds as GPU-capable.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.

File Description
superbench/runner/runner.py Adds optional rocprofv2 profiling prefixes/trace commands controlled by environment variables.
superbench/benchmarks/model_benchmarks/pytorch_base.py Updates GPU detection to include ROCm/HIP PyTorch builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/benchmarks/model_benchmarks/pytorch_base.py Outdated
Shenghsun Cho added 2 commits May 19, 2026 18:46
Address PR review: wrap all interpolated path/name segments in
shlex.quote() to prevent command injection or broken commands when
paths contain whitespace or shell metacharacters. Applied to both
nsys and rocprofv2 trace commands across all three execution modes
(local, torch.distributed, mpi).
Address PR review: the variable holds either an nsys or rocprofv2
prefix, so rename to trace_prefix to avoid implying Nsight-only
behavior.
@shcho
shcho marked this pull request as ready for review May 20, 2026 02:35
@shcho
shcho requested a review from a team as a code owner May 20, 2026 02:35
Copilot AI review requested due to automatic review settings May 20, 2026 02:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comment thread superbench/benchmarks/model_benchmarks/pytorch_base.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment on lines +152 to +157
elif enable_rocprof and mode.proc_rank == 0:
trace_output = shlex.quote(f'{rocprof_trace_dir}/{benchmark_name}_{mode.proc_rank}_traces')
trace_command = (
f'rocprofv2 --hip-trace --kernel-trace --plugin json '
f'-d {trace_output} '
)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Addressed in commit.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I think the earlier Copilot suggestion may be incorrect for ROCm 6.3.4: rocprofv2 does not support a bare -- and treats it as an unknown option.

Could you verify this with the ROCm 6.3.4 rocprofv2 in the target image? The expected syntax is:

rocprofv2 <options> <executable> [args...]

Comment thread superbench/runner/runner.py
Comment thread superbench/runner/runner.py Outdated
Shenghsun Cho added 2 commits July 7, 2026 18:19
Address PR review: torch.version.hip (and .cuda) may not exist on all
PyTorch builds/versions, raising AttributeError. Use getattr with a
None default to make the check compatible across all PyTorch builds.
Address PR review: add the conventional -- end-of-options separator
after rocprofv2 flags so that benchmark command arguments starting
with - are not misinterpreted as rocprofv2 options. Applied to all
three execution modes (local, torch.distributed, mpi).
@shcho

shcho commented Jul 7, 2026

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree company="Microsoft"

Copilot AI review requested due to automatic review settings July 21, 2026 20:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 6 comments.

Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/benchmarks/model_benchmarks/pytorch_base.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py Outdated
Comment thread superbench/runner/runner.py
Comment thread superbench/runner/runner.py
Comment thread superbench/runner/runner.py
Comment thread superbench/benchmarks/model_benchmarks/pytorch_base.py Outdated
@gusui-msft
gusui-msft requested review from gusui-msft and polarG July 22, 2026 18:08
Shenghsun Cho added 5 commits July 22, 2026 21:25
Address PR review: shlex.quote() wraps values with spaces or shell
metacharacters in single quotes, which would terminate the outer
bash -lc '...' quoting used to dispatch commands. Add a helper that
runs shlex.quote() and then replaces each ' with '\'' so the quoted
value is safe to embed inside the outer single-quoted command
string. Applied to all six nsys/rocprofv2 trace output paths.
Address PR review: previously SB_ENABLE_ROCPROF was silently ignored
whenever SB_ENABLE_NSYS was also set, producing no traces and no
diagnostic. Log a warning documenting that nsys takes precedence and
explicitly disable rocprofv2 in that case.
Address PR review: clarify that ProfilerActivity.CUDA and event.cuda_time
are aliases that cover HIP kernels on ROCm builds of PyTorch, so the
same profiler code path works for both NVIDIA and AMD GPUs. Verified
end-to-end on MI300x with ROCm 6.3.4.
Address PR review: the nsys/rocprofv2 selection + path quoting logic
was copy-pasted across all three mode branches (local, torch.distributed,
mpi). Extract __build_trace_command() so future changes to profiler
flags, quoting, or additional tools live in a single place.
Apply yapf column-limit reflows and mark the _quote_for_bash_lc
docstring as raw (D301) since it contains backslash escapes.
Copilot AI review requested due to automatic review settings July 22, 2026 22:51
@shcho
shcho force-pushed the dev/choshenghsun/reliaguard-tracegen-mi300x branch from a81f9be to b4b5e54 Compare July 22, 2026 22:51

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

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.

4 participants