Summary
On gfx1201 (RDNA4, Radeon AI PRO R9700), the GL2C EA request-size-split counters — GL2C_EA_RDREQ_32B, GL2C_EA_RDREQ_64B, GL2C_EA_RDREQ_128B, GL2C_EA_WRREQ_64B — always collect zero, while the base GL2C counters (GL2C_HIT, GL2C_MISS, GL2C_EA_RDREQ, GL2C_EA_WRREQ) and SQ_WAVES collect healthy values in the same run. All documented preconditions are satisfied, so this looks like the size-split variants are unimplemented or mis-plumbed for gfx12 rather than an environment problem.
Environment
- GPU: AMD Radeon AI PRO R9700 (gfx1201), VBIOS 113-APM107573-101
- rocprofv3 / rocprofiler-sdk: 1.3.2 (git 2b22ab0195cc1461cd9abf3b969e9dd7c10af350), ROCm 7.14
- Kernel 7.0.0-28-generic, amdgpu DKMS 6.19.4
power_dpm_force_performance_level = profile_standard on the measured GPU (verified — the AUTO/perfmon-clock trap is handled)
amdgpu.ppfeaturemask=0xffffffff (default was 0xfff7bfff; explicitly tested both — no effect on this symptom)
Reproduction
echo profile_standard | sudo tee /sys/class/drm/card1/device/power_dpm_force_performance_level
rocprofv3 --pmc "SQ_WAVES GL2C_HIT GL2C_MISS GL2C_EA_RDREQ GL2C_EA_WRREQ" \
--pmc "GL2C_EA_RDREQ_32B GL2C_EA_RDREQ_64B GL2C_EA_RDREQ_128B GL2C_EA_WRREQ_64B" \
--output-format csv -d out -o run -- <any GPU workload; we used llama-bench>
All four counters in the second group are listed by --list-avail and accepted without error; every dispatch row reports 0 for them. Same-run first-group totals (LLM decode workload, for scale): GL2C_HIT 61.2M, GL2C_MISS 18.9M, GL2C_EA_RDREQ healthy and consistent with hit/miss, SQ_WAVES 2.77M.
Secondary observation (same setup)
Base GL2C counter absolute values appear to under-report by a roughly constant ~4x versus hardware-timestamp-derived bandwidth on the same kernels (ratios are self-consistent; absolute magnitudes are not). If GL2C is instanced on gfx1201 and only a subset of instances is sampled, that would explain both the ~4x and possibly the size-split zeros — mentioning in case it localizes the bug.
Questions
- Are the
GL2C_EA_*_<size> derived counters expected to work on gfx12, or are they gfx9-only definitions that happen to be listed?
- If unimplemented: is there any counter route on RDNA4 for DRAM request-size distribution?
Summary
On gfx1201 (RDNA4, Radeon AI PRO R9700), the GL2C EA request-size-split counters —
GL2C_EA_RDREQ_32B,GL2C_EA_RDREQ_64B,GL2C_EA_RDREQ_128B,GL2C_EA_WRREQ_64B— always collect zero, while the base GL2C counters (GL2C_HIT,GL2C_MISS,GL2C_EA_RDREQ,GL2C_EA_WRREQ) andSQ_WAVEScollect healthy values in the same run. All documented preconditions are satisfied, so this looks like the size-split variants are unimplemented or mis-plumbed for gfx12 rather than an environment problem.Environment
power_dpm_force_performance_level = profile_standardon the measured GPU (verified — the AUTO/perfmon-clock trap is handled)amdgpu.ppfeaturemask=0xffffffff(default was0xfff7bfff; explicitly tested both — no effect on this symptom)Reproduction
All four counters in the second group are listed by
--list-availand accepted without error; every dispatch row reports 0 for them. Same-run first-group totals (LLM decode workload, for scale):GL2C_HIT61.2M,GL2C_MISS18.9M,GL2C_EA_RDREQhealthy and consistent with hit/miss,SQ_WAVES2.77M.Secondary observation (same setup)
Base GL2C counter absolute values appear to under-report by a roughly constant ~4x versus hardware-timestamp-derived bandwidth on the same kernels (ratios are self-consistent; absolute magnitudes are not). If GL2C is instanced on gfx1201 and only a subset of instances is sampled, that would explain both the ~4x and possibly the size-split zeros — mentioning in case it localizes the bug.
Questions
GL2C_EA_*_<size>derived counters expected to work on gfx12, or are they gfx9-only definitions that happen to be listed?