docs(rocprofiler-compute): Warn about TCP_REQ zeros from perfmon gating - #10996
Open
feizheng10 wants to merge 1 commit into
Open
docs(rocprofiler-compute): Warn about TCP_REQ zeros from perfmon gating#10996feizheng10 wants to merge 1 commit into
feizheng10 wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
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
force-pushed
the
users/feizheng10/aiprofcomp-807-tcp-req-power-gating
branch
from
September 1, 2026 03:09
854e460 to
873096d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
On gfx115x and gfx120x, the
AUTOperformance level can gate the perfmon clock, soTCP_REQand theGL0request 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 theSTABLE_STDworkaround rather than change how counters are collected.Technical Details
_pmc_power_gating_warning()inprofiler_base.pyand emit it frompre_processing(), alongside the existing partition warnings. The message names the arch, explains the zeros, and links to the ROCprofiler-SDK PMC performance-level guide.sudo amd-smi set --perf-level STABLE_STDworkaround.AddedandKnown issues.JIRA ID
AIPROFCOMP-807
Test Plan
ruff check/ruff format --diffon the edited Python filespytest tests/unit/rocprof_compute_profile/test_profiler_base.pyTest Result
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