Skip to content

docs(rocprofiler-compute): Warn about TCP_REQ zeros from perfmon gating - #10996

Open
feizheng10 wants to merge 1 commit into
rocprofiler-compute-developfrom
users/feizheng10/aiprofcomp-807-tcp-req-power-gating
Open

docs(rocprofiler-compute): Warn about TCP_REQ zeros from perfmon gating#10996
feizheng10 wants to merge 1 commit into
rocprofiler-compute-developfrom
users/feizheng10/aiprofcomp-807-tcp-req-power-gating

Conversation

@feizheng10

@feizheng10 feizheng10 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Motivation

On gfx115x and gfx120x, the AUTO performance level can gate the perfmon clock, so TCP_REQ and the GL0 request metrics derived from it read zero despite real global memory traffic (AIPROFCOMP-807 / ROCM-29773). The root cause is hardware power gating, not rocprof-compute collection, so the fix is to surface the condition and document the STABLE_STD workaround rather than change how counters are collected.

Technical Details

  • Add _pmc_power_gating_warning() in profiler_base.py and emit it from pre_processing(), alongside the existing partition warnings. The message names the arch, explains the zeros, and links to the ROCprofiler-SDK PMC performance-level guide.
  • Add an FAQ entry documenting the cause and the sudo amd-smi set --perf-level STABLE_STD workaround.
  • Record the behavior under 3.10.0 Added and Known issues.

JIRA ID

AIPROFCOMP-807

Test Plan

  • ruff check / ruff format --diff on the edited Python files
  • pytest tests/unit/rocprof_compute_profile/test_profiler_base.py
  • Confirm the warning appears when profiling on gfx115x or gfx120x
  • Confirm no warning on CDNA (e.g. gfx942) or gfx1250

Test Result

  • Ruff clean on edited Python files
  • 82 tests pass in test_profiler_base.py, including 9 new parametrized cases covering gfx1150/1151/1152/1200/1201 (warns) and gfx942/gfx1100/gfx1250/unknown (silent)

Submission Checklist

Made with Cursor

Copilot AI lite review requested due to automatic review settings August 31, 2026 21:01
@feizheng10
feizheng10 requested review from a team and prbasyal-amd as code owners August 31, 2026 21:01
@github-actions github-actions Bot added documentation Improvements or additions to documentation project: rocprofiler-compute github actions Pull requests that update GitHub Actions code labels Aug 31, 2026

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

This PR updates rocprofiler-compute documentation and runtime utilities around PMC collection pitfalls on newer RDNA architectures (gfx115x/gfx120x), and also introduces broader profiling/analyze plumbing changes (ML API tracing backend registry, PC-sampling handling, schema/fixture updates).

Changes:

  • Document and message the gfx115x/gfx120x PMC perfmon clock gating issue and STABLE_STD workaround; add supporting helper utilities.
  • Refactor/extend profiling + analysis internals (ML API trace backend registry, PC sampling options/artifacts, schema/ORM updates including L0).
  • Refresh a large set of test workload fixtures (sysinfo schema fields like sa_per_se, num_memory_channels, plus new trace workload fixtures).

Reviewed changes

Copilot reviewed 154 out of 495 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
projects/rocprofiler-compute/tools/metric_validation.py Update PMC dataframe creation call signature (drop nodes/spatial multiplex args).
projects/rocprofiler-compute/tools/counter_grouping_inspector.py Remove unused spatial_multiplexing argument passthrough.
projects/rocprofiler-compute/tools/config_management/README.md Minor markdown formatting cleanup.
projects/rocprofiler-compute/tests/workloads/vcopy/MI350/sysinfo.csv Update sysinfo schema/fields (incl. sa_per_se, num_memory_channels).
projects/rocprofiler-compute/tests/workloads/vcopy/MI300X_A1/sysinfo.csv Update sysinfo schema/fields (incl. sa_per_se, num_memory_channels).
projects/rocprofiler-compute/tests/workloads/vcopy/MI300A_A1/sysinfo.csv Update sysinfo schema/fields (incl. sa_per_se, num_memory_channels).
projects/rocprofiler-compute/tests/workloads/vcopy/MI200/sysinfo.csv Update sysinfo schema/fields (incl. sa_per_se, num_memory_channels).
projects/rocprofiler-compute/tests/workloads/vcopy_iteration_multiplexing/MI350/sysinfo.csv Update sysinfo schema/fields (incl. sa_per_se, num_memory_channels).
projects/rocprofiler-compute/tests/workloads/triton_trace/MI300A/sysinfo.csv Add new Triton trace workload sysinfo fixture.
projects/rocprofiler-compute/tests/workloads/triton_trace/MI300A/profiling_config.yaml Add new Triton trace workload profiling config fixture.
projects/rocprofiler-compute/tests/workloads/triton_trace/MI300A/perfmon/pmc_perf_0.yaml Add new Triton trace perfmon fixture (YAML).
projects/rocprofiler-compute/tests/workloads/torch_trace/MI350/sysinfo.csv Remove MI350 torch_trace sysinfo fixture.
projects/rocprofiler-compute/tests/workloads/torch_trace/MI350/profiling_config.yaml Remove MI350 torch_trace profiling config fixture.
projects/rocprofiler-compute/tests/workloads/torch_trace/MI350/perfmon/pmc_perf_8.txt Remove torch_trace perfmon TXT fixture.
projects/rocprofiler-compute/tests/workloads/torch_trace/MI350/perfmon/pmc_perf_5.txt Remove torch_trace perfmon TXT fixture.
projects/rocprofiler-compute/tests/workloads/torch_trace/MI350/perfmon/pmc_perf_10.txt Remove torch_trace perfmon TXT fixture.
projects/rocprofiler-compute/tests/workloads/torch_trace/MI350/perfmon/pmc_perf_1.txt Remove torch_trace perfmon TXT fixture.
projects/rocprofiler-compute/tests/workloads/torch_trace/MI300X_A1/sysinfo.csv Add new torch_trace sysinfo fixture (MI300X_A1).
projects/rocprofiler-compute/tests/workloads/torch_trace/MI300X_A1/profiling_config.yaml Add new torch_trace profiling config fixture (MI300X_A1).
projects/rocprofiler-compute/tests/workloads/torch_trace/MI300X_A1/perfmon/pmc_perf_0.yaml Add new torch_trace perfmon fixture (YAML).
projects/rocprofiler-compute/tests/workloads/sort_kernels/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/sort_dispatches/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/path/RDNA35_HALO/sysinfo.csv Update RDNA3.5 sysinfo schema (adds num_gl1c, num_memory_channels, series naming).
projects/rocprofiler-compute/tests/workloads/path/MI300X_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/path/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/path/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/no_roof/MI350/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/no_roof/MI300X_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/no_roof/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/no_roof/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ml_api_trace/MI300A/sysinfo.csv Add new ML API trace sysinfo fixture.
projects/rocprofiler-compute/tests/workloads/ml_api_trace/MI300A/profiling_config.yaml Add new ML API trace profiling config fixture.
projects/rocprofiler-compute/tests/workloads/ml_api_trace/MI300A/perfmon/pmc_perf_0.yaml Add new ML API trace perfmon fixture (YAML).
projects/rocprofiler-compute/tests/workloads/kernel/RDNA35_HALO/sysinfo.csv Update RDNA3.5 sysinfo schema (adds num_gl1c, num_memory_channels, series naming).
projects/rocprofiler-compute/tests/workloads/kernel/MI300X_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel_substr/MI300X_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel_substr/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel_substr/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel_names/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel_inv_str/MI300X_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel_inv_str/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel_inv_str/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel_inv_int/MI300X_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel_inv_int/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/kernel_inv_int/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/join_type_kernel/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/join_type_kernel/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/join_type_grid/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/join_type_grid/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_TD/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_TD/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_TCP/MI300X_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_TCP/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_TCP/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_TCC/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_TCC/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_TA/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_TA/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_SQC/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_SQC/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_SQ/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_SQ/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_SQ_TA/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_SQ_SQC_TCP_CPC/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_SQ_SPI/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_SQ_CPC/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_SPI/MI300X_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_SPI/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_SPI/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_CPF/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_CPF/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_CPC/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/ipblocks_CPC/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_inv/MI300X_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_inv/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_inv/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_inv/MI100/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_7/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_7/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_6_8/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_2/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_2/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_0/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_0/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_0/MI100/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_0_1/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/dispatch_0_1/MI100/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/device_inv_int/MI300X_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/device_inv_int/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/device_inv_int/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/device_filter/MI300X_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/device_filter/MI300A_A1/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/workloads/device_filter/MI200/sysinfo.csv Update sysinfo schema/fields.
projects/rocprofiler-compute/tests/test_torch_trace_coverage.py Update torch backend test to use new backend module path/behavior; set default profiler.
projects/rocprofiler-compute/tests/test_native_tool_finder.py Simplify nested patch context managers.
projects/rocprofiler-compute/tests/conftest.py Add require_triton helper.
projects/rocprofiler-compute/tests/CMakeLists.txt Copy additional Triton-related sample tests into tests dir.
projects/rocprofiler-compute/src/utils/utils_counter_defs.py Update built-in vars (memory channels) + RDNA series detection.
projects/rocprofiler-compute/src/utils/schema.py Workload schema: replace torch-specific match DF with per-backend ML API dict.
projects/rocprofiler-compute/src/utils/mi_gpu_spec.py GPU spec parsing updates: dies vs memory-levels APIs.
projects/rocprofiler-compute/src/utils/inject_roctx/registry.py Add backend registry for inject_roctx.
projects/rocprofiler-compute/src/utils/inject_roctx/constants.py Add known ML API backend constants.
projects/rocprofiler-compute/src/utils/gui.py Rename “Pct of Peak” to “Percent of Peak” in charting logic.
projects/rocprofiler-compute/src/utils/analysis_orm.py Add L0 cache data columns; tweak DB write context manager nesting.
projects/rocprofiler-compute/src/utils/amdsmi_interface.py Add AMD SMI VRAM bit width query helper.
projects/rocprofiler-compute/src/roofline/run_benchmark.py Add supported-arch list for benchmarking gating.
projects/rocprofiler-compute/src/roofline/benchmark/gfx11/benchmark_gfx11_base.py Add L0 bandwidth benchmark hook/labels.
projects/rocprofiler-compute/src/rocprof_compute_tui/widgets/charts.py Use shared gfx115x arch predicate for renderer selection.
projects/rocprofiler-compute/src/rocprof_compute_tui/utils/kernel_view_config.yaml Minor YAML formatting (line prefix cleanup).
projects/rocprofiler-compute/src/rocprof_compute_tui/analysis_tui.py Update PMC loading call signature and remove node/spatial multiplex plumbing.
projects/rocprofiler-compute/src/rocprof_compute_soc/soc_gfx1152.py Trim comments; keep RDNA3.5 mspec defaults.
projects/rocprofiler-compute/src/rocprof_compute_soc/soc_gfx1151.py Trim comments; keep RDNA3.5 mspec defaults.
projects/rocprofiler-compute/src/rocprof_compute_soc/soc_gfx1150.py Trim comments; keep RDNA3.5 mspec defaults.
projects/rocprofiler-compute/src/rocprof_compute_soc/analysis_configs/panel_config_template.yaml Rename pct-of-peak field keys for template.
projects/rocprofiler-compute/src/rocprof_compute_soc/analysis_configs/gfx115x/1700_graphics_register_bus_manager.yaml Fix percent computations (avoid SUM(100*x)/SUM(y) pattern).
projects/rocprofiler-compute/src/rocprof_compute_soc/analysis_configs/gfx115x/1400_graphics_core_efficiency_arbiter.yaml Fix percent computations (avoid SUM(100*x)/SUM(y) pattern).
projects/rocprofiler-compute/src/rocprof_compute_soc/analysis_configs/gfx115x/1100_l1_cache.yaml Fix percent computations and hit-rate formulas.
projects/rocprofiler-compute/src/rocprof_compute_soc/analysis_configs/gfx115x/0900_l0_cache.yaml Fix percent computations and hit-rate formulas for GL0/TCP.
projects/rocprofiler-compute/src/rocprof_compute_soc/analysis_configs/gfx115x/0600_workgroup_manager_spi.yaml Fix percent computations (use 100 * SUM(x)/SUM(y)).
projects/rocprofiler-compute/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py Add PC sampling option builder; enable marker trace when frameworks selected; attach sync env.
projects/rocprofiler-compute/src/lib/roctx_recordfn/CMakeLists.txt Update build comments + fingerprint import path.
projects/rocprofiler-compute/src/lib/rocprofiler_compute_tool/tests/test_rocprofiler_compute_tool.cpp Add pc sampling enablement tests.
projects/rocprofiler-compute/src/lib/rocprofiler_compute_tool/tests/mocks.h Remove pc-sampling beta env plumbing from mocks.
projects/rocprofiler-compute/src/lib/rocprofiler_compute_tool/tests/mocks.cpp Remove pc-sampling beta env plumbing from mocks.
projects/rocprofiler-compute/src/lib/rocprofiler_compute_tool/pc_sampling_feature.cpp Avoid flushing empty JSON artifact when no code objects were observed.
projects/rocprofiler-compute/src/lib/rocprofiler_compute_tool/input_parameters.h Remove pc-sampling beta env accessor from interface.
projects/rocprofiler-compute/src/lib/rocprofiler_compute_tool/input_parameters.cpp Remove pc-sampling beta env accessor implementation.
projects/rocprofiler-compute/src/lib/pc_sampling_collector/tests/test_code_object_writer.cpp Add tests for new empty() behavior.
projects/rocprofiler-compute/src/lib/pc_sampling_collector/tests/CMakeLists.txt Fix install destination to use project name.
projects/rocprofiler-compute/src/lib/pc_sampling_collector/code_object_writer.h Add empty() API to JSON writer.
projects/rocprofiler-compute/src/lib/pc_sampling_collector/code_object_writer.cpp Implement empty() API.
projects/rocprofiler-compute/sample/torch_compile_triton.py Add sample workload that triggers Triton kernels via torch.compile.
projects/rocprofiler-compute/sample/membw_analysis_test_suite/README.md Clarify --no-roof usage comment.
projects/rocprofiler-compute/sample/membw_analysis_test_suite/l2/VERIFICATION_REPORT.md Reorder CLI flags in documentation snippet.
projects/rocprofiler-compute/sample/membw_analysis_test_suite/l2/l2_multigpu_fabric.hip Reorder CLI flags in comments.
projects/rocprofiler-compute/requirements.txt Clarify requirements are analyze-mode-only and Python>=3.9.
projects/rocprofiler-compute/README.md Update submodule init instructions to include all src/ externals.
projects/rocprofiler-compute/PYTHON_CODING_STYLE.md Update examples for new PMC loading/iteration multiplexing guidance.
projects/rocprofiler-compute/pyproject.toml Lower baseline python floor to 3.8; add pytest marker for triton_trace.
projects/rocprofiler-compute/docs/reference/faq.rst Add FAQ entry describing PMC power-gating issue and workaround.
projects/rocprofiler-compute/docs/install/source-install.rst Document UBSAN as an option.
projects/rocprofiler-compute/docs/install/quickstart.rst Add Python version support table (profile vs analyze).
projects/rocprofiler-compute/docs/how-to/pc_sampling.rst Update docs for sorting default + rows option.
projects/rocprofiler-compute/docs/how-to/analyze/mode.rst Note analyze-mode requires Python>=3.9.
projects/rocprofiler-compute/docs/data/metrics/gfx115x_metrics.yaml Add AI L0 + VOPD metrics docs updates.
projects/rocprofiler-compute/docs/data/analyze/analysis_data_dump_schema.mmd Add l0_cache_data fields to schema diagram.
projects/rocprofiler-compute/docs/conceptual/rdna/wgp.rst Add note clarifying VOPD instruction-count semantics.
projects/rocprofiler-compute/docs/conceptual/rdna/system-speed-of-light.rst Clarify interpretation guidance for VOPD-related utilization.
projects/rocprofiler-compute/docs/conceptual/rdna/references.rst Update ISA reference link to RDNA3.5 ISA.
projects/rocprofiler-compute/.github/prompts/rocprof-compute-rebase-pr.prompt.md Add prompt metadata for rebase helper.
projects/rocprofiler-compute/.github/prompts/rocprof-compute-code-review.prompt.md Fix prompt frontmatter key.
projects/rocprofiler-compute/.cursor/commands/rocprof-compute-rebase-pr.md Add Cursor command metadata for rebase helper.
projects/rocprofiler-compute/.claude/commands/rocprof-compute-rebase-pr.md Add Claude command metadata for rebase helper.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +382 to 388
@classmethod
def get_memory_levels(cls, gpu_model: str) -> list[str]:
"""
if cls.get_gpu_series(gpu_arch).lower() == "navi3":
return cls._gpu_design[gpu_model.lower()].get("memory_die", 1)
else:
design = cls._gpu_design.get(gpu_model.lower(), {})
return design.get("physical_aid", 1) * design.get(
"logical_partitions_per_die", 1
)
Return a list of the cache and memory levels supported by the specific gpu model
"""
return cls._gpu_design[gpu_model.lower()].get("memory_levels", [])

Comment on lines +60 to +64
Why are TCP_REQ / GL0 request metrics zero on gfx115x or gfx12?
===============================================================

On gfx115x (RDNA 3.5) and gfx120x (RDNA 4 / Navi4x) GPUs, the default ``AUTO``
performance level can gate the perfmon clock. When that clock is gated, PMC
Comment on lines +60 to +75
Why are TCP_REQ / GL0 request metrics zero on gfx115x or gfx12?
===============================================================

On gfx115x (RDNA 3.5) and gfx120x (RDNA 4 / Navi4x) GPUs, the default ``AUTO``
performance level can gate the perfmon clock. When that clock is gated, PMC
collection still succeeds, but counters in some hardware blocks — including
``TCP_REQ``, ``TCP_REQ_READ``, ``TCP_REQ_WRITE``, and ``TCP_REQ_MISS`` — read
zero even when the kernel issues global memory traffic. Derived GL0 request
metrics then also report zero. This is a hardware power-gating behavior, not a
ROCm Compute Profiler collection failure.

LDS-only traffic correctly bypasses TCP and does not increment ``TCP_REQ``.
The issue described here applies to kernels that do use global memory.

Set the GPU performance level to ``STABLE_STD`` (``profile_standard``) before
profiling:
TCP_REQ and related counters read zero on gfx115x and gfx120x when the GPU
sits at the AUTO performance level, because the perfmon clock is power-gated.
This is hardware behavior rather than a collection defect, so surface it to
the user instead of letting the zeros look like real measurements.

Profile mode now emits a warning on the affected architectures pointing at
the STABLE_STD workaround, and the FAQ documents the cause alongside the
ROCprofiler-SDK performance-level guide.

JIRA: AIPROFCOMP-807
Co-authored-by: Cursor <cursoragent@cursor.com>
@feizheng10
feizheng10 force-pushed the users/feizheng10/aiprofcomp-807-tcp-req-power-gating branch from 854e460 to 873096d Compare September 1, 2026 03:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation github actions Pull requests that update GitHub Actions code organization: ROCm project: rocprofiler-compute

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants