Skip to content

perf(rocke): add opt-in gfx942 BF16 D128 K LDS double buffering and V register prefetch - #13205

Merged
AviralGoelAMD merged 9 commits into
ROCm:developfrom
Parthiv911:users/Parthiv911/rocke/gfx942-dense-cfvst-kdb-vpf
Nov 2, 2026
Merged

AviralGoelAMD merged 9 commits into
ROCm:developfrom
Parthiv911:users/Parthiv911/rocke/gfx942-dense-cfvst-kdb-vpf

Conversation

@Parthiv911

@Parthiv911 Parthiv911 commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

This PR introduces opt-in K LDS double buffering and V register prefetch for gfx942 BF16 D128 dense causal attention, on the CFVST body.

CFVST status: since #14367 (merged into this branch), use_cfvst=None already resolves CFVST on for BF16 D128 on develop; this PR does not change that default. Measurements below were taken at cc84e262, before that merge, when production resolved CFVST off — so "production default (CFVST off)" rows describe that commit, and the bench now pins use_cfvst=False for its CFVST-off arms.

JIRA ID: AICK-1900

Benchmarking, profiling and tracing highlighted bottlenecks in:

  1. V read from LDS: V was stored in traditional layout in LDS. Narrow loads.
  2. Allocation of LDS per WG (33KB). Max limit per CU is 64KB. This limits WG occupancy in CU to 1 while leaving 31KB of LDS unused.
  3. Stalls at sync point for loading K and V tiles before MFMA.

We implemented following optimizations:

  1. Make CFVST legal and validated on bf16 (it is the D128 default on develop since perf(rocke/attention): GPU-time optimizations for unified and dense forward attention on gfx942/gfx950 #14367).
  2. K LDS Double Buffering + V register pre-fetching.

These optimizations are independently selectable through kernel-spec knobs, with the combined configuration accessible through explicit tuning selection and the full tuning space. Default dispatch behavior and the curated production tuning policy remain unchanged.

Case study at

dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md

Performance Gains and Ablation: Each Configuration vs. Production Dispatch

Benchmarked at cc84e262 on a clean checkout (the PR head adds docs only; --verify-provenance passes), gfx942 with 304 CUs, twelve persistent shapes. All 546 FP32-reference checks passed. Two min–max ranges include a single slow round of one arm, kept as measured (see the case study).

B S Hkv CFVST CFVST + KDB CFVST + VPF CFVST + KDB + VPF Full + LDS pad4 + causal split CFVST min–max CFVST + KDB min–max CFVST + VPF min–max CFVST + KDB + VPF min–max Full + LDS pad4 + causal split min–max
1 1024 8 8.74% 11.92% 15.57% 15.96% 18.98% 6.51% to 11.12% 8.96% to 12.98% 14.32% to 16.58% 14.02% to 18.54% -405.47% to 20.04%
1 1024 16 9.27% 11.30% 14.62% 15.64% 16.78% 7.98% to 11.34% 10.86% to 13.14% 13.91% to 15.96% 15.41% to 17.55% 16.07% to 18.67%
1 2048 8 10.94% 13.24% 15.70% 17.90% 20.99% 10.42% to 11.35% 12.24% to 14.11% 15.42% to 16.29% 17.32% to 18.37% 19.95% to 21.62%
1 2048 16 11.01% 13.15% 15.13% 17.12% 20.21% 9.93% to 11.89% 11.96% to 14.04% 10.72% to 16.43% 15.44% to 17.95% 19.67% to 20.53%
1 4096 8 9.52% 11.61% 13.75% 15.43% 18.76% 8.74% to 10.01% 11.20% to 12.31% 12.92% to 14.96% 15.02% to 18.43% 18.42% to 19.10%
1 4096 16 9.58% 11.21% 14.17% 15.24% 17.86% 9.16% to 9.73% 9.84% to 12.31% 13.34% to 14.82% 14.50% to 16.03% 17.31% to 21.74%
1 8192 8 10.12% 12.30% 15.02% 16.54% 20.46% 9.76% to 10.33% 11.84% to 12.48% 14.94% to 15.27% 16.35% to 16.64% 20.24% to 21.35%
1 8192 16 9.89% 12.04% 14.28% 16.24% 20.56% 9.65% to 9.98% 11.83% to 12.46% 13.52% to 14.93% 15.87% to 16.66% 20.32% to 20.66%
1 16384 8 10.41% 11.77% 15.31% 16.37% 21.34% 9.89% to 10.69% 11.32% to 12.25% 15.03% to 15.49% 15.97% to 16.58% 21.11% to 21.41%
16 4096 8 9.36% 10.42% 13.85% 15.10% 18.56% 9.36% to 9.50% 10.21% to 10.67% 13.65% to 14.06% 14.96% to 15.26% 18.37% to 18.79%
16 4096 16 8.87% 11.27% 13.80% 15.12% 17.78% 8.77% to 9.07% 11.17% to 11.45% 13.64% to 14.01% 15.03% to 15.37% 17.69% to 17.84%
16 8192 8 10.67% 12.46% 15.70% 17.19% 20.53% 10.48% to 10.69% 12.34% to 12.69% 15.55% to 15.73% 17.01% to 17.35% 19.97% to 20.64%

Register usage at the benchmarked HEAD

gfx942, B1 S4096 Hq32 Hkv8 bf16 D128 causal, persistent-304, llvm23, from the HSACOs timed in the benchmark run at cc84e262 (static_resources.csv). The waves_per_eu=2 cap is 256 VGPRs. Every B arm is spill-free with 0 B scratch on all twelve benchmarked shapes.

variant VGPR VGPR / SGPR spills scratch B
B1 CFVST off (production default at cc84e262) 194 0 / 0 0
B2 CFVST 225 0 / 0 0
B3 CFVST + KDB 230 0 / 0 0
B4 CFVST + VPF 230 0 / 0 0
B5 CFVST + KDB + VPF 230 0 / 0 0
B6 + lds_row_pad=4 230 0 / 0 0
B7 + lds_row_pad=4 + causal_diag_split=True 232 0 / 0 0

KERNEL_AUTHORING.md checklist

Core DoD -- every change

1. Add test coverage

a. Numeric parity

dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py
Test cases added appropriately

b. problem -> spec

Applicable to the explicit opt-in tuning path. This PR does not change the default production dispatch policy.

The optimizations are selectable through tuning_spec_with_knobs(req, "gfx942_dense", knobs), including CFVST off, K LDS double buffering, V register prefetch, and the combined configuration.

Selection, default preservation, legality, and tuning-ID replay are covered by library/tests/dispatch/attention/test_tuning_space.py, particularly TestGfx942DenseTuningSpace.test_bf16_cfvst_kdb_vpf_sweep_and_explicit_selection.

c. spec -> IR

Ran dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py for llvm20, llvm22, llvm23 and llvm24.
The test compares SHA-256 hashes of Python-lowered LLVM IR against per-flavor golden fixtures. Coverage includes CFVST, KDB, VPF, their combined configuration, persistent execution, and LSE variants.
The goldens pass through both engines in strict mode (ROCKE_BACKEND=both), and check_byte_identity.py is green at all four flavors.

d. re-blessed golden since emission changed

reblessed and tested by c above.

2. run_checks.py green on the platforms in the testing matrix

dnn-providers/hip-kernel-provider/rocke/tools/run_checks.py

At the PR head on gfx942, each file run separately: test_attention_dense_gfx942.py 377 passed, _golden.py 3 passed, _lds.py 182 passed, dispatch/attention/test_tuning_space.py 55 passed (264 subtests), _numeric.py 238 passed (0 skipped).

3. Correctness before speed

Numeric tests already done above in 1.a.

5. Docs

Case study at dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md

6. Hygiene

No such files in PR

DoD by change type

D. Perf optimization (no new feature)

a. Step 0 exhaustive lever sweep before concluding a gap is structural

Conducted non exhaustive lever sweep. Methodology and results available in case study.md.

b. Same-session A/B ratios (median of ≥3) at production-representative scale; absolute µs treated as illustrative

Methodology followed and numbers provided above and in case study.

c. Replayable case study + runbook/measured-results update

replayable case study: case study at dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md

runbook: lever heuristics added to platform/dsl_docs/optimization/optimization_runbook.md §16.1

measured-results update: NA — measured_results.md is a frozen archive; results are in the case study.

d. Honest losses recorded, not just wins

No regression against production dispatch at the twelve measured shapes. At B=1, S=1024/2048 the earlier twelve-shape Step-0 sweep's winners (non-persistent) outperformed the pipeline; recorded as a loss in the case study.

Historical review fixes (pushed by @AviralGoelAMD, 6e35a8a6d3a..8dec2cd5ce8)

Merges develop (including #12620, gfx942 dense sinks) and addresses @aosewski's review comments 2-6. The changes are scoped to those comments.

Area / files Crux of change Review comment
kernels/gfx942/attention_dense.py (lse_store) Merge resolution: final running max m_i plus develop's sinks-aware row_has_mass. The pipeline's loop.results binding is renamed loop_res, so a stale res[0] read fails at build time. r4269756145
kernels/gfx942/attention_dense.py (supports_attention_dense) Rejects use_sinks on the bf16 CFVST and lds_num_buffers=2 paths. #12620 removed the blanket sinks rejection, and sinks x CFVST/KDB-VPF has no golden or numeric coverage. r4269756158
tests/test_attention_dense_gfx942.py 3 rejection rows: CFVST + sinks, KDB/VPF + sinks, KDB/VPF + sinks + LSE + persistent. r4269756158
tests/golden/*.json, tests/test_attention_dense_gfx942_golden.py Union of both sides. No existing hash changes, nothing re-blessed. r4269756145
Case study Device identifier instead of a product name; H1 and a scoped opening; bounded claim (10.1-16.3% at the 12 measured configurations); register-usage table at two toolchains. r4269756167, r4269756182, r4269756187
_use_cfvst and module docstrings Qualitative; they point to the case study instead of claiming that bf16 CFVST always spills. r4269756187
tests/test_attention_dense_gfx942.py (_INJECTIVITY_BASES) Three bases start with the pipeline on (lds_num_buffers=2: plain, iglp, persistent), so the kernel-name injectivity check perturbs every knob inside the pipeline body. r4269756221
kernels/gfx942/attention_dense.py comments and docstrings Describe the behavior directly instead of relative to develop ("upstream" / "historical" / "experiment"). r4269756282
tests/test_attention_dense_gfx942_numeric.py Odd n_up > 1 (the epilogue reads K slot 0 after a loop iteration): (256, 192) in the strict pipeline test, and a block_m=64 knob row. r4269756213
tests/test_attention_dense_gfx942_numeric.py Persistent pipeline tests run on a 3-workgroup grid (more than two work items per workgroup, ragged last round), so the LDS hand-off between work items is exercised. r4269756192
Module docstring, builders/gfx942/attention/prefill/README.md The NBUF=1 / "bf16 CFVST rejected" records are updated in place; the README gains an Opt-in table that links the case study. r4269756276
tests/test_attention_dense_gfx942_numeric.py (_COHORT) torch.testing.assert_close (atol = rtol = per-dtype tol) instead of a raw max-abs bound that output rounding mostly consumes in bf16. r4269756203
kernels/gfx942/attention_dense.py (supports_attention_dense), tests, golden lds_num_buffers=2 gated to block_n=64, where it was measured. At block_n=32 the second K slot lowers occupancy at block_m=128 on both toolchains. The bn32 pipeline golden case is removed. r4269756233

Register usage: ROCm 7.1 vs ROCm 10

gfx942, B1 S4096 Hq32 Hkv8 bf16 D128 causal. Values come from the code-object notes (.vgpr_count / .vgpr_spill_count / .private_segment_fixed_size). The waves_per_eu=2 cap is 256 VGPRs.

variant ROCm 7.1 comgr, llvm20: VGPR / spills / scratch B ROCm 10 SDK comgr, llvm23: VGPR / spills / scratch B
bf16 CFVST off (default at cc84e262) 243 / 0 / 0 219 / 0 / 0
bf16 use_cfvst=True 256 / 0 / 0 234 / 0 / 0
+ lds_num_buffers=2 256 / 4 / 20 230 / 0 / 0
+ emit_lse=True 256 / 5 / 24 230 / 0 / 0
+ persistent=True, num_persistent=304 256 / 16 / 68 256 / 7 / 32
  • Spilling depends on the toolchain. At llvm23 the KDB/VPF pipeline fits; only the persistent grid spills.
  • Control-flow (dominator) analysis of the disassembly: in every spilling variant, the inner KV loop has 0 scratch instructions. On the persistent grid, the reloads run once per work item.
  • llvm22 was not measured.

Validation of e3ccb2e37ce

Gate Result
GPU numeric, ROCm 7.13 image, gfx942 304-CU test_attention_dense_gfx942_numeric.py -k "cfvst_pipeline or kdbvpf or lse or sink": 165 passed
GPU numeric, ROCm 10 (llvm23), gfx942 304-CU Same selection: 165 passed
CPU, gfx942 dense/attention 610 passed, 10 skipped (GPU-only), 304 subtests passed
Golden IR, llvm20/22/23 (Python lowerer) Passes; 0 changed hashes. 37 cases per flavor after the merge, 36 after kdbvpf_d128_bf16_bn32 was removed in 8dec2cd
Merge tripwires (mutation runs) res[0] without the rename: lse_kdbvpf_d128_bf16_causal drifts in all 3 flavors. res[0] with the rename: UnboundLocalError. row_has_key: lse_sink_persist_empty_window_d128_bf16 drifts in all 3 flavors. New rejection rows: 3 fail with the gate removed.
pre-commit run --from-ref origin/develop --to-ref HEAD Passed

@Parthiv911
Parthiv911 requested review from a team as code owners October 6, 2026 21:40
@github-actions github-actions Bot added documentation project: hip-kernel-provider rocke-lib: attention Touches rocKE library attention/FMHA kernels labels Oct 6, 2026
@therock-pr-bot

therock-pr-bot Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

✅ All Checks Passed — Ready for Review

Check Status Details
📝 PR Description ✅ Pass —
⛔ Forbidden Files ✅ Pass —
🧪 Unit Test ✅ Pass —
🔎 pre-commit ✅ Pass —
🚫 Draft PR 🔜 To Be Enabled —
🚩 Feature Flag 🔜 To Be Enabled —
📊 Code Coverage 🔜 To Be Enabled —
🤖 therock-pr-bot ✅ Pass —

🎉 All checks passed! This PR is ready for review.

📖 Need help? See the Policy FAQ for details on every check and how to fix failures.

🙋 Wish to Override Policy?

@therock-pr-bot

therock-pr-bot Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

🎉 All checks passed! This PR is ready for review.

@assistant-librarian assistant-librarian Bot added the external contribution Code contribution from users community.. label Oct 6, 2026
@AviralGoelAMD

Copy link
Copy Markdown
Contributor

@Parthiv911 Awesome, work! Let us use ignore the missing ticket id failure for now.

@aosewski aosewski 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.

Thanks for this. The K double-buffer plus V register prefetch is a clean design. Carrying V[j+1] in VGPRs across softmax/PV makes the overlap a data dependency instead of a scheduling hint, and the single [2, BN, LDROW] K allocation means the smem_pool packer can't fold the two slots onto each other. With the block_n-derived V pad, the bn64 footprint is 2×17,408 + 16,384 = 51,200 B, which fits. I'd like to see this land, but four things need to change first.

1. Rebase onto develop's kernel instead of overwriting it (blocking)

The merge base (8aa09e65b7e, 2026-10-06) is current, but the PR head drops develop features unrelated to KDB/VPF. It looks like an older copy of kernels/gfx942/attention_dense.py was used as the starting point. Reverted:

  • #12284: runtime batch/seqlen (runtime_shape, runtime_param_fields, the shape kernel params, runtime num_records). Develop still reads spec.runtime_shape in builders/gfx942/attention/prefill/attention_dense_prefill.py:359 and benchmarks/gfx942/attention/prefill/benchmark_dense_prefill_live.py:203. Both raise AttributeError with this PR.
  • #11803: sliding-window support. It is rejected again, and the 5 SWA goldens (swa_*, dispatch_swa_*, persist_swa_*) are deleted.
  • #12719: the codegen knobs (lds_num_buffers, iglp_mode, pv_loop_order, o_store_width, pv_priority, pv_sched_fence_mask, causal_diag_split). dispatch/attention/axes.py and dense_rules.py still sweep them.
  • The gfx942 causal_bottom_right rejection guard.
  • _use_exp2_fast goes back to the seqlen < 4096 gate. Develop replaced it with a compile-time persistent-grid gate because a shape-dependent body collides with the runtime-shape cache key (see the develop docstring).

About 13 tests covering these features are deleted with them. Please re-apply only the CFVST / KDB / VPF changes on top of develop's file and restore the removed tests and goldens.

2. Gate the pipeline so the fp16 D128 path stays byte-identical

_tuning_name_tags adds kdbvpf1 whenever CFVST is on, so the fp16 D128 kernel also changes codegen and its goldens were re-blessed. All measurements are bf16. Please do one of the following:

  • put KDB/VPF behind the existing lds_num_buffers knob (=2 meaning K-only double buffer). Its current comment, "NBUF=2 only fits at block_n=32", assumed K and V both doubled, and this PR shows the K-only case fits at bn64. This also makes it a sweepable dispatch axis instead of always-on; or
  • limit it to bf16 and keep fp16 byte-identical; or
  • add fp16 D128 A/B ratios showing no regression, ideally on both MI300X and MI300A.

3. Measure short sequences and say which GPU part was used

The smallest benchmarked S is 4096. bf16 D128 is furthest behind at S=2048, which is also where _use_exp2_fast turns off. Please add S=2048 (and ideally 1024) to the ratio table and state the GPU part(s). Defaults in this kernel have so far been confirmed on both 228-CU and 304-CU gfx942 before adoption. Keep it to ratios only; no absolute numbers.

4. Correctness and synchronization evidence, plus the ticket reference

  • test_attention_dense_gfx942_numeric.py checks bf16 at 4e-2, which is loose enough to hide a dropped KV tile. Please validate the new pipeline at bf16 below 1e-2 (fp16 below 2e-3) against the fp32 SDPA reference, including n_up == 1 (zero-trip main loop) and the persistent grid.
  • gfx942 sets FeatureBackOffBarrier, so the lgkm drain before each s_barrier has to be checked in the ISA, not only in the emitter. Please attach (or describe) an llvm-objdump excerpt of the loop showing s_waitcnt lgkmcnt(0) before both in-loop barriers and before the epilogue barrier.
  • Please add JIRA ID: AICK-1900 to the description so the policy check passes and the work is tracked.

Happy to re-review once rebased.

@Parthiv911
Parthiv911 force-pushed the users/Parthiv911/rocke/gfx942-dense-cfvst-kdb-vpf branch from ecc1c70 to 072965b Compare October 9, 2026 04:56
@Parthiv911

Parthiv911 commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor Author

@aosewski Thank you for the detailed review! I have addressed the 4 points and highlighted a few details.

Few details worth highlighting:

  1. After below changes, setting lds_num_buffers=2 selects K Double Buffering + V reg pre-fetch. However, V reg prefetch does not involve adding anouther V buffer in LDS. One option could be to introduce a separate knob for V reg pre-fetch, and to split lds_num_buffers into 2 separate knobs: lds_num_buffers_K and lds_num_buffers_V. That would allow this optimization to use existing CFVST knob, lds_num_buffers_K, and V_reg_prefetch knobs, while pre-serving knob semantics. This is just a potential option. The current implementation uses lds_num_buffers and CFVST knobs only.
  2. The knobs for CFVST and lds_num_buffers are available through Gfx942AttentionDenseSpec. They have not been added to lever sweep or to dispatch.

1. Rebase onto develop's kernel instead of overwriting it (blocking)

Pulled from develop and applied changes on top of it.

2. Gate the pipeline so the fp16 D128 path stays byte-identical

Fixed kernel naming. 'kdbvpf1' kernel-name suffix is now emitted only when lds_num_buffers=2. FP16 goldens unchanged. Selected options a and b.
1. (a) By default, CFVST=false and lds_num_buffers=1. But setting lds_num_buffers=2 selects K Double Buffering + V reg pre-fetch.
5. (b) Optimizations allowed only for BF16. FP16 rejects lds_num_buffers=2

3. Measure short sequences and say which GPU part was used

Added S=1024 and 2048. Hardware: AMD Instinct MI300X VF (gfx942, 304 CUs). Results are from the 304-CU part only; no 228-CU measurements are reported. Updated case study.md

4. Correctness and synchronization evidence

Correctness

Tightened tolerance in test_dense_numeric_vs_fp32_sdpa, test_attention_dense_gfx942_numeric.py. BF16 1e-2, FP16 2e-3. Added test_cfvst_pipeline_strict_numeric.

Synchronization Evidence

Analyzed ISA of kernel . assembly.txt
Found 5 s_barrier instructions.

Barrier location Address Immediately preceding wait Result
Epilogue 0x2EEC s_waitcnt lgkmcnt(0) at 0x2EE8 Pass
Persistent work-item boundary 0x3AA8 s_waitcnt vmcnt(0) at 0x3AA4 See analysis below
Prologue 0x3D20 s_waitcnt lgkmcnt(0) at 0x3D1C Pass
In-loop barrier 1 0x4E88 s_waitcnt lgkmcnt(0) at 0x4E84 Pass
In-loop barrier 2 0x4F14 s_waitcnt lgkmcnt(0) at 0x4F10 Pass

First in-loop, second in-loop, prologue, and epilogue s_barrier instructions have s_waitcnt lgkmcnt(0) before them. The s_barrier at 0x3AA8 has s_waitcnt vmcnt(0) at 0x3AA4.

The barrier at 0x3AA8 is a workgroup synchronization point between successive attention work items. To store current work item outputs to HBM, global_store_dwordx2 is used. Hence it needs s_waitcnt vmcnt(0) to sync.

Checking for unfinished LDS operations that could conflict with the next work item

There are 2 paths that reach 0x3AA4.

Path A — Normal completion of an attention work item
0x2EE8 — s_waitcnt lgkmcnt(0)
0x2EEC — s_barrier
Output processing and global-memory stores; no new LGKM-producing instructions
0x3AA4 — s_waitcnt vmcnt(0)
0x3AA8 — s_barrier

Path B — Initial entry into the persistent-work-item loop
0x1EBC — s_waitcnt lgkmcnt(0)
0x1FB0 — branch to 0x3A40
Initial setup skips the preceding attention computation; no intervening LGKM-producing instructions
0x3AA4 — s_waitcnt vmcnt(0)
0x3AA8 — s_barrier

Path A had the epilogue LGKM drain at 0x2EE8. Path B had an earlier LGKM drain during initialization at 0x1EBC. Both converge without issuing another LGKM-producing operation before 0x3AA8.

The additional branch at 0x3D24, which can return to 0x1FB4, belongs to the subsequent attention-computation control flow. It does not provide a third direct entry to 0x3AA8.

@Parthiv911

Copy link
Copy Markdown
Contributor Author

The PR description and the response to review have been updated to reflect the latest changes.

@aosewski

Copy link
Copy Markdown
Contributor

@Parthiv911 on your offer to split lds_num_buffers: I'd like that, and I'd like both knobs wired into dispatch rather than left spec-only.

  • Separate switches. Split it into a K-buffer depth (lds_num_buffers 1/2) and a V register-prefetch bool. Then the KDB-only and VPF-only arms in the ablation (3.22% / 2.46%) can be reproduced from the tree, and the tuner can choose each one independently.
  • Tuning axes. Add both to _GFX942_DENSE_AXES and remove lds_num_buffers from the gfx942 untunable set (axes.py L165). Add scope rules in dense_rules.py so they're only offered where supports_attention_dense accepts them.
  • bf16 CFVST. The use_cfvst axis is currently scoped by s.resolved_use_cfvst() (dense_rules.py L124-126), which is False for every bf16 base, so the sweep never tries bf16 D128 CFVST either.

39416d4 already had most of this wiring (_values("lds_num_buffers", 1, (2,)), use_cfvst scoped to head_size == 128). It would just need the matching tuning-space tests, showing the new axes appear for bf16 D128 causal bases and nowhere else.

@AviralGoelAMD

Copy link
Copy Markdown
Contributor

@aosewski, follow-up on point 1 (rebase): the branch now merges current develop (1bdda47a5f1, including #12620 sinks) in 375fa1a. Conflicts were only in lse_store, the gfx942 golden JSON, and the golden test, resolved as you described in the inline threads. A rerun at e3ccb2e shows the features from your list present again: runtime_shape, sliding window, the #12719 knobs, causal_bottom_right, and the compile-time _use_exp2_fast gate.

Point 3: all numbers are from the 304-CU gfx942 part. No 228-CU measurement exists yet. The configuration is opt-in (use_cfvst=True, lds_num_buffers=2), not a new default.

Inline replies follow.

@cgmillette cgmillette 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.

PR #13205 — bf16 D128 CFVST, K double buffering, and V prefetch in gfx942 dense prefill (Parthiv911, AICK-1900) — 🟠 REJECT: evidence open, spec-only

Prior item Status
aosewski R1 #1: rebase dropped develop features, tests, goldens 🟢 FIXED — develop merged; runtime shape, SWA, knobs, goldens back; merges clean today
aosewski R1 #2: keep fp16 D128 byte-identical 🟢 FIXED — bf16-only opt-in; golden +4 cases, 0 hashes changed (ran ×3 flavors)
aosewski R1 #3: add S=1024/2048, name the GPU part 🟢 FIXED — rows added; 304-CU only (opt-in, 228-CU deferred)
aosewski R1 #4: strict tol (n_up=1, persistent), ISA lgkm drain, JIRA ID 🟢 FIXED — strict tests added; ISA barrier table posted; AICK-1900 in body
aosewski R2 code/test threads (×11: LSE m_i, sinks gate, spill table, NP=3, _COHORT, odd n_up, injectivity, bn64 gate, docs, wording) 🟢 FIXED — verified in code; dense CPU + golden pass (ran)
aosewski R2: case-study scope (tolerance, baseline spec) 🟠 PARTIAL — H1 + bounded claim done; both still "not yet recorded"
aosewski R2: sweep provenance, ablation arms/shape, baseline build, replay/stack (×4) 🟠 OPEN — unanswered, text unchanged; "ROCm 10" stack now also in register table
aosewski R2 + 10-14: dispatch reachability; split knob, wire axes 🟠 OPEN — still spec-only; bf16 CFVST undocumented; dense_rules.py:124 comment stale; no follow-up issue
Bots / CI 🟡 pre-commit + superbuild green; TheRock Windows = develop's gfx1201 golden; Linux tests skipped → GPU tests unrun at head
Our checks 🟢 Merge clean; failures = develop's (277 shared, 0 new); dense + dispatch 1007 pass (ran)
# Sev file:line Finding
N1 🟠 tests/test_attention_dense_gfx942_numeric.py:1309,1386 Pipeline tests keep raw max-abs <1e-2 (~1e-3 over bf16 rounding; _COHORT fix skipped); perf-only → assert bit-identity vs nbuf=1
N2 🟡 kernels/gfx942/attention_dense.py:900,512 _use_v_swizzle now dead; docstrings still name it the single policy point

Utility: 🟠 Mixed — sound opt-in pipeline; unreachable from dispatch, shipped-baseline gain unproven.


Legend: 🔴 blocking · 🟠 should-fix · 🟡 minor nit · 🟢 info/good

@yraparti yraparti 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.

rocKE checklist review

ROCm/rocm-libraries#13205 · 7d794701d366 · model gemini-4-argon, fallback gpt-5.5

FAIL · graded 220/220 · BLOCKER 3, HIGH 11, MEDIUM 9, LOW 1, NEEDS-INFO 7

The diff was truncated before grading. Items that needed a missing hunk are NEEDS-INFO.

Findings

  • BLOCKER §E · dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:284 · Update the test specs, expected kernel-name tags, and golden hashes in test_attention_dense_gfx942.py, test_attention_dense_gfx942_golden.py, test_attention_dense_gfx942_numeric.py, and attention_dense_gfx942_ir_sha256.json to pass v_reg_prefetch=True where the full pipeline is intended and re-run the test suites.
  • BLOCKER §G · dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1008 · Update test_attention_dense_gfx942.py to add "v_reg_prefetch": (True, False) to _SPEC_PERTURBATIONS, test kdb1/vpf1 tags and v_reg_prefetch=True in test_bf16_cfvst_kdb_vpf_are_separate_opt_in_variants, and re-run tools/run_checks.py plus ROCKE_LLVM_FLAVOR=llvm23 golden checks.
  • BLOCKER §K · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Classify v_reg_prefetch in library/dispatch/attention/dense_rules.py (e.g. add it to DENSE_UNTUNABLE_KNOBS alongside lds_num_buffers or expose it as a KnobAxis) and update library/tests/dispatch/attention/test_tuning_space.py and library/dispatch/AGENTS.md to match.
  • HIGH §A · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Add v_reg_prefetch=True to the kdbvpf golden cases (or add dedicated vpf golden cases) in test_attention_dense_gfx942_golden.py and record their hashes in attention_dense_gfx942_ir_sha256.json for all LLVM flavors.
  • HIGH §B · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Update test_attention_dense_gfx942.py, test_attention_dense_gfx942_golden.py, and test_attention_dense_gfx942_numeric.py to match the decoupled lds_num_buffers and v_reg_prefetch knobs (testing (2, False), (1, True), and (2, True) as well as 'kdb1'/'vpf1' tags), or gate supports_attention_dense to require _use_kdb(spec) == _use_vpf(spec) if only the combined mode is intended to be supported.
  • HIGH §C · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735 · Update test_attention_dense_gfx942.py (and test_attention_dense_gfx942_golden.py / test_attention_dense_gfx942_numeric.py / README.md / AGENTS.md) to reflect the split kdb1 / vpf1 tags and include v_reg_prefetch in _SPEC_PERTURBATIONS, type/mode rejection tests, and pipeline test cases.
  • HIGH §D · dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:114 · Put the knob on the KernelSpec and delete the environment read.
  • HIGH §E · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735 · Update all stale kdbvpf1 / _use_kdb_vpf references across tests and docs to use kdb1, vpf1, and v_reg_prefetch=True, remove the dead _use_kdb_vpf helper, and fix the replay path in gfx942_dense_cfvst_kdb_vprefetch_case_study.md:241.
  • HIGH §E · dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:7 · Reconcile the PR description tables and gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-10 so every reported ratio comes from a single provenance-complete run with bounded wording.
  • HIGH §G · dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1282 · Add v_reg_prefetch=True variants (both alone with lds_num_buffers=1 and combined with lds_num_buffers=2) to test_cfvst_pipeline_strict_numeric, _CFVST_KNOB_CASES, and test_kdbvpf_pipeline_lse in test_attention_dense_gfx942_numeric.py.
  • HIGH §G · dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:7 · Reconcile all prose and tables across the PR body, gfx942_dense_cfvst_kdb_vprefetch_case_study.md, README.md, and test docstrings/cases so the numbers match a single measurement record, remove the stale "Not yet recorded" sentence, and accurately reflect that lds_num_buffers=2 and v_reg_prefetch=True are separate knobs.
  • HIGH §G · dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:187 · Wire the winning configuration (use_cfvst=True, lds_num_buffers=2, v_reg_prefetch=True) into the gfx942 dense selector/dispatch policy (and C++ twin if applicable) for the validated BF16 D128 causal shapes, or scope the PR title/claims strictly to adding experimental spec-only plumbing without claiming a shipped perf gain.
  • HIGH §G · dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1022 · Update test_attention_dense_gfx942.py:1002-1024, _INJECTIVITY_BASES (353-380), test_attention_dense_gfx942_golden.py:284-298, and test_attention_dense_gfx942_numeric.py:1286,1344-1386,1436 to pass v_reg_prefetch=True on the KDB+VPF cases and assert the kdb1/vpf1 tags produced by _tuning_name_tags.
  • HIGH §K · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Update Gfx942DenseKnobSpace.defaults() in library/dispatch/attention/dense_rules.py if v_reg_prefetch is untunable/defaulted, and document whether config_key / TUNING_ID_VERSION is affected.
  • MEDIUM §D · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:893 · Update dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py to add 'v_reg_prefetch': (True, False) to _SPEC_PERTURBATIONS, set v_reg_prefetch=True on the *_kdbvpf bases/test cases, and assert on the 'kdb1' and 'vpf1' kernel-name tags instead of 'kdbvpf1'.
  • MEDIUM §E · dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:473 · Query the device through rocke.runtime.hip_module instead of importing torch.
  • MEDIUM §E · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Document v_reg_prefetch alongside lds_num_buffers in library/builders/gfx942/attention/prefill/README.md and library/dispatch/AGENTS.md (and update runbook knob documentation if applicable).
  • MEDIUM §F · summary · Retitle as type(scope): summary, 10–80 characters, scope [a-z0-9-]+.
  • MEDIUM §G · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Add unit, golden, and numeric test cases that explicitly set v_reg_prefetch=True (with lds_num_buffers=1 and lds_num_buffers=2) and verify type/mode rejection for v_reg_prefetch.
  • MEDIUM §G · dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:126 · Fix platform/Python to platform/python in bench_rocke_5way_specs.py:126, update the replay command path in gfx942_dense_cfvst_kdb_vprefetch_case_study.md:240-242 to match the shipped script location, and run the script end-to-end from the repo root without pre-populated PYTHONPATH.
  • MEDIUM §G · dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:74 · Add SGPR counts and static ISA instruction-count deltas (e.g., ds_read/ds_write, s_waitcnt, s_barrier) per variant to the register/codegen table in gfx942_dense_cfvst_kdb_vprefetch_case_study.md:82-89.
  • MEDIUM §J · dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:194 · Update README.md:194 and gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3 to name both lds_num_buffers=2 and v_reg_prefetch=True (or add a separate row in README.md for v_reg_prefetch=True) so the docs match the independent symbols in Gfx942AttentionDenseSpec.
  • MEDIUM §K · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Add "v_reg_prefetch": False to Gfx942DenseKnobSpace.defaults() in library/dispatch/attention/dense_rules.py (or declare it as a knob axis with its base default).
  • LOW §J · dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:7 · Remove the stale 'Not yet recorded' sentence at gfx942_dense_cfvst_kdb_vprefetch_case_study.md:7-10 and fix the replay command path at line 241-243 to library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py.

Needs info

  • §A.3 dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds v_reg_prefetch and updates supports_attention_dense (lines 1218-1267), while C++ selector/spec parity files are not in the diff and it is unclear from the diff if Gfx942AttentionDenseSpec has a C++ selector twin.
  • §E.14 The diff of dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py is truncated at line 2336 before the LSE epilogue merge resolution mentioned in the PR description.
  • §F.7 Diff is truncated and local pre-commit execution status is not included in the provided context (note also dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:194 has 3 blank lines before def _command_output).
  • §F.8 GitHub review thread states (bot/Copilot findings and resolution status) are not included in the provided diff context.
  • §G.12 The diff touches only the Python kernel builder dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py and does not show whether any C++ builder or selector exists for attention_dense on gfx942.
  • §K.5 dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1218-1267 relaxes supports_attention_dense to allow use_cfvst=True on bf16 D128 standard causal attention (without sliding_window, causal_diag_split, or use_sinks), but library/dispatch/attention/dense_rules.py is not in the diff to verify whether Gfx942DenseKnobSpace drop/refuse/validate rules for use_cfvst, use_v_swizzle, and v_row_pad on bf16 D128 remain consistent with assert_tuning_contract.
  • §K.6 dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:506-527 and :1218-1237 change use_cfvst, v_row_pad, and use_v_swizzle resolution and support for bf16 D128, but library/dispatch/attention/dense_rules.py and library/dispatch/attention/tuning_specs.py are not in the diff to verify whether KnobSpace.validate and policy-free spec construction match the new kernel support rules.

Section notes

  • §A: Note: test_bf16_cfvst_kdb_vpf_are_separate_opt_in_variants (test_attention_dense_gfx942.py:1022) and test_attention_dense_gfx942_golden.py:284-298 only set lds_num_buffers=2 without v_reg_prefetch=True after decoupling the two knobs.
  • §B: Test files (test_attention_dense_gfx942.py, test_attention_dense_gfx942_numeric.py) appear out of sync with attention_dense.py (e.g., expecting 'kdbvpf1' in kernel names when the emitter produces 'kdb1'/'vpf1', and never setting v_reg_prefetch=True).
  • §D: Part 1 of 2 (items 1-11). Note: test_bf16_cfvst_kdb_vpf_are_separate_opt_in_variants in test_attention_dense_gfx942.py is out of sync with the split kdb1/vpf1 tags and missing v_reg_prefetch coverage.
  • §D: Items 12-21 of Section D: PR adds opt-in spec-level knobs on Gfx942AttentionDenseSpec without changing dispatcher registration, priority, or default routing.
  • §E: Stale references and broken assertions remain after splitting kdb_vpf into separate lds_num_buffers and v_reg_prefetch knobs.
  • §F: PR metadata (branch, title, body) passes policy checks, and unit tests are updated with a small inconsistency between _tuning_name_tags (kdb1/vpf1) and test_attention_dense_gfx942.py (kdbvpf1) visible in the diff.

Graded with the rocKE PR checklist, one model pass per section. FAIL rows that sit on a diff line are inline comments.

§A graded 14/14
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1383 modifies only the Python-only gfx942 dense attention kernel emitter (C++ attention builder is only for unified_attention_2d_tiled_scalar).
2 N/A No core lowering-op or op-handler files (core/lower_*, core/ir) are modified in this PR.
3 NEEDS-INFO dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds v_reg_prefetch and updates supports_attention_dense (lines 1218-1267), while C++ selector/spec parity files are not in the diff and it is unclear from the diff if Gfx942AttentionDenseSpec has a C++ selector twin.
4 N/A No C++ kernel or selector twin is modified or exists for kernels/gfx942/attention_dense.py.
5 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:9 leaves existing golden hashes (such as default_d128_bf16_causal) unchanged while only adding new opt-in entries.
6 N/A This PR modifies a Python-only kernel family (gfx942 attention_dense) that has no C++ kernel emitter twin for cross-engine…
7 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1571 and 2199 guard the new pipeline behind USE_PIPELINE (USE_KDB or USE_VPF) and guard kbuf offsets behind kbuf is not None at line 1827, keeping covered default shapes byte-identical.
8 N/A No C++ files or C++-mirrored emitters are touched in this PR.
9 N/A No shared op-handler fix or lowerer-only architecture divergence is introduced in this PR.
10 FAIL dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 and 737 add v_reg_prefetch=True (emitting tag vpf1 and V-prefetch IR at line 2254) as an independent knob from lds_num_buffers=2, but dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:284-298 only sets lds_num_buffers=2 without v_reg_prefetch=True, leaving the v_reg_prefetch=True flag-on IR uncovered in attention_dense_gfx942_ir_sha256.json.
11 N/A No new IR ops are added in this PR.
12 N/A core/backend.py and ROCKE_BACKEND=both handling are not modified in this PR.
13 N/A LLVM IR lowering (.ll emission) and ROCKE_DEBUG_LOC handling are not modified in this PR.
14 N/A No classic helpers under helpers/ or platform/cpp/helpers/ are modified in this PR.
§B graded 6/6
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1218-1267 classifies unvalidated feature combinations on BF16 CFVST and lds_num_buffers=2/v_reg_prefetch=True with explicit NOT_YET_IMPLEMENTED: prefixes, distinguishing them from…
2 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1218-1267 and 1383-1395 keep supports_attention_dense as the single functional gate consulted by build_attention_dense while Gfx942AttentionDenseSpec.__post_init__ (lines 478-495)…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440-443 and 867 keep default routing and policies unchanged (lds_num_buffers=1, v_reg_prefetch=False, _use_cfvst False for bf16), so no model-zoo shape is demoted to a fallback.
4 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478-491 validates type(self.use_cfvst) is not bool, type(self.lds_num_buffers) is not int, and type(self.v_reg_prefetch) is not bool in Gfx942AttentionDenseSpec.__post_init__…
5 FAIL dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 and 1253-1267 open v_reg_prefetch=True (both standalone with lds_num_buffers=1 and combined with lds_num_buffers=2), and lines 735-738 emit 'kdb1'/'vpf1' kernel name tags, but dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:325,1021-1023, dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:284-298, and…
6 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1218-1267 updates supports_attention_dense to remove the old bf16 D128 CFVST spill policy rejection and instead gates only on hardware/algorithmic invariants (rows-per-DMA==1 at lines…
§C graded 10/10
# Verdict Evidence
1 PASS Shared logic and predicates are factored into named helpers _use_kdb, _use_vpf, _use_kdb_vpf, and softmax_pv in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:883-899 and…
2 PASS The new pipeline variants are controlled via spec knobs (use_cfvst, lds_num_buffers, v_reg_prefetch) inside the single build_attention_dense(spec) builder in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1379-1456, and the…
3 PASS Kernel naming uses codegen knob tags (kdb1, vpf1, cfvst1, vswz1) in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735-749 without embedding workload sizes.
4 PASS All kernel changes are properly scoped inside the gfx942-specific module dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:345-445 without touching shared common/ or other architectures' files.
5 PASS The diff touches only the gfx942 attention_dense kernel (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:114), its corresponding tests (dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:56)…
6 PASS softmax_pv is cleanly extracted in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2053-2127 so the existing single-buffer tile_body stays byte-identical (existing hashes unchanged in…
7 N/A This PR is a targeted performance optimization adding opt-in spec knobs rather than a standalone cleanup refactor.
8 PASS The PR extends existing Gfx942AttentionDenseSpec fields (use_cfvst, lds_num_buffers) and reuses existing DSL primitives (b.smem_alloc, b.sync_lds_only, _cfvst_load_v, _cfvst_store_v) in…
9 PASS Type-coercion validation (type(...) is not bool/int) is applied across all new/modified spec knobs (use_cfvst, lds_num_buffers, v_reg_prefetch) in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478-491, and use_sinks…
10 FAIL In dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735-738, _tuning_name_tags was widened to emit independent kdb1 and vpf1 tags instead of kdbvpf1, and v_reg_prefetch was added to Gfx942AttentionDenseSpec (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443), but dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1021-1023 still asserts "kdbvpf1" in gfx942_kernel_name(pipeline) (where pipeline only sets…
§D graded 21/21
# Verdict Evidence
1 FAIL dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:114 reads the environment
2 N/A No Capability declarations or candidate registrations are added or modified in this PR.
3 N/A No candidate _supports or admits methods in the dispatcher layer are touched by this PR.
4 PASS Spec helpers and supports_attention_dense(spec, arch) remain pure functions of the spec and explicit arch parameter with no host device probes (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1213-1267).
5 FAIL In dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:893, _use_kdb_vpf(spec) checks _use_kdb(spec) and _use_vpf(spec), and _tuning_name_tags (lines 735-738) emits 'kdb1' and 'vpf1', yet dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:999-1024 constructs pipeline = _spec(use_cfvst=True, lds_num_buffers=2) (where v_reg_prefetch defaults to False) and asserts _use_kdb_vpf(pipeline) and 'kdbvpf1' in gfx942_kernel_name(pipeline), which will fail…
6 N/A No cohort routing changes are made in this PR; the new pipeline modes are spec-level opt-ins that leave grid and block launch…
7 N/A No selector heuristics or hand-pinned routing overrides are added or modified in this PR.
8 N/A No cohort routing predicates are introduced or changed in this PR.
9 N/A No new KernelCandidate or architecture is registered in ATTENTION_ROUTE_REGISTRY or ATTENTION_EXECUTION_REGISTRY.
10 PASS The new fields (lds_num_buffers=2, v_reg_prefetch=True) are internal codegen/scheduling knobs rather than user-facing problem/request features, and dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:187-193 explicitly documents them as spec-only…
11 PASS The BF16 CFVST, KDB, and VPF changes are strictly opt-in (use_cfvst=None resolves to False for BF16, lds_num_buffers=1, v_reg_prefetch=False by default) and do not alter the auto dispatch default…
12 N/A This PR does not add or rename any dispatcher candidate, change candidate priority, or introduce a custom ranker.
13 N/A This PR does not modify CandidateRegistry.select, pin resolution, or any dispatch wrapper entry point.
14 N/A This PR does not modify KernelId caching keys or change the kernel argument ABI layout.
15 N/A This PR does not add a new dispatcher candidate or architecture module to the registry.
16 N/A This PR does not introduce a new operator family.
17 N/A This PR does not add a new dispatcher candidate or change problem-to-spec routing rules.
18 N/A This PR does not modify registry ratchets, torch bindings, or test exempt sets.
19 PASS dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:187-192 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:186-195 accurately document that lds_num_buffers=2 and bf16 use_cfvst=True are explicit opt-ins…
20 N/A This PR does not modify a problem-to-spec selector or a kernel family with a C++ selector/builder twin.
21 N/A This PR implements new opt-in kernel pipeline features (BF16 CFVST, K LDS double buffering, and V register prefetch) rather than…
§E graded 17/17
# Verdict Evidence
1 N/A This PR only modifies files under library/ and touches no files under platform/.
2 FAIL dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:473 adds import torch
3 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:224 imports torch lazily inside @​requires_gfx942_gpu test functions while non-GPU unit tests do not import torch.
4 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:474 imports downward from kernels and dispatch, and dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py adds no upward imports.
5 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:29 is a Python script using pathlib.Path and contains no hardcoded /tmp, nproc, or sudo calls.
6 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2009 preserves unused tuple unpacking with underscore prefixes (_d0, _t0) and golden hashes in…
7 FAIL dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds the v_reg_prefetch spec knob, but dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:194 and dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:187 omit v_reg_prefetch and describe lds_num_buffers=2 as enabling both K double buffering and V prefetch.
8 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:134 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:996 use descriptive references without Jira IDs, PR numbers, or GitHub handles in code or…
9 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:436 and accompanying test/doc files are all scoped to the gfx942 BF16 D128 CFVST, K double-buffering, and V prefetch change.
10 FAIL dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:284 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1022 were not re-run or updated after dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735 split kdbvpf1 into kdb1 and vpf1 and gated V prefetch on v_reg_prefetch=True.
11 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:1 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:186 are process-required deliverables…
12 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1218 explicitly scopes the opt-in knobs to the gfx942 dense kernel.
13 FAIL dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735 replaced the kdbvpf1 tag with kdb1 and vpf1 and split _use_kdb_vpf into _use_kdb and _use_vpf, but dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1002 and :1022 still construct pipeline = _spec(use_cfvst=True, lds_num_buffers=2) and assert _use_kdb_vpf(pipeline) and 'kdbvpf1' in gfx942_kernel_name(pipeline), and…
14 NEEDS-INFO The diff of dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py is truncated at line 2336 before the LSE epilogue merge resolution mentioned in the PR description.
15 PASS All parameters in modified helpers in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1824 (_async_load, load_pipeline_k, do_qk, softmax_pv, publish_prefetched_v) are used in their function bodies.
16 N/A This item governs reviewer severity grading rather than code in the pull request diff.
17 FAIL dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:7 states that the baseline arm's full spec and pre-timing correctness tolerance are 'Not yet recorded' (contradicting lines 148 and 166), and dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:436 notes that the 5-way ablation table in the PR body cannot be attributed to a recorded shape.
§F graded 12/12
# Verdict Evidence
1 PASS Branch users/Parthiv911/rocke/gfx942-dense-cfvst-kdb-vpf matches the recognized users/<user>/... prefix (and dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:114).
2 PASS branch users/Parthiv911/rocke/gfx942-dense-cfvst-kdb-vpf has a rocke path segment
3 FAIL title perf(rocke): bf16 D128 CFVST, K double buffering, and V prefetch in gfx942 dense prefill is 88 characters and does not match type(scope): summary with a 10–80 character length
4 PASS description is at least 30 characters and contains an issue reference
5 PASS test file dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py is in the diff
6 PASS All 10 files in the diff are Python, Markdown, or JSON golden hash files (e.g., dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5); no keys, certs, or secrets are added.
7 NEEDS-INFO Diff is truncated and local pre-commit execution status is not included in the provided context (note also dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:194 has 3 blank lines before def _command_output).
8 NEEDS-INFO GitHub review thread states (bot/Copilot findings and resolution status) are not included in the provided diff context.
9 N/A Base branch is develop, so this is not a stacked PR targeting a feature branch.
10 PASS The PR includes the complete kernel changes, tests, benchmark script, and case study together without artificial size-cap splitting (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:114).
11 PASS Added tests exercise real functionality (LDS budget, spec validation, golden IR hashes, and numeric accuracy) in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:999 and…
12 PASS The PR title and body are populated in the PR metadata above and match the files in the diff (dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:1).
§G graded 34/34
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1252 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:283 pair IR golden hashes with independent on-GPU numeric validation…
2 FAIL dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1282 tests only lds_num_buffers in {1, 2} and never sets v_reg_prefetch=True, leaving the v_reg_prefetch code path (USE_VPF at dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1570) without on-silicon numeric coverage in the test suite.
3 FAIL dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1008 asserts assert _use_kdb_vpf(pipeline) and line 1022 asserts assert "kdbvpf1" in gfx942_kernel_name(pipeline) for pipeline = _spec(use_cfvst=True, lds_num_buffers=2), which fails because _use_kdb_vpf requires v_reg_prefetch=True (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:899) and _tuning_name_tags emits "kdb1" and "vpf1" (attention_dense.py:736-738); additionally _SPEC_PERTURBATIONS…
4 FAIL dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds the independent v_reg_prefetch: bool = False spec field and USE_VPF codegen branch (line 2254), but dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:999 and test_attention_dense_gfx942_golden.py:283 never pass v_reg_prefetch=True.
5 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1226 uses _MULTI_ITEM_NP = 3 and sq=256, skv=192 (line 1248) with docstrings explaining how multi-item persistent grids and odd n_up > 1 reach the epilogue K-slot-0 read…
6 FAIL dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:7-10 claims the baseline arm's full spec and pre-timing correctness tolerance are "Not yet recorded", contradicting lines 165 and 250-266 of the same file which record atol=1e-2, rtol=1e-2 and the full per-shape spec table; furthermore, the PR body's Performance Gains table (e.g., B1 S1024 Hq32 Hkv8 = 1.1342x / 11.83%) disagrees with the case study Results table at line 106 (1.1203x / 10.74%), and…
7 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:164-182 and bench_rocke_5way_specs.py:131-163 specify and implement the chunked FP32 causal GQA SDPA reference with…
8 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:101-102 explicitly rejects any dtype other than bf16 or head dim other than 128 via argparse.ArgumentTypeError with no silent dtype fallback.
9 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:76-88 sources VGPR count, spill count, and scratch bytes directly from compiled code-object notes (.vgpr_count, .vgpr_spill_count…
10 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:102-118 and 218-229 lock hardware (gfx942, 304 CUs), software stack, commit SHA, relative speedup ratios (no absolute latencies), and…
11 FAIL dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:187-192 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:191-194 leave use_cfvst=True (for bf16 D128), lds_num_buffers=2, and v_reg_prefetch=True off by default and untunable in dispatch/selectors, so the optimized kernel reported to give 10-16% latency reduction is unreachable through the production routing/selector path for the benchmarked shapes.
12 NEEDS-INFO The diff touches only the Python kernel builder dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py and does not show whether any C++ builder or selector exists for attention_dense on gfx942.
13 N/A This PR does not introduce or recommend any new LLVM intrinsic .td overload classes or mangled intrinsic symbols.
14 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:19 and 98 state that bottlenecks and sync-point stalls were classified using profiling and threadtrace alongside empirical GPU-timed lever…
15 N/A The review is graded directly from the provided PR diff against head 7d794701d366ae405e38c6eb6548335d7e7b4c6b.
16 N/A This PR ships a completed implementation and benchmark case study rather than a pre-implementation plan.
17 FAIL dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:126 adds rocke / "platform/Python" (capital P) to sys.path whereas the repository directory is platform/python (lowercase p, cf. test_attention_dense_gfx942_lds.py:32), and gfx942_dense_cfvst_kdb_vprefetch_case_study.md:240 invokes a non-existent path library/benchmarks/gfx942/attention/prefill/rocke_vs_aiter/bench_rocke_5way_specs.py instead of the shipped path…
18 PASS The validation guard in dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:669-684 and 710-722 wires the torch.testing.assert_close verdict to abort the run immediately, takes median over 5 rounds of 50…
19 PASS Fixtures in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1226-1237 (_multi_item_persistent with _MULTI_ITEM_NP = 3 so workgroups run >2 items with a ragged tail to expose LDS hand-off) and 1246-1250 (odd n_up=3…
20 N/A This PR does not add or modify a text detector or linter enforcing a ban on claims.
21 FAIL In dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1022-1023, test_bf16_cfvst_kdb_vpf_are_separate_opt_in_variants sets pipeline = _spec(use_cfvst=True, lds_num_buffers=2) (leaving v_reg_prefetch=False), which makes _use_kdb_vpf(pipeline) at 1008 return False (attention_dense.py:899 requires both _use_kdb and _use_vpf) and gfx942_kernel_name(pipeline) emit kdb1 (attention_dense.py:736) rather than kdbvpf1, so this test and test_cfvst_knob_matrix_numeric…
22 PASS Every new golden fixture entry in dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5-8,61-64,69-72,101-104,153-156,209-212,217-220,249-252 records both bytes and sha256 across both llvm20 and llvm22 flavors…
23 PASS The case study dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:105-118,251-267 and benchmark harness…
24 PASS In dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5-104,153-252, no pre-existing golden hashes were modified; only 4 new opt-in cases (cfvst_d128_bf16_causal, kdbvpf_d128_bf16_causal…
25 FAIL In dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:74-96, VGPR, spill count, and scratch bytes before and after are reported alongside the 12-shape corpus A/B (105-139), but static ISA instruction-count deltas (waits, barriers, LDS reads/writes) and SGPR counts per kernel touched are not reported.
26 PASS The case study dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:251-267 and benchmark harness…
27 PASS Both dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:45-51 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:122-157…
28 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:186-195 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-11,251-267 explicitly…
29 N/A This PR does not swap any guarded primitive for a fast primitive (exp2_fast policy is untouched).
30 PASS In dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:76-95, spill and scratch claims are backed by reading .vgpr_count, .vgpr_spill_count, and .private_segment_fixed_size from the…
31 PASS In dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:517-561, the baseline is the exact unmodified attention_tuning_spec(req, 'gfx942_dense').kernel_spec shipped on develop, and the V-LDS pad (0 at…
32 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:76-89,215-248 and dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:259-323…
33 PASS The changed spec resolvers (resolved_use_cfvst, resolved_v_row_pad, resolved_use_v_swizzle, _lds_bytes, kernel_name) are evaluated and differential-tabled across their input domain in…
34 PASS In dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1426-1449, test_kdbvpf_pipeline_lse runs the new pipeline with emit_lse both on and off via _run_lse_and_off and asserts torch.equal(out, off_out) at line 1449.
§H graded 5/5
# Verdict Evidence
1 N/A This PR only modifies the dense prefill kernel (attention_dense.py) to add opt-in CFVST, K LDS double buffering, and V register…
2 N/A This PR applies to dense prefill attention and does not use page tables, block_tables, or any device-side indirection values.
3 PASS In dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2210-2211 and dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2247, the hot-loop b.div/b.mod divisors are V_DIM_PAIRS (64, since `head_size…
4 N/A This PR does not construct or modify any device-side mask or bound from runtime sequence-length arrays (kv_lens, cu_seqlens)…
5 N/A No new launch runtime inputs that feed device-side bounds or masks are introduced or modified in this PR (lds_num_buffers…
§I graded 6/6
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:26
2 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478
3 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:348
4 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:105
5 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:305
6 N/A This PR does not add or modify any DSL primitive or hardware instruction interface; it only adds opt-in kernel spec knobs…
§J graded 7/7
# Verdict Evidence
1 PASS Scalar latency-reduction formulas in dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:188-209 and LDS layout descriptions in…
2 PASS All formula symbols (T_variant, t_variant,r, T_after, T_before, R_r, Min, Max) are defined in-place with consistent domains in `dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.m…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:189-195 links to gfx942_dense_cfvst_kdb_vprefetch_case_study.md and states only the summary table delta without duplicating the methodology or algorithm.
4 FAIL dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:194 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3 claim lds_num_buffers=2 enables both K LDS double buffering AND V register prefetch, whereas dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:436-443 defines lds_num_buffers and v_reg_prefetch as independent spec knobs.
5 N/A The PR does not make asymptotic scaling or big-O complexity claims in its documentation or comments.
6 FAIL dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:7-10 contains a contradictory stale placeholder ('Not yet recorded: the baseline arm's full spec ... and the tolerance') even though those exact constants and provenance tables are recorded later at lines 166 and 251-266, and line 241 gives a broken replay path (rocke_vs_aiter/bench_rocke_5way_specs.py) that does not match the actual file path at line 231.
7 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:188-190 serves as the directory entry point and links to the companion case study…
§K graded 13/13
# Verdict Evidence
1 N/A This PR does not add or modify a tuned candidate or KnobSpace subclass.
2 FAIL dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds a new dataclass field v_reg_prefetch: bool = field(default=False, kw_only=True) to Gfx942AttentionDenseSpec, and :268 removes lds_num_buffers from _DEAD_SPEC_FIELDS in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:265, without classifying v_reg_prefetch (e.g. in DENSE_UNTUNABLE_KNOBS or as a KnobAxis) in library/dispatch/attention/dense_rules.py or updating…
3 FAIL dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds a new field v_reg_prefetch with default False to Gfx942AttentionDenseSpec, and :509-527 changes resolved_v_row_pad() and resolved_use_v_swizzle() when use_cfvst=True on bf16 D128, but library/dispatch/attention/dense_rules.py (defaults() / TUNING_ID_VERSION) is not updated in the PR.
4 FAIL dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds v_reg_prefetch: bool = field(default=False, kw_only=True) to Gfx942AttentionDenseSpec, which is a problem-independent dataclass default on the tuned spec, but KnobSpace.defaults() in library/dispatch/attention/dense_rules.py is not updated to cover it.
5 NEEDS-INFO dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1218-1267 relaxes supports_attention_dense to allow use_cfvst=True on bf16 D128 standard causal attention (without sliding_window, causal_diag_split, or use_sinks), but library/dispatch/attention/dense_rules.py is not in the diff to verify whether Gfx942DenseKnobSpace drop/refuse/validate rules for use_cfvst…
6 NEEDS-INFO dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:506-527 and :1218-1237 change use_cfvst, v_row_pad, and use_v_swizzle resolution and support for bf16 D128, but library/dispatch/attention/dense_rules.py and library/dispatch/attention/tuning_specs.py are not in the diff to verify whether KnobSpace.validate and policy-free spec construction match the new kernel support…
7 N/A KnobSpace.base(req) is not modified in this PR.
8 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478-491 validates use_cfvst, lds_num_buffers, and v_reg_prefetch with exact type checks (type(...) is not bool / int) and raises ValueError rather than coercing with…
9 N/A The benchmark added in `dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.…
10 N/A KnobSpace.find and bare tuning_id resolution are not touched by this PR.
11 N/A No sweep entry points (iter_dispatch_*, pin_to_spec, sweep_space) are modified or called in this PR.
12 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440-443 and :867 keep lds_num_buffers=1, v_reg_prefetch=False, and _use_cfvst (False for bf16) as the defaults, and…
13 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:583-586 delegates legality checking to dense.supports_attention_dense(spec, arch='gfx942') and aborts on any failure rather than silently dropping…
§L graded 10/10
# Verdict Evidence
1 N/A The PR does not add or modify a gfx target in arch_specs.json or the C++ arch/ISA registries.
2 N/A The PR does not add or change any MMA op_id or fragment layout in core/arch/target.py or cpp/core/lower_llvm/mma.cpp.
3 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1960 continues to use the existing mfma_32x32x8_for_dtype(b, dtype, k_pack, q_packs[ks], acc) helper without hardcoding new intrinsic names or altering atom shapes/lane maps.
4 N/A The PR is scoped to the existing gfx942 kernel and does not modify wave-size definitions or target wave-size logic.
5 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1824 implements gfx942 K LDS double-buffering and V register prefetching directly using standard gfx942 buffer loads and perm_b32 transpose without leaking gfx950 ds_read_tr* or…
6 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440 keeps the pipeline knobs (lds_num_buffers, v_reg_prefetch) on Gfx942AttentionDenseSpec in the library kernel layer without touching ArchTarget or importing CK Tile's…
7 N/A The PR does not add or modify logical dtypes, bit-packing contracts, host pack/unpack routines, or FP8 dialect handling.
8 N/A The PR operates on unscaled bf16/fp16 attention and does not touch scaled-MMA contracts or WMMA scale ids.
9 N/A The PR does not introduce a new architecture target.
10 N/A The PR does not modify intrinsic_arch_domain.<flavor>.json artifacts or LLVM flavor membership lists.
§M graded 10/10
# Verdict Evidence
1 PASS Host booleans (USE_PIPELINE, USE_KDB, USE_VPF, masked) drive Python control flow while SSA loop carries (m_new, l_new, *o_acc) are yielded through b.scf_yield and read from loop.results in…
2 N/A This PR does not touch legalize_for_target or any target legalization passes.
3 N/A This PR does not modify print_ir or the ck.dsl.ir/v1 serialization implementation.
4 N/A This PR does not modify portable IR schemas, importers, magic division helpers, or builder recording.
5 PASS Async K tile loads compute an unswizzled wave-uniform destination offset per row and consumers drain VMEM via b.s_waitcnt(vmcnt=0) followed by b.sync_lds_only() before reading LDS in…
6 PASS All barriers (b.sync_lds_only(), b.s_waitcnt(vmcnt=0)) are emitted unconditionally in the workgroup-uniform prologue, scf_for_iter body, and epilogue in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2222-2295.
7 N/A This PR does not touch ISABackend.buffer_rsrc_word3, hard-code buffer resource word 3, or use TemporalHint.STREAMING.
8 N/A This PR does not add intrinsic declarations or modify lowering backend selection precedence.
9 N/A This PR does not touch C entry points, headers under cpp/include/rocke/, or C++ host launch code.
10 N/A This PR does not modify !dbg emission, module debug info flags, or DWARF consumers.
§N graded 18/18
# Verdict Evidence
1 N/A The PR does not add or promote any helpers under platform/python/rocke/helpers/.
2 N/A The PR modifies an existing lower-level DSL attention kernel and does not introduce new helper abstractions or modify…
3 N/A The PR implements a custom K-LDS double-buffer and V-register-prefetch loop in attention_dense.py rather than modifying or using…
4 N/A The PR optimizes an existing attention prefill kernel and does not add or modify epilogue/graph fusion kernels.
5 N/A The PR does not add or modify any public API in rocke.helpers.tiling.
6 N/A The PR does not add or modify front-door/toolbox tiling helpers or LayoutStyle classes.
7 N/A The PR does not use helpers/tiling layout overrides or modify tiling MMA soundness gates.
8 N/A The PR does not touch helpers/tiling memory verbs (lds_tile_alloc, lds_store, lds_read) or emit.py.
9 N/A The PR does not use helpers/tiling N-D tensor axis roles, FlowStage, or label transforms.
10 N/A The PR does not modify helpers/tiling emit, LDS staging, or MMA issue logic.
11 N/A The PR does not use TileMma, Tiling, lds_swizzle, or derive_sched_group_counts from helpers/tiling.
12 N/A The PR does not make helpers/tiling bank-conflict simulator or coalescing_probe gate claims.
13 N/A The PR does not construct WarpDistributionEncoding, call make_tile_desc, or touch RegisterMapper.
14 PASS The new double-buffered K / V-prefetch pipeline explicitly places b.sync_lds_only() and b.s_waitcnt(vmcnt=0) around LDS reads and writes (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2224…
15 PASS LDS allocation and budget checks account for the padded/swizzled row stride and buffer count (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1075…
16 N/A The PR does not use optimize_layout or evaluate_transform from helpers/tiling.
17 N/A The PR does not touch tiling_recorder.py, analysis/roundtrip.py, or tiling visualization.
18 N/A The PR does not touch InterleavedStyle or demo kernels under helpers/tiling/kernels/.
§O graded 16/16
# Verdict Evidence
1 N/A This PR only modifies files under library/ and does not touch platform core verifier or lowerer files.
2 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2229 — the new scf_for_iter loop uses i32 bounds/step, yields matching iter_args via b.scf_yield(m_new, l_new, *o_acc) at line 2282, and reads loop.results only after the loop exits at…
3 N/A This PR does not modify IRBuilder, intrinsic declaration tables, or metadata numbering in platform core.
4 N/A This PR does not touch IR type definitions, SmemType, or IR parsers in platform core.
5 N/A This PR does not touch core/passes.py, cpp/core/passes.cpp, or opcode purity tables.
6 N/A This PR does not modify constant folding passes in Python or C++ core.
7 N/A This PR does not modify kernel attribute lowering, CodegenPolicy validation, or COMGR options in platform core.
8 N/A This PR does not set or modify SchedulerStrategy or CodegenPolicy.
9 N/A This PR does not modify platform waitcnt or barrier lowering logic (and targets gfx942 rather than gfx950).
10 N/A This PR does not modify platform lowerer attribute validation or parameter LLVM type helpers.
11 N/A This PR does not touch ArchTarget or target resolution in platform core.
12 N/A This PR does not modify platform core width/size caps or arch default resolution.
13 N/A This PR does not touch any C headers or structs under cpp/include/rocke/.
14 N/A This PR does not add or modify any C/C++ files or CMake files.
15 N/A This PR does not touch C++ engine fallback logic or backend flavor resolution in platform core.
16 N/A This PR does not touch C++ runtime/codegen gap areas or gfx1250 builders.
§P graded 14/14
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440-443 adds defaulted keyword-only fields (lds_num_buffers: int = field(default=1, kw_only=True) and v_reg_prefetch: bool = field(default=False, kw_only=True)) on the arch subclass…
2 N/A This PR does not modify kernarg ordering, signature(), manifest args_signature, or GEMM/conv ABI definitions.
3 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:553-556 takes grid=dense.attention_dense_grid(spec) and block=dense.attention_dense_block(spec) directly from the spec helpers rather than recomputing…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1075 charges k_bytes *= spec.lds_num_buffers in _lds_bytes matching K_lds = b.smem_alloc(dtype, [K_BUFS, BN, LDROW], name_hint="Klds") at line 1584, and…
5 N/A This PR does not touch WMMA/RDNA GEMM or GemmMultiD/GemmMultiAbd platform instances.
6 N/A This PR does not use or modify caller-zeroed workspaces (Stream-K, MoE sorting, fused MoE, or split-K).
7 N/A This PR does not touch Stream-K, persistent GEMM persistent_max_iters, GroupedGemmLauncher, or SUPPORT_MATRIX.md.
8 N/A This PR does not touch quantization helpers or MX GEMM.
9 N/A This PR does not introduce numeric emulation or quantized decode paths.
10 N/A This PR does not add or modify manifest kinds, emitters, or manifest runners.
11 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:534-556 compiles all kernels ahead of timing and constructs KernelLauncher instances, and lines 163-172 time repeated launches using GPU…
12 N/A This PR does not touch COMGR or HIP library loading logic or fix a hipError launch failure.
13 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735-738 and 1248-1267 add cache-name tags (kdb1, vpf1) and admission guards in supports_attention_dense, which are tested in…
14 N/A This PR does not touch examples/, expected.json, platform/python/rocke/instances/, or helpers/.
§Q graded 7/7
# Verdict Evidence
1 N/A No new test files are added or removed in this PR; only existing test files under library/tests/ are modified.
2 N/A This PR modifies the Python-only library/kernels/gfx942/attention_dense.py builder and does not add a platform kernel family or…
3 PASS Golden hashes in dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:283 are used as an IR drift tripwire alongside GPU…
4 PASS New golden entries are recorded for both llvm20 (dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5) and llvm22…
5 PASS CPU tests in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1059 use values the parser genuinely rejects (e.g., use_cfvst='false'), and GPU tests in…
6 N/A This PR does not refactor any platform gate or test harness.
7 N/A This PR only updates library spec validation in supports_attention_dense and does not touch platform backend resolution or…

@yraparti yraparti 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.

rocKE checklist re-review of the fixes since 7d794701d366

ROCm/rocm-libraries#13205 · 4072b4ae138a · model gemini-4-argon, fallback gpt-5.5

FAIL · graded 220/220 · BLOCKER 3, HIGH 11, MEDIUM 9, LOW 1, NEEDS-INFO 7

The diff was truncated before grading. Items that needed a missing hunk are NEEDS-INFO.

Since the last review (7d794701d366)

Resolved 0 · still open 24 · new 0

  • ⏳ §A.10 still FAIL (HIGH): Add v_reg_prefetch=True to the kdbvpf golden cases (or add dedicated vpf golden cases) in test_attention_dense_gfx942_golden.py and record their hashes in attention_dense_gfx942_ir_sha256.json for all LLVM flavors.
  • ⏳ §B.5 still FAIL (HIGH): Update test_attention_dense_gfx942.py, test_attention_dense_gfx942_golden.py, and test_attention_dense_gfx942_numeric.py to test the decoupled lds_num_buffers and v_reg_prefetch knobs ((2, False), (1, True), and (2, True) along with 'kdb1'/'vpf1' tags), or gate supports_attention_dense to require matching knobs if only the combined mode is intended.
  • ⏳ §C.10 still FAIL (HIGH): Update test_attention_dense_gfx942.py, test_attention_dense_gfx942_golden.py, test_attention_dense_gfx942_numeric.py, README.md, and AGENTS.md to reflect the split kdb1 / vpf1 tags and include v_reg_prefetch in _PRIVATE_PERTURBATIONS, type/mode rejection tests, and pipeline test cases.
  • ⏳ §D.1 still FAIL (HIGH): Put the knob on the KernelSpec and delete the environment read.
  • ⏳ §D.5 still FAIL (MEDIUM): Update dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py to add 'v_reg_prefetch': (True, False) to _SPEC_PERTURBATIONS, set v_reg_prefetch=True on the *_kdbvpf bases/test cases, and assert on the 'kdb1' and 'vpf1' kernel-name tags instead of 'kdbvpf1'.
  • ⏳ §E.2 still FAIL (MEDIUM): Query the device through rocke.runtime.hip_module instead of importing torch.
  • ⏳ §E.7 still FAIL (MEDIUM): Document v_reg_prefetch alongside lds_num_buffers in library/builders/gfx942/attention/prefill/README.md and library/dispatch/AGENTS.md.
  • ⏳ §E.10 still FAIL (BLOCKER): Update the test specs, expected kernel-name tags (kdb1, vpf1), and golden hashes in test_attention_dense_gfx942.py, test_attention_dense_gfx942_golden.py, test_attention_dense_gfx942_numeric.py, and attention_dense_gfx942_ir_sha256.json to pass v_reg_prefetch=True where the full pipeline is intended and re-run the test suites.
  • ⏳ §E.13 still FAIL (HIGH): Update all stale kdbvpf1 / _use_kdb_vpf references across tests and docs to use kdb1, vpf1, and v_reg_prefetch=True, remove _use_kdb_vpf, and remove the nonexistent rocke_vs_aiter/ subdirectory from gfx942_dense_cfvst_kdb_vprefetch_case_study.md.
  • ⏳ §E.17 still FAIL (HIGH): Reconcile the PR description and gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-15 with the recorded tables (10.74%-15.58% at the 12 measured configurations) and remove the stale 'Not yet recorded' text.
  • ⏳ §F.3 still FAIL (MEDIUM): Retitle as type(scope): summary, 10–80 characters, scope [a-z0-9-]+.
  • ⏳ §G.2 still FAIL (HIGH): Add v_reg_prefetch=True variants (both alone with lds_num_buffers=1 and combined with lds_num_buffers=2) to test_cfvst_pipeline_strict_numeric, _CFVST_KNOB_CASES, and test_kdbvpf_pipeline_lse in test_attention_dense_gfx942_numeric.py.
  • ⏳ §G.3 still FAIL (BLOCKER): Update test_attention_dense_gfx942.py to add "v_reg_prefetch": (True, False) to _SPEC_PERTURBATIONS, test kdb1/vpf1 tags and v_reg_prefetch=True in test_bf16_cfvst_kdb_vpf_are_separate_opt_in_variants, and re-run tools/run_checks.py plus ROCKE_LLVM_FLAVOR=llvm23 golden checks.
  • ⏳ §G.4 still FAIL (MEDIUM): Add unit, golden, and numeric test cases that explicitly set v_reg_prefetch=True (with lds_num_buffers=1 and lds_num_buffers=2) and verify type/mode rejection for v_reg_prefetch.
  • ⏳ §G.6 still FAIL (HIGH): Remove the stale "Not yet recorded" sentence and update the 10.1-16.3% range to 10.7-15.6% in gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-15, and update README.md:194 and test_attention_dense_gfx942_golden.py:19-20 to state that lds_num_buffers=2 and v_reg_prefetch=True are separate knobs.

Findings

  • BLOCKER §E · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735 · Update the test specs, expected kernel-name tags (kdb1, vpf1), and golden hashes in test_attention_dense_gfx942.py, test_attention_dense_gfx942_golden.py, test_attention_dense_gfx942_numeric.py, and attention_dense_gfx942_ir_sha256.json to pass v_reg_prefetch=True where the full pipeline is intended and re-run the test suites.
  • BLOCKER §G · dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1008 · Update test_attention_dense_gfx942.py to add "v_reg_prefetch": (True, False) to _SPEC_PERTURBATIONS, test kdb1/vpf1 tags and v_reg_prefetch=True in test_bf16_cfvst_kdb_vpf_are_separate_opt_in_variants, and re-run tools/run_checks.py plus ROCKE_LLVM_FLAVOR=llvm23 golden checks.
  • BLOCKER §K · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Classify v_reg_prefetch in library/dispatch/attention/dense_rules.py (e.g. add it to DENSE_UNTUNABLE_KNOBS alongside lds_num_buffers or declare it as a KnobAxis), update library/tests/dispatch/attention/test_tuning_space.py and library/dispatch/AGENTS.md:187, and add v_reg_prefetch to _SPEC_PERTURBATIONS in library/tests/test_attention_dense_gfx942.py.
  • HIGH §A · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Add v_reg_prefetch=True to the kdbvpf golden cases (or add dedicated vpf golden cases) in test_attention_dense_gfx942_golden.py and record their hashes in attention_dense_gfx942_ir_sha256.json for all LLVM flavors.
  • HIGH §B · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Update test_attention_dense_gfx942.py, test_attention_dense_gfx942_golden.py, and test_attention_dense_gfx942_numeric.py to test the decoupled lds_num_buffers and v_reg_prefetch knobs ((2, False), (1, True), and (2, True) along with 'kdb1'/'vpf1' tags), or gate supports_attention_dense to require matching knobs if only the combined mode is intended.
  • HIGH §C · gfx942_dense_cfvst_kdb_vprefetch_case_study.md:249 · Update test_attention_dense_gfx942.py, test_attention_dense_gfx942_golden.py, test_attention_dense_gfx942_numeric.py, README.md, and AGENTS.md to reflect the split kdb1 / vpf1 tags and include v_reg_prefetch in _PRIVATE_PERTURBATIONS, type/mode rejection tests, and pipeline test cases.
  • HIGH §D · dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:114 · Put the knob on the KernelSpec and delete the environment read.
  • HIGH §E · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735 · Update all stale kdbvpf1 / _use_kdb_vpf references across tests and docs to use kdb1, vpf1, and v_reg_prefetch=True, remove _use_kdb_vpf, and remove the nonexistent rocke_vs_aiter/ subdirectory from gfx942_dense_cfvst_kdb_vprefetch_case_study.md.
  • HIGH §E · dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3 · Reconcile the PR description and gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-15 with the recorded tables (10.74%-15.58% at the 12 measured configurations) and remove the stale 'Not yet recorded' text.
  • HIGH §G · dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1282 · Add v_reg_prefetch=True variants (both alone with lds_num_buffers=1 and combined with lds_num_buffers=2) to test_cfvst_pipeline_strict_numeric, _CFVST_KNOB_CASES, and test_kdbvpf_pipeline_lse in test_attention_dense_gfx942_numeric.py.
  • HIGH §G · gfx942_dense_cfvst_kdb_vprefetch_case_study.md:106 · Remove the stale "Not yet recorded" sentence and update the 10.1-16.3% range to 10.7-15.6% in gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-15, and update README.md:194 and test_attention_dense_gfx942_golden.py:19-20 to state that lds_num_buffers=2 and v_reg_prefetch=True are separate knobs.
  • HIGH §G · dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:187 · Wire the winning configuration (use_cfvst=True, lds_num_buffers=2, v_reg_prefetch=True) into the gfx942 dense selector/dispatch policy (and C++ twin if applicable) for the validated BF16 D128 causal shapes, or scope the PR title/claims strictly to adding experimental spec-only plumbing without claiming a shipped perf gain.
  • HIGH §G · dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1002 · Update test_attention_dense_gfx942.py:353-380,1002-1024, test_attention_dense_gfx942_golden.py:284-298, and test_attention_dense_gfx942_numeric.py:1286,1344-1386,1436 to pass v_reg_prefetch=True on the KDB+VPF cases and assert the kdb1/vpf1 tags produced by _tuning_name_tags.
  • HIGH §K · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Update Gfx942DenseKnobSpace.defaults() in library/dispatch/attention/dense_rules.py for v_reg_prefetch (and bump TUNING_ID_VERSION or document the config_key impact of use_cfvst=True on bf16 D128).
  • MEDIUM §D · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735 · Update dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py to add 'v_reg_prefetch': (True, False) to _SPEC_PERTURBATIONS, set v_reg_prefetch=True on the *_kdbvpf bases/test cases, and assert on the 'kdb1' and 'vpf1' kernel-name tags instead of 'kdbvpf1'.
  • MEDIUM §E · dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:473 · Query the device through rocke.runtime.hip_module instead of importing torch.
  • MEDIUM §E · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Document v_reg_prefetch alongside lds_num_buffers in library/builders/gfx942/attention/prefill/README.md and library/dispatch/AGENTS.md.
  • MEDIUM §F · summary · Retitle as type(scope): summary, 10–80 characters, scope [a-z0-9-]+.
  • MEDIUM §G · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Add unit, golden, and numeric test cases that explicitly set v_reg_prefetch=True (with lds_num_buffers=1 and lds_num_buffers=2) and verify type/mode rejection for v_reg_prefetch.
  • MEDIUM §G · dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:126 · Fix platform/Python to platform/python in bench_rocke_5way_specs.py:126 and gfx942_dense_cfvst_kdb_vprefetch_case_study.md:394, align the directory paths in gfx942_dense_cfvst_kdb_vprefetch_case_study.md:257-407 with library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py, and run the script end-to-end from a clean shell.
  • MEDIUM §G · dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:74 · Add SGPR counts and static ISA instruction-count deltas (e.g., ds_read/ds_write, s_waitcnt, s_barrier) per variant to the register/codegen table in gfx942_dense_cfvst_kdb_vprefetch_case_study.md:82-89.
  • MEDIUM §J · dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:194 · Update README.md:194 and gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3 to name both lds_num_buffers=2 and v_reg_prefetch=True (or add a separate row in README.md for v_reg_prefetch=True) so the docs match the independent symbols in Gfx942AttentionDenseSpec.
  • MEDIUM §K · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 · Add "v_reg_prefetch": False to Gfx942DenseKnobSpace.defaults() in library/dispatch/attention/dense_rules.py.
  • LOW §J · dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:7 · Remove the stale 'Not yet recorded' sentence at gfx942_dense_cfvst_kdb_vprefetch_case_study.md:7-10 and change the script storage paths at lines 257 and 313 from .../prefill/rocke_vs_aiter/{setup,run_5way}.sh to .../prefill/{setup,run_5way}.sh so they match the cd directory and bench_rocke_5way_specs.py location.

Needs info

  • §A.3 Not resolved in new commit (which only touched the case study markdown). dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds v_reg_prefetch and updates supports_attention_dense (lines 1218-1267), while C++ selector/spec parity files are not in the diff and it remains unclear if Gfx942AttentionDenseSpec has a C++ selector twin.
  • §E.14 The diff of dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py is truncated at line 2336 before the LSE epilogue merge resolution mentioned in the PR description.
  • §F.7 Not resolved since previous review: local pre-commit execution status is not visible in the diff context, and dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:194 still has 3 blank lines before def _command_output.
  • §F.8 Not resolved since previous review: GitHub review thread states (bot/Copilot findings and resolution status) are not included in the provided PR diff context.
  • §G.12 The diff touches only the Python kernel builder dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py and does not show whether any C++ builder or selector exists for attention_dense on gfx942.
  • §K.5 Unresolved from previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:506-527 and :1218-1237 allow use_cfvst=True on bf16 D128 standard causal attention (changing resolved_v_row_pad and resolved_use_v_swizzle), and we need library/dispatch/attention/dense_rules.py to verify whether Gfx942DenseKnobSpace drop/refuse/inert rules for use_cfvst, use_v_swizzle, and v_row_pad on bf16 D128 remain consistent with assert_tuning_contract.
  • §K.6 Unresolved from previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:506-527 and :1218-1267 update use_cfvst, v_row_pad, and use_v_swizzle resolution and support on bf16 D128, and we need library/dispatch/attention/dense_rules.py and library/dispatch/attention/tuning_specs.py to verify whether KnobSpace.validate and policy-free spec construction match the new kernel support rules.

Section notes

  • §A: The commit since the previous review only modified gfx942_dense_cfvst_kdb_vprefetch_case_study.md; items 3 and 10 remain unresolved.
  • §B: The commit since the previous review (7d79470..4072b4a) only updated reproducibility instructions in the case study markdown. Item 5 remains FAIL because v_reg_prefetch is still not covered in the unit, golden, or numeric test suites.
  • §C: The commit since the previous review only updated the case study markdown (gfx942_dense_cfvst_kdb_vprefetch_case_study.md:249-410) and did not address item 10.
  • §D: Re-review of head 4072b4a: the commit since 7d79470 only updates gfx942_dense_cfvst_kdb_vprefetch_case_study.md, leaving previous FAIL items 1 and 5 unresolved.
  • §E: Only gfx942_dense_cfvst_kdb_vprefetch_case_study.md changed since the previous review; items 2, 7, 10, 13, and 17 remain unresolved, and item 14 remains truncated.
  • §G: Re-review of head 4072b4a. The single commit since 7d79470 only touched gfx942_dense_cfvst_kdb_vprefetch_case_study.md:228-412; items 2, 3, 4, 6, 11, and 17 remain unresolved.

Graded with the rocKE PR checklist, one model pass per section. FAIL rows that sit on a diff line are inline comments.

§A graded 14/14
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1383 modifies only the Python-only gfx942 dense attention kernel emitter…
2 N/A No core lowering-op or op-handler files (core/lower_*, core/ir) are…
3 NEEDS-INFO Not resolved in new commit (which only touched the case study markdown). dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds v_reg_prefetch and updates supports_attention_dense (lines 1218-1267), while…
4 N/A No C++ kernel or selector twin is modified or exists for…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:9 leaves existing golden hashes (such as…
6 N/A This PR modifies a Python-only kernel family (gfx942 attention_dense) that…
7 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1571 and 2199 guard the new pipeline behind USE_PIPELINE (USE_KDB or…
8 N/A No C++ files or C++-mirrored emitters are touched in this PR.
9 N/A No shared op-handler fix or lowerer-only architecture divergence is…
10 FAIL Not resolved in the latest commit (which only modified the case study doc). dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 and 737 add v_reg_prefetch=True (emitting tag vpf1 and V-prefetch IR at line 2254) as an independent knob from lds_num_buffers=2, but…
11 N/A No new IR ops are added in this PR.
12 N/A core/backend.py and ROCKE_BACKEND=both handling are not modified in this PR.
13 N/A LLVM IR lowering (.ll emission) and ROCKE_DEBUG_LOC handling are not…
14 N/A No classic helpers under helpers/ or platform/cpp/helpers/ are modified in…
§B graded 6/6
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1218-1267 classifies unvalidated feature combinations on BF16 CFVST and…
2 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1218-1267 and 1383-1395 keep supports_attention_dense as the single…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440-443 and 867 keep default routing and policies unchanged…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478-491 validates type(self.use_cfvst) is not bool…
5 FAIL Not resolved in 7d79470..4072b4a (which only touched the case study markdown). dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443,735-738,1253-1267 opens v_reg_prefetch=True independently of lds_num_buffers=2 and emits 'kdb1'/'vpf1' tags, but…
6 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1218-1267 updates supports_attention_dense to remove the old bf16 D128…
§C graded 10/10
# Verdict Evidence
1 PASS Shared logic and predicates are factored into named helpers _use_kdb, _use_vpf, _use_kdb_vpf, and softmax_pv in…
2 PASS The new pipeline variants are controlled via spec knobs (use_cfvst, lds_num_buffers, v_reg_prefetch) inside the single build_attention_dense(spec)…
3 PASS Kernel naming uses codegen knob tags (kdb1, vpf1, cfvst1, vswz1) in `dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.…
4 PASS All kernel changes are properly scoped inside the gfx942-specific module `dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py…
5 PASS The diff touches only the gfx942 attention_dense kernel (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:114), its…
6 PASS softmax_pv is cleanly extracted in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2053-2127 so the existing…
7 N/A This PR is a targeted performance optimization adding opt-in spec knobs…
8 PASS The PR extends existing Gfx942AttentionDenseSpec fields (use_cfvst, lds_num_buffers) and reuses existing DSL primitives (b.smem_alloc…
9 PASS Type-coercion validation (type(...) is not bool/int) is applied across all new/modified spec knobs (use_cfvst, lds_num_buffers, v_reg_prefetch) in…
10 FAIL Unresolved from previous review (the commit since 7d79470 only touched gfx942_dense_cfvst_kdb_vprefetch_case_study.md:249-410): in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735-738 and :893-899, _tuning_name_tags was widened to emit independent kdb1 and…
§D graded 21/21
# Verdict Evidence
1 FAIL dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:114 reads the environment
2 N/A No Capability declarations or candidate registrations are added or…
3 N/A No candidate _supports or admits methods in the dispatcher layer are…
4 PASS Spec helpers and supports_attention_dense(spec, arch) remain pure functions of the spec and explicit arch parameter with no host device probes…
5 FAIL Unresolved since 7d79470 (test_attention_dense_gfx942.py was not modified): in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735-738 and :893-899, _use_kdb and _use_vpf are independent knobs emitting 'kdb1' and 'vpf1' tags and _use_kdb_vpf(spec) requires…
6 N/A No cohort routing changes are made in this PR; the new pipeline modes are…
7 N/A No selector heuristics or hand-pinned routing overrides are added or…
8 N/A No cohort routing predicates are introduced or changed in this PR.
9 N/A No new KernelCandidate or architecture is registered in…
10 PASS The new fields (lds_num_buffers=2, v_reg_prefetch=True) are internal codegen/scheduling knobs rather than user-facing problem/request features, and…
11 PASS The BF16 CFVST, KDB, and VPF changes are strictly opt-in (use_cfvst=None resolves to False for BF16, lds_num_buffers=1, v_reg_prefetch=False by…
12 N/A This PR does not add or rename any dispatcher candidate, change candidate…
13 N/A This PR does not modify CandidateRegistry.select, pin resolution, or any…
14 N/A This PR does not modify KernelId caching keys or change the kernel argument…
15 N/A This PR does not add a new dispatcher candidate or architecture module to…
16 N/A This PR does not introduce a new operator family.
17 N/A This PR does not add a new dispatcher candidate or change problem-to-spec…
18 N/A This PR does not modify registry ratchets, torch bindings, or test exempt…
19 PASS dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:187-192 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/pre…
20 N/A This PR does not modify a problem-to-spec selector or a kernel family with…
21 N/A This PR implements new opt-in kernel pipeline features (BF16 CFVST, K LDS…
§E graded 17/17
# Verdict Evidence
1 N/A This PR only modifies files under library/ and touches no files under…
2 FAIL dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:473 adds import torch
3 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:224 imports torch lazily inside @​requires_gfx942_gpu test…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:474 imports downward from kernels and…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:29 is a Python script using pathlib.Path…
6 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2258 preserves unused tuple unpacking with underscore prefixes (`_d0…
7 FAIL Unresolved from previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds the v_reg_prefetch spec knob, but dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:194 and…
8 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:134 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attenti…
9 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440 and accompanying test/doc files are all scoped to the gfx942 BF16…
10 FAIL Unresolved from previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735-738 emits kdb1 and vpf1 tags and gates V prefetch on v_reg_prefetch=True, but dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1002-1022 (`pipeline =…
11 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:1 and…
12 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1218 explicitly scopes the opt-in knobs to the gfx942 dense kernel.
13 FAIL Unresolved from previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735 replaced kdbvpf1 with kdb1/vpf1, but dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1002-1022 still asserts _use_kdb_vpf(pipeline) and `'kdbvpf1' in…
14 NEEDS-INFO The diff of dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py is truncated at line 2336 before the LSE epilogue merge resolution mentioned in the PR description.
15 PASS All parameters in modified helpers in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1824 (_async_load…
16 N/A This item governs reviewer severity grading rather than code in the pull…
17 FAIL Unresolved from previous review: dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-11 still omits v_reg_prefetch=True, states that the baseline arm's full spec and pre-timing correctness tolerance are 'Not yet recorded'…
§F graded 12/12
# Verdict Evidence
1 PASS Branch users/Parthiv911/rocke/gfx942-dense-cfvst-kdb-vpf matches the recognized users/<user>/... prefix…
2 PASS branch users/Parthiv911/rocke/gfx942-dense-cfvst-kdb-vpf has a rocke path segment
3 FAIL title perf(rocke): bf16 D128 CFVST, K double buffering, and V prefetch in gfx942 dense prefill is 88 characters and does not match type(scope): summary with a 10–80 character length
4 PASS description is at least 30 characters and contains an issue reference
5 PASS test file dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py is in the diff
6 PASS All 10 changed files are Python, Markdown, or JSON golden hash files (e.g., `dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gf…
7 NEEDS-INFO Not resolved since previous review: local pre-commit execution status is not visible in the diff context, and dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:194 still has 3…
8 NEEDS-INFO Not resolved since previous review: GitHub review thread states (bot/Copilot findings and resolution status) are not included in the provided PR diff context.
9 N/A The PR base branch is develop, so this is not a stacked PR targeting a…
10 PASS The PR keeps the kernel changes, tests, benchmark script, and case study together without artificial size-cap splitting…
11 PASS Added tests exercise real functionality (spec validation, LDS budget, golden IR hashes, and numeric accuracy) in…
12 PASS The PR title and body are populated in the PR metadata above and match the files in the diff (`dnn-providers/hip-kernel-provider/rocke/library/builders/gfx9…
§G graded 34/34
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1252 and…
2 FAIL Unresolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1282-1288 and 1344-1348 test only lds_num_buffers in {1, 2} and never set v_reg_prefetch=True, leaving the v_reg_prefetch code path (USE_VPF at…
3 FAIL Unresolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1008 asserts assert pipeline.resolved_use_cfvst() and _use_kdb_vpf(pipeline) and line 1022 asserts assert "kdbvpf1" in gfx942_kernel_name(pipeline) for `pipeline = _spec(use_cfvst=True…
4 FAIL Unresolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds the independent v_reg_prefetch: bool = False spec field and USE_VPF codegen branch (line 2254), but…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1226 uses _MULTI_ITEM_NP = 3 and sq=256, skv=192 (line…
6 FAIL Partially resolved (PR body table now matches gfx942_dense_cfvst_kdb_vprefetch_case_study.md:106-138), but dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:7-10 still claims the baseline arm's full spec and pre-timing correctness…
7 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:164-182 and…
8 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:101-102 explicitly rejects any dtype other…
9 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:76-88 sources VGPR count…
10 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:102-118 and 218-231 lock…
11 FAIL Unresolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:187-193 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:191-194 leave use_cfvst=True (for bf16 D128), lds_num_buffers=2, and v_reg_prefetch=True off by…
12 NEEDS-INFO The diff touches only the Python kernel builder dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py and does not show whether any C++ builder or selector exists for attention_dense on gfx942.
13 N/A This PR does not introduce or recommend any new LLVM intrinsic .td…
14 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:19 and 98 state that…
15 N/A The review is graded directly from the provided PR diff against head…
16 N/A This PR ships a completed implementation and benchmark case study rather…
17 FAIL Not resolved by the latest commit: dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:126 and the newly added run_5way.sh snippet in…
18 PASS The validation guard in dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:669-684 and…
19 PASS Fixtures in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1226-1237 (_multi_item_persistent with…
20 N/A This PR does not add or modify a text detector or linter enforcing a ban on…
21 FAIL Unresolved from previous review: in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1002-1023, test_bf16_cfvst_kdb_vpf_are_separate_opt_in_variants sets pipeline = _spec(use_cfvst=True, lds_num_buffers=2) (leaving v_reg_prefetch=False), which makes…
22 PASS Every new golden fixture entry in `dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5-8,61-64,69-72,101-10…
23 PASS The case study `dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:105-118,233…
24 PASS In dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5-104,153-252, no pre-existing golden hashes were…
25 FAIL Unresolved from previous review: in dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:74-96, VGPR, spill count, and scratch bytes before and after are reported alongside the 12-shape corpus A/B (105-139), but static ISA…
26 PASS The case study dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:233-249…
27 PASS Both dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:45-51 and…
28 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:186-195 and…
29 N/A This PR does not swap any guarded primitive for a fast primitive…
30 PASS In dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:76-95, spill and…
31 PASS In dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:517-561, the baseline is the exact…
32 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:76-89,215-231,250-409…
33 PASS The changed spec resolvers (resolved_use_cfvst, resolved_v_row_pad, resolved_use_v_swizzle, _lds_bytes, kernel_name) are evaluated and…
34 PASS In dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1426-1449, test_kdbvpf_pipeline_lse runs the new…
§H graded 5/5
# Verdict Evidence
1 N/A This PR only modifies the dense prefill kernel (attention_dense.py) to…
2 N/A This PR applies to dense prefill attention and does not use page tables…
3 PASS In dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2210-2211 and…
4 N/A This PR does not construct or modify any device-side mask or bound from…
5 N/A No new launch runtime inputs that feed device-side bounds or masks are…
§I graded 6/6
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:26
2 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478
3 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:348
4 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:105
5 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:305
6 N/A This PR does not add or modify any DSL primitive or hardware instruction…
§J graded 7/7
# Verdict Evidence
1 PASS Scalar latency-reduction formulas in `dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_cas…
2 PASS All formula symbols (T_variant, t_variant,r, T_after, T_before, R_r, Min, Max) are defined in-place with consistent domains in…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:188-195 links to…
4 FAIL Not fixed in the new commit: dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:194 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3 were not modified since the previous review and…
5 N/A The PR does not make asymptotic scaling or big-O complexity claims in its…
6 FAIL Still not fixed: dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:7-10 still retains the contradictory stale sentence ('Not yet recorded: the baseline arm's full spec ... and the tolerance') even though those exact constants and…
7 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:188-190 serves as the directory entry point and links to the…
§K graded 13/13
# Verdict Evidence
1 N/A This PR does not add or modify a tuned candidate or KnobSpace subclass.
2 FAIL Unresolved from previous review (the commit since 7d794701d366 only touched gfx942_dense_cfvst_kdb_vprefetch_case_study.md): dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds a new dataclass field v_reg_prefetch: bool = field(default=False, kw_only=True) to…
3 FAIL Unresolved from previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds v_reg_prefetch: bool = field(default=False, kw_only=True) to Gfx942AttentionDenseSpec and :509-527 changes resolved_v_row_pad() and resolved_use_v_swizzle() when…
4 FAIL Unresolved from previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds the problem-independent default field v_reg_prefetch: bool = field(default=False, kw_only=True) on Gfx942AttentionDenseSpec, which is not added to Gfx942DenseKnobSpace.defaults() in…
5 NEEDS-INFO Unresolved from previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:506-527 and :1218-1237 allow use_cfvst=True on bf16 D128 standard causal attention (changing resolved_v_row_pad and…
6 NEEDS-INFO Unresolved from previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:506-527 and :1218-1267 update use_cfvst, v_row_pad, and use_v_swizzle resolution and support on bf16 D128, and we…
7 N/A KnobSpace.base(req) is not modified in this PR.
8 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478-491 validates use_cfvst, lds_num_buffers, and v_reg_prefetch…
9 N/A The benchmark added in `dnn-providers/hip-kernel-provider/rocke/library/benc…
10 N/A KnobSpace.find and bare tuning_id resolution are not touched by this PR.
11 N/A No sweep entry points (iter_dispatch_*, pin_to_spec, sweep_space) are…
12 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440-443 and :867 keep lds_num_buffers=1, v_reg_prefetch=False…
13 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:583-586 delegates legality checking to…
§L graded 10/10
# Verdict Evidence
1 N/A The PR does not add or modify a gfx target in arch_specs.json or the C++…
2 N/A The PR does not add or change any MMA op_id or fragment layout in…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1960 continues to use the existing `mfma_32x32x8_for_dtype(b, dtype…
4 N/A The PR is scoped to the existing gfx942 kernel and does not modify…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1824 implements gfx942 K LDS double-buffering and V register prefetching…
6 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440 keeps the pipeline knobs (lds_num_buffers, v_reg_prefetch) on…
7 N/A The PR does not add or modify logical dtypes, bit-packing contracts, host…
8 N/A The PR operates on unscaled bf16/fp16 attention and does not touch…
9 N/A The PR does not introduce a new architecture target.
10 N/A The PR does not modify intrinsic_arch_domain.<flavor>.json artifacts or…
§M graded 10/10
# Verdict Evidence
1 PASS Host booleans (USE_PIPELINE, USE_KDB, USE_VPF, masked) drive Python control flow while SSA loop carries (m_new, l_new, *o_acc) are yielded…
2 N/A This PR does not touch legalize_for_target or any target legalization…
3 N/A This PR does not modify print_ir or the ck.dsl.ir/v1 serialization…
4 N/A This PR does not modify portable IR schemas, importers, magic division…
5 PASS Async K tile loads compute an unswizzled wave-uniform destination offset per row and consumers drain VMEM via b.s_waitcnt(vmcnt=0) followed by…
6 PASS All barriers (b.sync_lds_only(), b.s_waitcnt(vmcnt=0)) are emitted unconditionally in the workgroup-uniform prologue, scf_for_iter body, and epilogue…
7 N/A This PR does not touch ISABackend.buffer_rsrc_word3, hard-code buffer…
8 N/A This PR does not add intrinsic declarations or modify lowering backend…
9 N/A This PR does not touch C entry points, headers under cpp/include/rocke/…
10 N/A This PR does not modify !dbg emission, module debug info flags, or DWARF…
§N graded 18/18
# Verdict Evidence
1 N/A The PR does not add or promote any helpers under…
2 N/A The PR modifies an existing lower-level DSL attention kernel and does not…
3 N/A The PR implements a custom K-LDS double-buffer and V-register-prefetch loop…
4 N/A The PR optimizes an existing attention prefill kernel and does not add or…
5 N/A The PR does not add or modify any public API in rocke.helpers.tiling.
6 N/A The PR does not add or modify front-door/toolbox tiling helpers or…
7 N/A The PR does not use helpers/tiling layout overrides or modify tiling MMA…
8 N/A The PR does not touch helpers/tiling memory verbs (lds_tile_alloc…
9 N/A The PR does not use helpers/tiling N-D tensor axis roles, FlowStage, or…
10 N/A The PR does not modify helpers/tiling emit, LDS staging, or MMA issue…
11 N/A The PR does not use TileMma, Tiling, lds_swizzle, or…
12 N/A The PR does not make helpers/tiling bank-conflict simulator or…
13 N/A The PR does not construct WarpDistributionEncoding, call…
14 PASS The new double-buffered K / V-prefetch pipeline explicitly places b.sync_lds_only() and b.s_waitcnt(vmcnt=0) around LDS reads and writes…
15 PASS LDS allocation and budget checks account for the padded/swizzled row stride and buffer count (`dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx94…
16 N/A The PR does not use optimize_layout or evaluate_transform from…
17 N/A The PR does not touch tiling_recorder.py, analysis/roundtrip.py, or…
18 N/A The PR does not touch InterleavedStyle or demo kernels under…
§O graded 16/16
# Verdict Evidence
1 N/A This PR only modifies files under library/ and does not touch platform core…
2 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2229 — the new scf_for_iter loop uses i32 bounds/step, yields matching…
3 N/A This PR does not modify IRBuilder, intrinsic declaration tables, or…
4 N/A This PR does not touch IR type definitions, SmemType, or IR parsers in…
5 N/A This PR does not touch core/passes.py, cpp/core/passes.cpp, or opcode…
6 N/A This PR does not modify constant folding passes in Python or C++ core.
7 N/A This PR does not modify kernel attribute lowering, CodegenPolicy…
8 N/A This PR does not set or modify SchedulerStrategy or CodegenPolicy.
9 N/A This PR does not modify platform waitcnt or barrier lowering logic (and…
10 N/A This PR does not modify platform lowerer attribute validation or parameter…
11 N/A This PR does not touch ArchTarget or target resolution in platform core.
12 N/A This PR does not modify platform core width/size caps or arch default…
13 N/A This PR does not touch any C headers or structs under cpp/include/rocke/.
14 N/A This PR does not add or modify any C/C++ files or CMake files.
15 N/A This PR does not touch C++ engine fallback logic or backend flavor…
16 N/A This PR does not touch C++ runtime/codegen gap areas or gfx1250 builders.
§P graded 14/14
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440-443 adds defaulted keyword-only fields (`lds_num_buffers: int =…
2 N/A This PR does not modify kernarg ordering, signature(), manifest…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:553-556 takes…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1075 charges k_bytes *= spec.lds_num_buffers in _lds_bytes matching…
5 N/A This PR does not touch WMMA/RDNA GEMM or GemmMultiD/GemmMultiAbd…
6 N/A This PR does not use or modify caller-zeroed workspaces (Stream-K, MoE…
7 N/A This PR does not touch Stream-K, persistent GEMM persistent_max_iters…
8 N/A This PR does not touch quantization helpers or MX GEMM.
9 N/A This PR does not introduce numeric emulation or quantized decode paths.
10 N/A This PR does not add or modify manifest kinds, emitters, or manifest runners.
11 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:534-556 compiles all kernels ahead of timing…
12 N/A This PR does not touch COMGR or HIP library loading logic or fix a…
13 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735-738 and 1248-1267 add cache-name tags (kdb1, vpf1) and admission…
14 N/A This PR does not touch examples/, expected.json…
§Q graded 7/7
# Verdict Evidence
1 N/A No new test files are added or removed in this PR; only existing test files…
2 N/A This PR modifies the Python-only library/kernels/gfx942/attention_dense.py…
3 PASS Golden hashes in dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5 and…
4 PASS New golden entries are recorded for both llvm20 (dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5)…
5 PASS CPU tests in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1052 use values the parser genuinely rejects (e.g.…
6 N/A This PR does not refactor any platform gate or test harness.
7 N/A This PR only updates library spec validation in supports_attention_dense…

@yraparti yraparti 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.

rocKE checklist re-review of the fixes since 4072b4ae138a

ROCm/rocm-libraries#13205 · bbf25121809c · model gemini-4-argon, fallback gpt-5.5

PASS · graded 220/220 · BLOCKER 0, HIGH 2, MEDIUM 3, LOW 1, NEEDS-INFO 7

The diff was truncated before grading. Items that needed a missing hunk are NEEDS-INFO.

Since the last review (4072b4ae138a)

Resolved 19 · still open 5 · new 1

  • ✅ §A.10 was FAIL, now PASS — had asked: Add v_reg_prefetch=True to the kdbvpf golden cases (or add dedicated vpf golden cases) in test_attention_dense_gfx942_golden.py and record their hashes in attention_dense_gfx942_ir_sha256.json for all LLVM flavors.
  • ✅ §B.5 was FAIL, now PASS — had asked: Update test_attention_dense_gfx942.py, test_attention_dense_gfx942_golden.py, and test_attention_dense_gfx942_numeric.py to test the decoupled lds_num_buffers and v_reg_prefetch knobs ((2, False), (1, True), and (2, True) along with 'kdb1'/'vpf1' tags), or gate…
  • ✅ §C.10 was FAIL, now PASS — had asked: Update test_attention_dense_gfx942.py, test_attention_dense_gfx942_golden.py, test_attention_dense_gfx942_numeric.py, README.md, and AGENTS.md to reflect the split kdb1 / vpf1 tags and include v_reg_prefetch in _PRIVATE_PERTURBATIONS, type/mode rejection tests, and pipeline test…
  • ✅ §D.5 was FAIL, now PASS — had asked: Update dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py to add 'v_reg_prefetch': (True, False) to _SPEC_PERTURBATIONS, set v_reg_prefetch=True on the *_kdbvpf bases/test cases, and assert on the 'kdb1' and 'vpf1' kernel-name tags instead of…
  • ✅ §E.7 was FAIL, now PASS — had asked: Document v_reg_prefetch alongside lds_num_buffers in library/builders/gfx942/attention/prefill/README.md and library/dispatch/AGENTS.md.
  • ✅ §E.10 was FAIL, now PASS — had asked: Update the test specs, expected kernel-name tags (kdb1, vpf1), and golden hashes in test_attention_dense_gfx942.py, test_attention_dense_gfx942_golden.py, test_attention_dense_gfx942_numeric.py, and attention_dense_gfx942_ir_sha256.json to pass v_reg_prefetch=True where the full…
  • ✅ §E.13 was FAIL, now PASS — had asked: Update all stale kdbvpf1 / _use_kdb_vpf references across tests and docs to use kdb1, vpf1, and v_reg_prefetch=True, remove _use_kdb_vpf, and remove the nonexistent rocke_vs_aiter/ subdirectory from gfx942_dense_cfvst_kdb_vprefetch_case_study.md.
  • ✅ §E.17 was FAIL, now PASS — had asked: Reconcile the PR description and gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-15 with the recorded tables (10.74%-15.58% at the 12 measured configurations) and remove the stale 'Not yet recorded' text.
  • ✅ §G.2 was FAIL, now PASS — had asked: Add v_reg_prefetch=True variants (both alone with lds_num_buffers=1 and combined with lds_num_buffers=2) to test_cfvst_pipeline_strict_numeric, _CFVST_KNOB_CASES, and test_kdbvpf_pipeline_lse in test_attention_dense_gfx942_numeric.py.
  • ✅ §G.3 was FAIL, now PASS — had asked: Update test_attention_dense_gfx942.py to add "v_reg_prefetch": (True, False) to _SPEC_PERTURBATIONS, test kdb1/vpf1 tags and v_reg_prefetch=True in test_bf16_cfvst_kdb_vpf_are_separate_opt_in_variants, and re-run tools/run_checks.py plus ROCKE_LLVM_FLAVOR=llvm23 golden checks.
  • ✅ §G.4 was FAIL, now PASS — had asked: Add unit, golden, and numeric test cases that explicitly set v_reg_prefetch=True (with lds_num_buffers=1 and lds_num_buffers=2) and verify type/mode rejection for v_reg_prefetch.
  • ✅ §G.6 was FAIL, now PASS — had asked: Remove the stale "Not yet recorded" sentence and update the 10.1-16.3% range to 10.7-15.6% in gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-15, and update README.md:194 and test_attention_dense_gfx942_golden.py:19-20 to state that lds_num_buffers=2 and v_reg_prefetch=True are…
  • ✅ §G.17 was FAIL, now PASS — had asked: Fix platform/Python to platform/python in bench_rocke_5way_specs.py:126 and gfx942_dense_cfvst_kdb_vprefetch_case_study.md:394, align the directory paths in gfx942_dense_cfvst_kdb_vprefetch_case_study.md:257-407 with…
  • ✅ §G.21 was FAIL, now PASS — had asked: Update test_attention_dense_gfx942.py:353-380,1002-1024, test_attention_dense_gfx942_golden.py:284-298, and test_attention_dense_gfx942_numeric.py:1286,1344-1386,1436 to pass v_reg_prefetch=True on the KDB+VPF cases and assert the kdb1/vpf1 tags produced by _tuning_name_tags.
  • ✅ §J.4 was FAIL, now PASS — had asked: Update README.md:194 and gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3 to name both lds_num_buffers=2 and v_reg_prefetch=True (or add a separate row in README.md for v_reg_prefetch=True) so the docs match the independent symbols in Gfx942AttentionDenseSpec.
  • ⏳ §D.1 still FAIL (HIGH): Put the knob on the KernelSpec and delete the environment read.
  • ⏳ §E.2 still FAIL (MEDIUM): Query the device through rocke.runtime.hip_module instead of importing torch.
  • ⏳ §F.3 still FAIL (MEDIUM): Retitle as type(scope): summary, 10–80 characters, scope [a-z0-9-]+.
  • ⏳ §G.11 still FAIL (HIGH): Include the (use_cfvst=True, lds_num_buffers=2, v_reg_prefetch=True) combination in the production tuning sweep or default selector policy for validated BF16 D128 causal shapes, or explicitly scope the PR title and summary to opt-in tuning/spec plumbing rather than a shipped default latency reduction.
  • ⏳ §G.25 still FAIL (MEDIUM): Add SGPR counts and static ISA instruction-count deltas (e.g., ds_read/ds_write, s_waitcnt, s_barrier) per variant to the register/codegen table in gfx942_dense_cfvst_kdb_vprefetch_case_study.md:137-144.
  • 🆕 §F.7 new FAIL (LOW): Run pre-commit run --all-files (or black and end-of-file-fixer) on all touched files and commit the formatting and trailing-newline fixes.

Findings

  • HIGH §D · dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:282 · Put the knob on the KernelSpec and delete the environment read.
  • HIGH §G · dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:265 · Include the (use_cfvst=True, lds_num_buffers=2, v_reg_prefetch=True) combination in the production tuning sweep or default selector policy for validated BF16 D128 causal shapes, or explicitly scope the PR title and summary to opt-in tuning/spec plumbing rather than a shipped default latency reduction.
  • MEDIUM §E · dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:471 · Query the device through rocke.runtime.hip_module instead of importing torch.
  • MEDIUM §F · summary · Retitle as type(scope): summary, 10–80 characters, scope [a-z0-9-]+.
  • MEDIUM §G · dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:129 · Add SGPR counts and static ISA instruction-count deltas (e.g., ds_read/ds_write, s_waitcnt, s_barrier) per variant to the register/codegen table in gfx942_dense_cfvst_kdb_vprefetch_case_study.md:137-144.
  • LOW §F · dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:532 · Run pre-commit run --all-files (or black and end-of-file-fixer) on all touched files and commit the formatting and trailing-newline fixes.

Needs info

  • §A.3 dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds v_reg_prefetch and updates supports_attention_dense (lines 1209-1258); while library/dispatch/ changes are Python-only by design, C++ selector/spec parity files are not in the diff to confirm whether Gfx942AttentionDenseSpec has a C++ selector twin.
  • §B.6 dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1209-1258 updates supports_attention_dense to remove the old bf16 D128 CFVST spill policy rejection and instead gates only on hardware/algorithmic invariants (rows-per-DMA==1 at lines 1223-1228) and NOT_YET_IMPLEMENTED unvalidated feature combinations, while tuning scope lives in dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/dense_rules.py:94-105. — no diff line supports this verdict
  • §C.1 Shared predicates and pipeline logic are factored into named helpers _use_kdb, _use_vpf, _gfx942_cfvst_tuning_scope, and softmax_pv in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:883-890, dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2044-2118, and dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/dense_rules.py:94-105. — no diff line supports this verdict
  • §C.9 Exact-type validation (type(...) is not bool/int) is applied across all three spec knobs (use_cfvst, lds_num_buffers, v_reg_prefetch) in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478-491, and sliding_window, causal_diag_split, and use_sinks rejections are enforced across both CFVST and KDB/VPF gates in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1209-1258 and dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/dense_rules.py:94-105. — no diff line supports this verdict
  • §E.14 The diff of dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py is truncated at line 2333 right before the LSE epilogue merge resolution.
  • §F.8 Not resolved since previous review: GitHub review thread states (bot/Copilot findings and resolution status) are not included in the provided PR diff context.
  • §G.12 The diff touches only the Python kernel builder dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py and Python dispatch files, and does not show whether any C++ builder or selector exists for attention_dense on gfx942.

Section notes

  • §A: Resolved item 10 by adding independent KDB, VPF, and combined KDB+VPF golden cases across default, persistent, and LSE paths.
  • §C: All items in Section C pass; the previous FAIL on item 10 has been resolved by updating all tests, golden hashes, dispatch tuning axes/rules, and documentation for the independent lds_num_buffers (_kdb1) and v_reg_prefetch (_vpf1) knobs.
  • §E: Re-review of head bbf2512: items 7, 10, 13, and 17 were resolved in the new commits; item 2 remains FAIL and item 14 remains NEEDS-INFO due to diff truncation.
  • §H: Trace of device-side bounds/masks in the diff: 1. Pipeline KV tile loop bound (n_up / last_j = n_up - 1): extent comes from the existing causal tile bound n_up (unchanged in this PR). The pipeline visits tile 0 in the prologue, tiles [0, n_up - 1) in the scf_for_iter loop (attention_dense.py:2220-2227), and tile n_up - 1 in the epilogue (attention_dense.py:2281-2285), issuing K/V loads only for 0..n_up - 1. Each tile j applies do_mask(s, j, lower=False, upper=True) via softmax_pv (attention_dense.py:2057, 2251, 2283), matching the visited tile range. 2. LDS K buffer slot index (kbuf = j % K_BUFS, next_kbuf = (j + 1) % K_BUFS, last_kbuf = last_j % K_BUFS at attention_dense.py:2238, 2241, 2281): extent is K_BUFS = spec.lds_num_buffers (attention_dense.py:1563), matching the K_lds allocation [K_BUFS, BN, LDROW] (attention_dense.py:1575). 3. No paged/indirection tables (block_tables) or runtime varlen arrays (kv_lens…
  • §J: Shapes: | Equation / Allocation | Operands & Inner Dimensions | Result vs Declared | |---|---|---| | T_variant = median(t_variant,1, ..., t_variant,5) (case_study.md:245) | 5 scalar round latency samples -> scalar median | Scalar latency | | Reduction (%) = 100 * (1 - T_after / T_before) (case_study.md:256) | Scalar / scalar -> dimensionless percentage | Scalar percentage | | R_r = 100 * (1 - T_full,r / T_baseline,r) (case_study.md:260) | Per-round scalar / scalar -> dimensionless percentage | Scalar percentage | Symbols: | Symbol | Defined at | Domain | |---|---|---| | B, S, Sq, Skv, Hq, Hkv, D | case_study.md:29-40 | Positive integers (tensor extents) | | T_variant, t_variant,r | case_study.md:242-246 | Positive real GPU latency per launch | | R_r, Min, Max | case_study.md:258-266 | Real percentage latency reduction (-inf, 100] | | use_cfvst, lds_num_buffers, v_reg_prefetch | README.md:193-195, case_study.md:3,207, AGENTS.md:183-197 | Spec knobs…
  • §K: Identity table for gfx942_dense tuning changes: - v_reg_prefetch: added to Gfx942AttentionDenseSpec (default False) and _GFX942_DENSE_AXES (_flag("v_reg_prefetch")); adds "v_reg_prefetch": False to defaults(), updating the defaults fingerprint and re-keying gfx942_dense config_keys. - lds_num_buffers: moved from DENSE_UNTUNABLE_KNOBS["gfx942"] to _GFX942_DENSE_AXES (_values("lds_num_buffers", 1, (2,))); default remains 1. - use_cfvst, use_v_swizzle, v_row_pad: scope in _DENSE_ARCH["gfx942"] updated via _gfx942_cfvst_tuning_scope to include BF16 D128 standard causal attention; defaults remain None (resolving to False/False/8 on BF16 D128).

Graded with the rocKE PR checklist, one model pass per section. FAIL rows that sit on a diff line are inline comments.

§A graded 14/14
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1374 modifies only the Python-only gfx942 dense attention kernel emitter (the C++ attention builder is for unified_attention_2d_tiled_scalar).
2 N/A No core lowering-op or op-handler files (core/lower_*, core/ir) are modified in this PR.
3 NEEDS-INFO dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:443 adds v_reg_prefetch and updates supports_attention_dense (lines 1209-1258); while library/dispatch/ changes are Python-only by design, C++ selector/spec parity files are not in the diff to confirm whether Gfx942AttentionDenseSpec has a C++ selector twin.
4 N/A No C++ kernel or selector twin is modified in this PR.
5 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:9 leaves existing golden hashes (such as default_d128_bf16_causal) unchanged while adding new opt-in entries.
6 N/A This PR modifies a Python-only kernel family (gfx942 attention_dense) that has no C++ kernel emitter twin for cross-engine…
7 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1562 and 2190 guard the new pipeline behind USE_PIPELINE (USE_KDB or USE_VPF) and guard kbuf offsets behind kbuf is not None at line 1818, keeping covered default shapes byte-identical.
8 N/A No C++ files or C++-mirrored emitters are touched in this PR.
9 N/A No shared op-handler fix or lowerer-only architecture divergence is introduced in this PR.
10 PASS Resolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:284-327 and dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5-169 now record golden hashes…
11 N/A No new IR ops are added in this PR.
12 N/A core/backend.py and ROCKE_BACKEND=both handling are not modified in this PR.
13 N/A LLVM IR lowering (.ll emission) and ROCKE_DEBUG_LOC handling are not modified in this PR.
14 N/A No classic helpers under helpers/ or platform/cpp/helpers/ are modified in this PR.
§B graded 6/6
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1209-1258 classifies unvalidated feature combinations on BF16 CFVST and lds_num_buffers=2/v_reg_prefetch=True with explicit NOT_YET_IMPLEMENTED: prefixes, distinguishing them from…
2 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1209-1258 and 1374-1386 keep supports_attention_dense as the single functional gate consulted by build_attention_dense, while Gfx942AttentionDenseSpec.__post_init__ (lines 478-495)…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440-443 and 867 keep default routing and policies unchanged (lds_num_buffers=1, v_reg_prefetch=False, _use_cfvst False for bf16), as verified in…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478-491 validates type(self.use_cfvst) is not bool, type(self.lds_num_buffers) is not int, and type(self.v_reg_prefetch) is not bool in Gfx942AttentionDenseSpec.__post_init__…
5 PASS Resolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:326-327,1005-1064,1120-1142,2091-2093, dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:284-327…
6 NEEDS-INFO dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1209-1258 updates supports_attention_dense to remove the old bf16 D128 CFVST spill policy rejection and instead gates only on hardware/algorithmic invariants (rows-per-DMA==1 at lines 1223-1228) and NOT_YET_IMPLEMENTED unvalidated feature combinations, while tuning scope lives in…
§C graded 10/10
# Verdict Evidence
1 NEEDS-INFO Shared predicates and pipeline logic are factored into named helpers _use_kdb, _use_vpf, _gfx942_cfvst_tuning_scope, and softmax_pv in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:883-890, dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2044-2118, and…
2 PASS All pipeline variants are controlled via spec knobs (use_cfvst, lds_num_buffers, v_reg_prefetch) inside the single build_attention_dense(spec) builder in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1374-1444, and the…
3 PASS Kernel naming emits codegen knob tags (kdb1, vpf1, cfvst1, vswz1) in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735-749 without embedding workload dimensions.
4 PASS All kernel and dispatch changes are scoped to gfx942-specific modules/entries (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:353-443 and dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:264-270) without…
5 PASS The diff is tightly scoped to the gfx942 dense attention kernel (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:114), gfx942 tuning axes/rules (dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:171)…
6 PASS softmax_pv is factored out in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2044-2118 so the existing single-buffer tile_body remains byte-identical (existing golden hashes unchanged in…
7 N/A This PR is a targeted performance optimization adding opt-in spec knobs rather than a standalone cleanup refactor.
8 PASS The PR extends Gfx942AttentionDenseSpec (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440-443), reuses existing DSL primitives (b.smem_alloc, b.sync_lds_only, _cfvst_load_v, _cfvst_store_v) in…
9 NEEDS-INFO Exact-type validation (type(...) is not bool/int) is applied across all three spec knobs (use_cfvst, lds_num_buffers, v_reg_prefetch) in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478-491, and sliding_window, causal_diag_split, and use_sinks rejections are enforced across both CFVST and KDB/VPF gates in…
10 PASS Resolved from previous review: commits 4072b4ae138a..bbf25121809c removed the dead _use_kdb_vpf helper and updated all code, tests, goldens, dispatch rules, and docs for the widened spec (v_reg_prefetch and split _kdb1/_vpf1 tags) in…
§D graded 21/21
# Verdict Evidence
1 FAIL dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:282 reads the environment
2 N/A No Capability declarations or candidate registrations are added or modified in this PR.
3 N/A No candidate _supports or admits methods in the dispatcher layer are touched by this PR.
4 PASS Spec helpers and supports_attention_dense(spec, arch) remain pure functions of the spec and explicit arch parameter with no host device probes (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1207-1258).
5 PASS Resolved since previous review: _use_kdb_vpf was removed from dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:883-890, _use_kdb and _use_vpf emit distinct 'kdb1' and 'vpf1' tags in _tuning_name_tags…
6 N/A No cohort routing changes are made in this PR; the new pipeline modes are spec-level opt-ins that leave grid and block launch…
7 N/A No selector heuristics or hand-pinned routing overrides are added or modified in this PR.
8 N/A No cohort routing predicates are introduced or changed in this PR.
9 N/A No new KernelCandidate or architecture is registered in ATTENTION_ROUTE_REGISTRY or ATTENTION_EXECUTION_REGISTRY.
10 PASS The new fields (lds_num_buffers=2, v_reg_prefetch=True) are internal codegen/scheduling knobs rather than user-facing problem/request features, and are reachable through dispatcher tuning axes…
11 PASS The BF16 CFVST, KDB, and VPF changes remain strictly opt-in (use_cfvst=None resolves to False for BF16, lds_num_buffers=1, v_reg_prefetch=False by default in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:374, :440…
12 N/A This PR does not add or rename any dispatcher candidate, change candidate priority, or introduce a custom ranker.
13 N/A This PR does not modify CandidateRegistry.select, pin resolution, or any dispatch wrapper entry point.
14 N/A This PR does not modify KernelId caching keys or change the kernel argument ABI layout.
15 N/A This PR does not add a new dispatcher candidate or architecture module to the registry.
16 N/A This PR does not introduce a new operator family.
17 N/A This PR does not add a new dispatcher candidate or change problem-to-spec candidate routing rules.
18 N/A This PR does not modify registry ratchets, torch bindings, or test exempt sets.
19 PASS dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:191-208 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:186-195 accurately document that use_cfvst=True, lds_num_buffers=2, and v_reg_prefetch=True on…
20 N/A This PR does not modify a problem-to-spec selector or a kernel family with a C++ selector/builder twin.
21 N/A This PR implements new opt-in kernel pipeline features (BF16 CFVST, K LDS double buffering, and V register prefetch) rather than…
§E graded 17/17
# Verdict Evidence
1 N/A This PR only modifies files under library/ and touches no files under platform/.
2 FAIL dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:471 adds import torch
3 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:224 imports torch lazily inside @​requires_gfx942_gpu test functions while non-GPU unit tests do not import torch.
4 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:472 imports downward from kernels and dispatch, and dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py adds no upward…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:29 is a Python script using pathlib.Path with no committed .sh files or /tmp, nproc, or sudo calls.
6 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2249 preserves unused tuple unpacking with underscore prefixes (_d0, _t0) and existing golden hashes in…
7 PASS Resolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:194-195 and dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:184-198 now document v_reg_prefetch alongside lds_num_buffers…
8 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:134 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1005 use descriptive references without Jira IDs, PR numbers, or GitHub handles in code or…
9 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440 and accompanying test/doc files are all scoped to the gfx942 BF16 D128 CFVST, K double-buffering, and V prefetch change.
10 PASS Resolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1005-1043, dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:285-327…
11 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:1 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:186 are process-required deliverables…
12 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1209 explicitly scopes the opt-in knobs to the gfx942 dense kernel.
13 PASS Resolved since previous review: _use_kdb_vpf was removed in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:883-890, all test references in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:57-58…
14 NEEDS-INFO The diff of dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py is truncated at line 2333 right before the LSE epilogue merge resolution.
15 PASS All parameters in modified helpers in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1815 (_async_load, load_pipeline_k, do_qk, softmax_pv, publish_prefetched_v) are used in their function bodies.
16 N/A This item governs reviewer severity grading rather than code in the pull request diff.
17 PASS Resolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-12 and :158-193 now consistently report relative ratios (10.74-15.58% lower latency at the 12 measured…
§F graded 12/12
# Verdict Evidence
1 PASS Branch users/Parthiv911/rocke/gfx942-dense-cfvst-kdb-vpf matches the recognized users/<user>/... prefix (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:114).
2 PASS branch users/Parthiv911/rocke/gfx942-dense-cfvst-kdb-vpf has a rocke path segment
3 FAIL title perf(rocke): bf16 D128 CFVST, K double buffering, and V prefetch in gfx942 dense prefill is 88 characters and does not match type(scope): summary with a 10–80 character length
4 PASS description is at least 30 characters and contains an issue reference
5 PASS test file dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py is in the diff
6 PASS All 13 changed files are Python, Markdown, or JSON golden hash files (e.g., dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5); no keys, certs, or secrets are added.
7 FAIL Was NEEDS-INFO; the new commits in 4072b4ae138a..bbf25121809c introduced missing trailing newlines (\ No newline at end of file) across 9 files (e.g., dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:532, dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/dense_rules.py:370, dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:1082), and…
8 NEEDS-INFO Not resolved since previous review: GitHub review thread states (bot/Copilot findings and resolution status) are not included in the provided PR diff context.
9 N/A The PR base branch is develop, so this is not a stacked PR targeting a feature branch.
10 PASS The PR keeps the kernel changes, dispatch rules, tests, benchmark script, and case study together without artificial size-cap splitting (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:114).
11 PASS Added tests exercise real functionality (spec validation, dispatch tuning space, LDS budget, golden IR hashes, and numeric accuracy) in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1005…
12 PASS The PR title and body are populated in the PR metadata above and match the files in the diff (dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:1).
§G graded 34/34
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1253 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:284 pair IR golden hashes with independent on-GPU numeric validation…
2 PASS Resolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1285-1291, 1347-1352, and 1443-1450 now exercise all independent pipeline modes ((1, False), (2, False), (1, True), (2, True)) on GPU against…
3 PASS Resolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:326-327 adds v_reg_prefetch to _SPEC_PERTURBATIONS, lines 1005-1043 test _use_kdb/_use_vpf and _kdb1/_vpf1 name tags independently, and…
4 PASS Resolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1005-1145, dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:284-327, and…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1227 uses _MULTI_ITEM_NP = 3 and sq=256, skv=192 (line 1249) with docstrings explaining how multi-item persistent grids and odd n_up > 1 reach the epilogue K-slot-0 read and…
6 PASS Resolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-12 removes the stale 'Not yet recorded' claim and updates the range to 10.74-15.58% matching lines…
7 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:155-172 and dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:129-161 specify…
8 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:100-101 explicitly rejects any dtype other than bf16 or head dim other than 128 via argparse.ArgumentTypeError with no silent dtype fallback.
9 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:64-77 sources VGPR count, spill count, and scratch bytes directly from compiled code-object notes (.vgpr_count, .vgpr_spill_count…
10 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:90-105 and 204-218 lock hardware (gfx942, 304 CUs), software stack, commit SHA, relative speedup ratios (no absolute latencies), and FP32…
11 FAIL Partially addressed in dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:265-269 and dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/dense_rules.py:94-145 by exposing use_cfvst, lds_num_buffers, and v_reg_prefetch in the tuning space, but dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:199-207 and dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:921-945 show that the default spec still leaves all three off and the production…
12 NEEDS-INFO The diff touches only the Python kernel builder dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py and Python dispatch files, and does not show whether any C++ builder or selector exists for attention_dense on gfx942.
13 N/A This PR does not introduce or recommend any new LLVM intrinsic .td overload classes or mangled intrinsic symbols.
14 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:16 and 86 state that bottlenecks and sync-point stalls were classified using profiling and threadtrace alongside empirical GPU-timed lever…
15 N/A The review is graded directly from the provided PR diff against head bbf2512.
16 N/A This PR ships a completed implementation and benchmark case study rather than a pre-implementation plan.
17 PASS Resolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:124 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case…
18 PASS The validation guard in dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:667-682 and 708-720 wires the torch.testing.assert_close verdict to abort the run immediately, takes median over 5 rounds of 50…
19 PASS Fixtures in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1227-1238 (_multi_item_persistent with _MULTI_ITEM_NP = 3 so workgroups run >2 items with a ragged tail to expose LDS hand-off) and 1248-1251 (odd n_up=3…
20 N/A This PR does not add or modify a text detector or linter enforcing a ban on claims.
21 PASS Resolved since previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:883-890 removes the coupled _use_kdb_vpf helper in favor of independent _use_kdb and _use_vpf, and…
22 PASS Every new golden fixture entry in dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5-8,61-68,73-80,89-92,113-120,137-140 records both bytes and sha256 with no build-error skips, and…
23 PASS The case study dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:159-195,291-306 and benchmark harness…
24 PASS In dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5-140 and test_attention_dense_gfx942_golden.py:284-327, no pre-existing golden hashes were modified; only 10 new opt-in cases (cfvst, kdb, vpf, kdbvpf…
25 FAIL Unresolved from previous review: in dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:129-151, VGPR, spill count, and scratch bytes before and after are reported alongside the 12-shape corpus A/B (159-195), but static ISA instruction-count deltas (waits, barriers, LDS reads/writes) and SGPR counts per kernel touched are still not reported.
26 PASS The case study dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:291-306 and benchmark harness…
27 PASS Both dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:45-51 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:180-215…
28 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:186-196 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-8,291-306 explicitly document…
29 N/A This PR does not swap any guarded primitive for a fast primitive (exp2_fast policy is untouched).
30 PASS In dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:129-151, spill and scratch claims are backed by reading .vgpr_count, .vgpr_spill_count, and .private_segment_fixed_size from the…
31 PASS In dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:515-559, the baseline is the exact unmodified attention_tuning_spec(req, 'gfx942_dense').kernel_spec shipped on develop, and the V-LDS pad (0 at…
32 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:129-144,272-288,308-469 and `dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py…
33 PASS The changed spec resolvers (resolved_use_cfvst, resolved_v_row_pad, resolved_use_v_swizzle, _lds_bytes, kernel_name, and _gfx942_cfvst_tuning_scope) are evaluated and differential-tabled across their input domain in…
34 PASS In dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1437-1476, test_cfvst_pipeline_lse_modes runs all four independent pipeline modes (cfvst_only, kdb_only, vpf_only, kdb_vpf) with emit_lse both on and off via…
§H graded 5/5
# Verdict Evidence
1 N/A This PR only modifies the dense prefill kernel (attention_dense.py) and tuning axes to add opt-in CFVST, K LDS double buffering…
2 N/A This PR applies to dense prefill attention and does not use page tables, block_tables, or any device-side indirection values.
3 PASS In dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2201-2202, 2238, 2241, and 2281, the hot-loop b.div/b.mod divisors are V_DIM_PAIRS (64, since head_size == 128 is enforced at attention_dense.py:1246) and K_BUFS…
4 N/A This PR does not construct or modify any device-side mask or bound from runtime sequence-length arrays (kv_lens, cu_seqlens)…
5 N/A No new launch runtime inputs that feed device-side bounds or masks are introduced or modified in this PR (lds_num_buffers…
§I graded 6/6
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:23 documents the Step-0 lever sweep across the tuning space and compares achievable winning configurations against the shipped…
2 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478 loudly rejects non-exact knob types in post_init, and supports_attention_dense at line 1209 loudly rejects unsupported knob combinations with explicit diagnostic reasons.
3 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:351 extends _INJECTIVITY_BASES for generated knob-perturbation coverage and dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:916 adds…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:105 records both the shipped Baseline kernel and the achievable Winning kernel columns alongside their relative speedup and…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:304 generates an explicit replay_command.sh script with provenance tracking, and…
6 N/A This PR does not add or modify any DSL primitive or hardware instruction interface; it only adds opt-in kernel spec knobs…
§J graded 7/7
# Verdict Evidence
1 PASS Scalar latency-reduction equations in dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:245-266 and LDS slot descriptions in…
2 PASS All formula symbols (T_variant, t_variant,r, T_after, T_before, R_r, Min, Max) are defined in-place with consistent domains in `dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.m…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:186-196 links to gfx942_dense_cfvst_kdb_vprefetch_case_study.md and states only the summary table delta without duplicating the methodology or algorithm.
4 PASS Resolved in the latest commits: dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:194-195,212, `dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md…
5 N/A The PR does not make asymptotic scaling or big-O complexity claims in its documentation or comments.
6 PASS Resolved in the latest commits: dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3-8 removed the stale 'Not yet recorded' sentence, lines 274-309 record complete environment and baseline…
7 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:186-189 serves as the directory entry point and links to the companion case study…
§K graded 13/13
# Verdict Evidence
1 N/A This PR updates axes and scope rules for the existing gfx942_dense KnobSpace and does not add a new tuned candidate or replace…
2 PASS Resolved since the previous review: dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:171 and :265-269 classify lds_num_buffers and v_reg_prefetch as KnobAxis entries in _GFX942_DENSE_AXES after enabler use_cfvst (leaving only…
3 PASS Resolved since the previous review: declaring _flag("v_reg_prefetch") in dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:269 adds v_reg_prefetch=False to the variant's declared defaults fingerprint (re-keying gfx942_dense…
4 PASS Resolved since the previous review: dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:268-269 declares lds_num_buffers (default 1) and v_reg_prefetch (default False) on _GFX942_DENSE_AXES, so DenseKnobSpace.defaults() includes…
5 PASS Resolved since the previous review: dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/dense_rules.py:94-105 and :143-145 update the scope predicates via _gfx942_cfvst_tuning_scope (evaluating only base-spec fields) so use_cfvst…
6 PASS Resolved since the previous review: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1209-1258 enforces BF16 D128 CFVST, KDB, and VPF legality in supports_attention_dense, which gates both sweeps and explicit pins in…
7 N/A KnobSpace.base(req) is not modified in this PR.
8 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:478-491 validates use_cfvst, lds_num_buffers, and v_reg_prefetch with exact type checks (type(...) is not bool / int) and raises ValueError rather than coercing with…
9 N/A The benchmark added in `dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.…
10 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:970-976 and dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:207-208 preserve bare tuning_id resolution within the production sweep only, while the…
11 N/A No sweep entry points (iter_dispatch_*, pin_to_spec, sweep_space) are modified in this PR.
12 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440-443 and :867 keep lds_num_buffers=1, v_reg_prefetch=False, and _use_cfvst (False for bf16) as defaults, and…
13 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:581-584 delegates legality checking to dense.supports_attention_dense(spec, arch="gfx942") and aborts on any failure rather than silently dropping…
§L graded 10/10
# Verdict Evidence
1 N/A The PR does not add or modify a gfx target in arch_specs.json or the C++ arch/ISA registries.
2 N/A The PR does not add or change any MMA op_id or fragment layout in core/arch/target.py or cpp/core/lower_llvm/mma.cpp.
3 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1951 continues to use the existing mfma_32x32x8_for_dtype(b, dtype, k_pack, q_packs[ks], acc) helper without hardcoding new intrinsic names or altering atom shapes/lane maps.
4 N/A The PR is scoped to the existing gfx942 kernel and does not modify wave-size definitions or target wave-size logic.
5 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1815 implements gfx942 K LDS double-buffering and V register prefetching directly using standard gfx942 buffer loads and perm_b32 transpose without leaking gfx950 ds_read_tr* or…
6 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440 and dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:268 keep the pipeline knobs (lds_num_buffers, v_reg_prefetch) in the library kernel and dispatch…
7 N/A The PR does not add or modify logical dtypes, bit-packing contracts, host pack/unpack routines, or FP8 dialect handling.
8 N/A The PR operates on unscaled bf16/fp16 attention and does not touch scaled-MMA contracts or WMMA scale ids.
9 N/A The PR does not introduce a new architecture target.
10 N/A The PR does not modify intrinsic_arch_domain.<flavor>.json artifacts or LLVM flavor membership lists.
§M graded 10/10
# Verdict Evidence
1 PASS Host booleans (USE_PIPELINE, USE_KDB, USE_VPF, masked) drive Python control flow while SSA loop carries (m_new, l_new, *o_acc) are yielded through b.scf_yield and read from loop.results in…
2 N/A This PR does not touch legalize_for_target or any target legalization passes.
3 N/A This PR does not modify print_ir or the ck.dsl.ir/v1 serialization implementation.
4 N/A This PR does not modify portable IR schemas, importers, magic division helpers, or builder recording.
5 PASS Async K tile loads compute an unswizzled wave-uniform destination offset per row and consumers drain VMEM via b.s_waitcnt(vmcnt=0) followed by b.sync_lds_only() before reading LDS in…
6 PASS All barriers (b.sync_lds_only(), b.s_waitcnt(vmcnt=0)) are emitted unconditionally in the workgroup-uniform prologue, scf_for_iter body, and epilogue in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2213-2286.
7 N/A This PR does not touch ISABackend.buffer_rsrc_word3, hard-code buffer resource word 3, or use TemporalHint.STREAMING.
8 N/A This PR does not add intrinsic declarations or modify lowering backend selection precedence.
9 N/A This PR does not touch C entry points, headers under cpp/include/rocke/, or C++ host launch code.
10 N/A This PR does not modify !dbg emission, module debug info flags, or DWARF consumers.
§N graded 18/18
# Verdict Evidence
1 N/A The PR does not add or promote any helpers under platform/python/rocke/helpers/.
2 N/A The PR modifies an existing lower-level DSL attention kernel and does not introduce new helper abstractions or modify…
3 N/A The PR implements a custom K-LDS double-buffer and V-register-prefetch loop in attention_dense.py rather than modifying or using…
4 N/A The PR optimizes an existing attention prefill kernel and does not add or modify epilogue/graph fusion kernels.
5 N/A The PR does not add or modify any public API in rocke.helpers.tiling.
6 N/A The PR does not add or modify front-door/toolbox tiling helpers or LayoutStyle classes.
7 N/A The PR does not use helpers/tiling layout overrides or modify tiling MMA soundness gates.
8 N/A The PR does not touch helpers/tiling memory verbs (lds_tile_alloc, lds_store, lds_read) or emit.py.
9 N/A The PR does not use helpers/tiling N-D tensor axis roles, FlowStage, or label transforms.
10 N/A The PR does not modify helpers/tiling emit, LDS staging, or MMA issue logic.
11 N/A The PR does not use TileMma, Tiling, lds_swizzle, or derive_sched_group_counts from helpers/tiling.
12 N/A The PR does not make helpers/tiling bank-conflict simulator or coalescing_probe gate claims.
13 N/A The PR does not construct WarpDistributionEncoding, call make_tile_desc, or touch RegisterMapper.
14 PASS The double-buffered K and V-prefetch pipeline explicitly places b.s_waitcnt(vmcnt=0) and b.sync_lds_only() around prologue, WAR, and epilogue LDS reads and writes (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2213…
15 PASS LDS allocation and budget checks account for the padded/swizzled row stride and independent K buffer count (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1066…
16 N/A The PR does not use optimize_layout or evaluate_transform from helpers/tiling.
17 N/A The PR does not touch tiling_recorder.py, analysis/roundtrip.py, or tiling visualization.
18 N/A The PR does not touch InterleavedStyle or demo kernels under helpers/tiling/kernels/.
§O graded 16/16
# Verdict Evidence
1 N/A This PR only modifies files under library/ and does not touch platform core verifier or lowerer files.
2 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2220 — the new scf_for_iter loop uses i32 bounds/step, yields matching iter_args via b.scf_yield(m_new, l_new, *o_acc) at line 2273, and reads loop.results only after the loop exits at…
3 N/A This PR does not modify IRBuilder, intrinsic declaration tables, or metadata numbering in platform core.
4 N/A This PR does not touch IR type definitions, SmemType, or IR parsers in platform core.
5 N/A This PR does not touch core/passes.py, cpp/core/passes.cpp, or opcode purity tables.
6 N/A This PR does not modify constant folding passes in Python or C++ core.
7 N/A This PR does not modify kernel attribute lowering, CodegenPolicy validation, or COMGR options in platform core.
8 N/A This PR does not set or modify SchedulerStrategy or CodegenPolicy.
9 N/A This PR does not modify platform waitcnt or barrier lowering logic (and targets gfx942 rather than gfx950).
10 N/A This PR does not modify platform lowerer attribute validation or parameter LLVM type helpers.
11 N/A This PR does not touch ArchTarget or target resolution in platform core.
12 N/A This PR does not modify platform core width/size caps or arch default resolution.
13 N/A This PR does not touch any C headers or structs under cpp/include/rocke/.
14 N/A This PR does not add or modify any C/C++ files or CMake files.
15 N/A This PR does not touch C++ engine fallback logic or backend flavor resolution in platform core.
16 N/A This PR does not touch C++ runtime/codegen gap areas or gfx1250 builders.
§P graded 14/14
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:440-443 adds defaulted keyword-only fields (lds_num_buffers: int = field(default=1, kw_only=True) and v_reg_prefetch: bool = field(default=False, kw_only=True)) on…
2 N/A This PR does not modify kernarg ordering, signature(), manifest args_signature, or GEMM/conv ABI definitions.
3 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:551-554 takes grid=dense.attention_dense_grid(spec) and block=dense.attention_dense_block(spec) directly from the spec helpers rather than recomputing…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1066 charges k_bytes *= spec.lds_num_buffers in _lds_bytes matching K_lds = b.smem_alloc(dtype, [K_BUFS, BN, LDROW], name_hint="Klds") at line 1575, and…
5 N/A This PR does not touch WMMA/RDNA GEMM or GemmMultiD/GemmMultiAbd platform instances.
6 N/A This PR does not use or modify caller-zeroed workspaces (Stream-K, MoE sorting, fused MoE, or split-K).
7 N/A This PR does not touch Stream-K, persistent GEMM persistent_max_iters, GroupedGemmLauncher, or SUPPORT_MATRIX.md.
8 N/A This PR does not touch quantization helpers or MX GEMM.
9 N/A This PR does not introduce numeric emulation or quantized decode paths.
10 N/A This PR does not add or modify manifest kinds, emitters, or manifest runners.
11 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_5way_specs.py:532-554 compiles all kernels ahead of timing and constructs KernelLauncher instances, and lines 161-170 time repeated launches using GPU…
12 N/A This PR does not touch COMGR or HIP library loading logic or fix a hipError launch failure.
13 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:735-738 and 1239-1258 add cache-name tags (kdb1, vpf1) and admission guards in supports_attention_dense, which are tested in…
14 N/A This PR does not touch examples/, expected.json, platform/python/rocke/instances/, or helpers/.
§Q graded 7/7
# Verdict Evidence
1 N/A No new test files are added or removed in this PR; only existing test files under library/tests/ are modified.
2 N/A This PR modifies the Python-only library/kernels/gfx942/attention_dense.py builder and does not add a platform kernel family or…
3 PASS Golden hashes in dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:284 are used as an IR drift tripwire alongside GPU…
4 PASS New golden entries for the independent use_cfvst, lds_num_buffers, and v_reg_prefetch variants are recorded in dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:5 and…
5 PASS CPU tests in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1070 use values the parser genuinely rejects (e.g., use_cfvst='false', v_reg_prefetch='false'), and GPU tests in…
6 N/A This PR does not refactor any platform gate or test harness.
7 N/A This PR only updates library spec validation in supports_attention_dense and does not touch platform backend resolution or…

@AviralGoelAMD
AviralGoelAMD enabled auto-merge (squash) October 30, 2026 21:23
@AviralGoelAMD
AviralGoelAMD enabled auto-merge (squash) October 30, 2026 21:26
@cgmillette
cgmillette disabled auto-merge October 30, 2026 21:51
@cgmillette

Copy link
Copy Markdown
Contributor

Automated merge-queue status (rocKE merge monitor)

Hi @Parthiv911, I turned auto-merge off on this PR for now. Before a rocKE PR lands, the rocKE merge monitor checks it on top of today's develop branch, and this version would not land cleanly:

  • our latest review of this exact version found blocking problems, and they are still open

What to do: address the open items in our latest review (#13205 (comment)). After that, turn auto-merge back on; the monitor re-checks every push.

Nothing else changed: the monitor does not approve, reject or merge PRs. It only turned auto-merge off to keep develop green. This comment is updated in place.

Resolve conflicts with develop's gfx942 dense changes, which enable BF16
D128 CFVST by default. Keep develop's CFVST policy and layer the opt-in
K double buffer and V register prefetch on top; the pipeline now also
rejects bottom-right causal. Drop the BF16 CFVST opt-in tuning scope and
the CFVST-only golden cases, which now match the default, and re-bless
the gfx942 dense golden (develop's entries unchanged).
@Parthiv911

Copy link
Copy Markdown
Contributor Author

@cgmillette Please run your checks. Merge conflicts are resolved.

@cgmillette

Copy link
Copy Markdown
Contributor

Automated review: Model - qwen3.6:35b-a3b-coding-mtp-q4_K_M, effort: max

PR #13205 — add opt-in gfx942 BF16 CFVST and KDB/VPF (Parthiv911, AICK-1900) — 🟠 Follow-up: bench, docs assume CFVST off

Prior item Status
Ours 🔴 N1 (10-28): absolute timing in PR history 🟢 FIXED 831201a2 (10-30 02:04Z)
• 9b44078b, d9da5d5c off the branch; messages, body clean (ran)
• old SHAs still fetchable; purge is a maintainer's call
• our 10-30 auto-merge-off cited this stale 🔴
Ours 🟡 N1 (10-29): parity gate skips the opt-in specs 🟡 OPEN, no reply
• test_attention_ir_cpp_parity.py still builds opt-ins off only (read)
• 12 KDB/VPF goldens via C++ engine: 48/48 match, 4 flavors (ran)
aosewski (10-07) CHANGES_REQUESTED ×4: rebase, fp16 identity, S=1024/2048, evidence 🟢 FIXED, as on 10-29
• merges develop ca118033; default path = develop (ran)
• review still CHANGES_REQUESTED; aosewski re-requested
aosewski (10-14) ×4: provenance, ablation arms, replay 🟠 OPEN again at 1529294c
• bench aborts on all 12 shapes before timing (ran)
• 4 of 7 hashed sources changed since cc84e262 (ran)
• see N1
Rest of aosewski (10-14) ×12 and reachability; ours (10-15, 10-28); yraparti (10-18 → 10-29) incl. §D.1 🟢 FIXED, carried into 831201a2
• 831201a2 tree = 0f1fb474 tree (ran)
• merge keeps LSE m_i, sinks/bn64/persistent gate, injectivity bases (read)
• KDB/VPF still tunable axes; PR tests pass on merge (ran)
yraparti (10-22 → 10-29) §P.4: mirror LDS gate in C++ 🟡 MOOT, as before
• no C++ source names attention_dense (ran: grep; known_gaps.md:232)
• author's 10-30 reply unanswered; 1124/1127 threads resolved
AviralGoelAMD (10-30) APPROVED at 831201a2 🟡 Stale
• 1529294c changes the PR's patch in 7 files (ran)
• still counts on develop
Threads 🟡 77 of 78 resolved
• open: case_study.md:511 (yraparti 10-27, outdated, answered)
• blocks merge; yraparti or the author resolves it
Bots / CI 🟡 not run
• 6 workflows action_required: fork runs await maintainer approval
• 3 ✓ (bot checks); merge state blocked
• no Multi-Arch or Component CI since 10-22
Our checks 🟢 clean, apart from N1
• merge vs 2d675fde: clean, 4 behind / 2 ahead (ran)
• build, 35 ctest; parity ×3; golden gates ✓; differential 0 changed (ran)
• dense golden: develop's 39 kept, 12 PR cases re-blessed (ran)
• tests 624 ✓ / 1 skip (GPU numerics); rules 1–3 clean (ran)
• default path = develop: 400 requests, spec, name, IR (ran)
# Sev file:line Finding
N1 🟠 bench_rocke_7way_specs.py:1154, dispatch/AGENTS.md:211, case_study.md:3, :485, prefill/README.md:195, :204 Bench and docs still assume bf16 D128 CFVST is off
• impact: since #14367 it is on; bench aborts on all 12 shapes (ran); --verify-provenance cannot pass (read)
• impact: README, AGENTS.md, case study, title still say opt-in, "resolves to off" (read)
• fix: CFVST-on baseline; re-run or date results; fix text, title

Utility: 🟢 Positive — opt-in KDB/VPF on develop's CFVST default; default path unchanged; numerics author-run.


Legend: 🔴 blocking · 🟠 should-fix · 🟡 minor nit · 🟢 info/good · ⚪ retracted

Follow-up review: first pass by a local qwen3.6 model, verified by the orchestrator (Claude Opus 5.5). Checks: merge with develop, build + ctest, C++/Python parity, goldens, PR tests, default path vs develop, C++-engine lowering of the opt-in cases, the bench's pre-timing guards (CPU), history scan, CI at head. Flags whether a closer look is needed; not an approval or rejection.

@yraparti yraparti 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.

rocKE checklist re-review of the fixes since 0f1fb4741a3f

ROCm/rocm-libraries#13205 · 1529294c6010 · model gemini-4-argon, fallback gpt-5.5

PASS · graded 238/238 · BLOCKER 0, HIGH 3, MEDIUM 0, LOW 0, NEEDS-INFO 9

The diff was truncated before grading. Items that needed a missing hunk are NEEDS-INFO.

Since the last review (0f1fb4741a3f)

Resolved 0 · still open 1 · new 2

  • ⏳ §P.4 still FAIL (HIGH): Update the C++ gfx942 dense attention validator/builder to mirror lds_num_buffers in the LDS calculation and allocation, and cover it with a C++/Python parity test.
  • 🆕 §D.11 new FAIL (HIGH): Keep the BF16 D128 default policy resolving CFVST off, and make CFVST/KDB/VPF reachable only through explicit tuning knobs or an explicitly documented promotion decision.
  • 🆕 §G.6 new FAIL (HIGH): Update the comments and tests in axes.py, test_tuning_space.py, test_attention_dense_gfx942.py, and test_attention_dense_gfx942_golden.py to match the off-by-default BF16 CFVST policy (assertFalse(base.resolved_use_cfvst()) on the unpinned BF16 default and pass use_cfvst=True where CFVST/KDB/VPF are intended).

Findings

  • HIGH §D · dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:1073 · Keep the BF16 D128 default policy resolving CFVST off, and make CFVST/KDB/VPF reachable only through explicit tuning knobs or an explicitly documented promotion decision.
  • HIGH §G · dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3 · Update the comments and tests in axes.py, test_tuning_space.py, test_attention_dense_gfx942.py, and test_attention_dense_gfx942_golden.py to match the off-by-default BF16 CFVST policy (assertFalse(base.resolved_use_cfvst()) on the unpinned BF16 default and pass use_cfvst=True where CFVST/KDB/VPF are intended).
  • HIGH §P · dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1127 · Update the C++ gfx942 dense attention validator/builder to mirror lds_num_buffers in the LDS calculation and allocation, and cover it with a C++/Python parity test.

Needs info

  • §A.3 dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:461 adds the v_reg_prefetch spec/codegen knob and dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:186 makes lds_num_buffers tunable on gfx942; the new commits since the previous review do not resolve whether Gfx942AttentionDenseSpec has a C++ selector/spec-builder twin outside the diff that requires mirroring.
  • §D.8 Still NEEDS-INFO: the diff defines bf16_cfvst_supported and uses it in supports_attention_dense at dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:925, but the dispatch dense_rules/spec-override predicate hunk showing it imports the same cohort definition is missing.
  • §F.7 Unresolved since previous review (0f1fb4741a3f..1529294c6010): GitHub bot and Copilot review thread states, resolution statuses, and any deferred ticket IDs in review threads are not visible in the provided PR diff and metadata context.
  • §G.3 Unresolved from the previous review: the diff updates golden hashes in dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:84 and the PR body reports test counts, but the diff cannot by itself prove that tools/run_checks.py, the installed-golden IR gate, check_ir_validity.py, the pytest suites, GPU numeric tests, and the llvm23 byte-identity check were executed and passed on current head 1529294 (especially given the contradiction noted in item 6).
  • §G.12 Unresolved from the previous review: the diff does not include caller grep output or C++ files confirming that no live C++ selector or builder calls or mirrors gfx942 attention_dense.
  • §P.3 The diff for dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py is still truncated at line 825 before LaunchConfig construction, so I cannot verify whether the benchmark harness obtains launch geometry from the spec/candidate or recomputes it.
  • §R.3 Unresolved in the current diff: library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:455-469 maps the levers to the runbook and gfx942 architecture docs, but the PR still does not show checks against the matching utilities skills such as lds-optimization-rocke.md, lds-bank-conflict-expert/SKILL.md, prefetch-data-load-rocke.md, isa-inspection-rocke.md, or kernel-launch-guide.md.
  • §R.7 Unresolved in the current diff: library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:5-13 states bottlenecks and library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:151-166 gives ATT stall evidence, but the PR still lacks the runbook §3 arithmetic-intensity / §3.1a top-level bottleneck classification counters or a stage4_analyze/probe_rocprof_single summary tying the bottleneck claim to that classification.

Section notes

  • §G: Re-review of head 1529294. Items 1, 2, 4, 5, 7, 8, 9, 10, 11, 14, and 17 pass. Item 6 fails due to a stale claim in the test suite that use_cfvst=True is default for BF16 D128 while attention_dense.py and the documentation state it is off by default for BF16. Items 3 and 12 remain NEEDS-INFO because the diff cannot prove local gate execution on the current head or C++ caller absence.
  • §H: Trace of device-side masks and bounds in this PR: 1. Pipeline KV tile loop (USE_PIPELINE): extent source is last_j = n_up - 1 (derived from query block qb and KV tile count n_kv for top-left causal attention without sliding window or sinks); the kernel visits 0 in prologue, [0, last_j) in main loop(s), and last_j in epilogue, issuing K/V loads only for 0 .. n_up - 1. In causal_diag_split mode, body_upper = min(qb * n_per, last_j) splits [0, last_j) into unmasked [0, body_upper) (where every key precedes every query row of the block) and masked [body_upper, last_j), with epilogue tile last_j always masked (masked=True). Extent and visited range agree. 2. K LDS slot index (kbuf / next_kbuf / last_kbuf): extent source is b.mod(j, b.const_i32(K_BUFS)) where K_BUFS = spec.lds_num_buffers in {1, 2}; K_lds is allocated with [K_BUFS, BN, LDROW]. Extent and visited range agree. 3. No paged KV indirection (block_tables) or runtime variable…
  • §J: Shapes table: | Equation/site | Operands | Result | |---|---|---| | T_variant = median(t_variant,1, ..., t_variant,5) | scalar per-round samples for one variant | scalar T_variant | | Speedup_A_to_candidate = T_A / T_candidate | scalar medians with same unit | scalar ratio | | Reduction_A_to_candidate (%) and R_r | scalar ratios of matched arms/rounds | scalar percentage reduction | | Min/Max | scalar R_r values | scalar range endpoints | Symbols table: | Symbol | Defined at | Domain | |---|---|---| | A, B1–B7 | case-study arm table | benchmark arm identifiers | | t_variant,r, T_variant, T_A, T_candidate | case-study methodology formulas | scalar per-arm samples/medians | | R_r, Min, Max | case-study range formulas | scalar percentage reductions | Novelty table: | Claim | Status in doc | Boundary | |---|---|---| | BF16 D128 CFVST | inherited feature, now opt-in | not a new mechanism | | K LDS double buffering | added opt-in | K LDS only | | V…
  • §K: Identity table: (1) lds_num_buffers: removed from DENSE_UNTUNABLE_KNOBS['gfx942'] and added as a KnobAxis with default 1 (unchanged); (2) v_reg_prefetch: new boolean spec field on Gfx942AttentionDenseSpec and KnobAxis with default False — adds ('v_reg_prefetch', False) to the gfx942_dense defaults fingerprint, intentionally re-keying all existing gfx942_dense config_keys without bumping TUNING_ID_VERSION, with migration documented in library/dispatch/AGENTS.md:217-224 and verified in test_tuning_space.py:1130-1180; (3) use_cfvst: BF16 D128 causal CFVST remains default-resolved (None -> True on D128), while KDB (lds_num_buffers=2) and VPF (v_reg_prefetch=True) are opt-in and gated by supports_attention_dense.
  • §O: This PR only modifies library-level gfx942 attention kernels, dispatch, benchmarks, tests, and documentation; it does not touch platform core internals, C++ engine files, C ABI headers, or platform CMake.
  • §R: Lever table: use_cfvst=True / V LDS transpose and wider LDS reads -> runbook §6/§7, attention §13.3, gfx942 §21 -> utilities skill: lds-optimization-rocke.md + lds-bank-conflict-expert/SKILL.md + isa-inspection-rocke.md (explicit skill citation missing) -> probe evidence: static ISA/resource and rocprof LDS instruction evidence in library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:111-147 -> tiling gate: analyze_coalescing/assert_asm_backed in library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:435-453. lds_num_buffers=2 / K-only LDS double buffering -> runbook §6/§8, attention §13.3, gfx942 §21 -> utilities skill: lds-optimization-rocke.md + prefetch-data-load-rocke.md + scheduler-policy.md (explicit skill citation missing) -> probe evidence: static resources/ISA and ATT wait/barrier evidence in library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:111-166 -> tiling…

Graded with the rocKE PR checklist, one model pass per section. FAIL rows that sit on a diff line are inline comments.

§A graded 14/14
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1432 modifies the existing Python-only gfx942 dense attention kernel emitter rather than adding a new Python-only family or changing a kernel with a C++ emitter twin.
2 N/A No core lowering or IR files under core/lower_* or core/ir are modified by this PR.
3 NEEDS-INFO dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:461 adds the v_reg_prefetch spec/codegen knob and dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:186 makes lds_num_buffers tunable on gfx942; the new commits since the previous review do not resolve whether Gfx942AttentionDenseSpec has a C++ selector/spec-builder twin outside the diff that requires mirroring.
4 N/A No C++ twin emitter or C++ selector files are modified in this PR's diff.
5 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:81 keeps existing golden hash entries unchanged while dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:84 adds entries…
6 N/A The modified gfx942 dense kernel path is Python-only and has no C++ cross-engine emitter twin in this diff.
7 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1620 guards the scalarized wave index computation behind _use_kdb(spec) or _use_vpf(spec) and dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2397 gates…
8 N/A No C++ files or C++-mirrored emitters are touched in this PR's diff.
9 N/A This PR does not contain a shared op-handler fix or lowerer-only architecture divergence requiring a parity mini-pair.
10 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:338 adds golden test cases for the flag-on KDB, VPF, combined, LSE, and pad4+dsplit variants, and…
11 N/A No new IR opcode or builder operation is introduced in this PR.
12 N/A core/backend.py and ROCKE_BACKEND=both handling are not modified in this PR.
13 N/A LLVM .ll emission and ROCKE_DEBUG_LOC handling are not modified in this PR.
14 N/A No classic helpers under helpers/ or platform/cpp/helpers/ are modified in this PR.
§B graded 6/6
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1296 and dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1308 classify invalid lds_num_buffers values vs unimplemented KDB/VPF combinations with an…
2 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:522 keeps __post_init__ to exact type validation on use_cfvst, lds_num_buffers, and v_reg_prefetch, while…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:1075 verifies that default BF16 D128 dispatch preserves use_cfvst=None, lds_num_buffers=1, and v_reg_prefetch=False, so no model-zoo shape is silently demoted to a slow…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:522 rejects non-exact types for use_cfvst, lds_num_buffers, and v_reg_prefetch in __post_init__ without coercion, and…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1465 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:2073 numerically verify the newly opened BF16 D128 CFVST, KDB, VPF, and…
6 PASS Resolved the previous NEEDS-INFO: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1301 restricts supports_attention_dense to functional and NOT_YET_IMPLEMENTED emit invariants for lds_num_buffers=2 and v_reg_prefetch=True…
§C graded 10/10
# Verdict Evidence
1 PASS Shared predicates and pipeline stages are factored into single-source helpers: _use_kdb (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:928), _use_vpf…
2 PASS All pipeline variants are controlled via spec knobs (use_cfvst, lds_num_buffers, v_reg_prefetch, causal_diag_split) inside the single build_attention_dense(spec) builder in…
3 PASS Kernel naming emits codegen knob tags (kdb1, vpf1) in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:768 without embedding workload dimensions.
4 PASS All kernel and dispatch changes are scoped to gfx942-specific modules and entries (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:452 and dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:295) without…
5 PASS The diff is tightly scoped to the gfx942 dense attention kernel (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:114), gfx942 tuning axes (dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:185)…
6 PASS softmax_pv is factored out in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2195 so existing single-buffer tile_compute (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2279) and pipeline…
7 N/A This PR is a targeted performance optimization adding opt-in spec knobs rather than a standalone cleanup refactor.
8 PASS The PR extends Gfx942AttentionDenseSpec (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:457), reuses existing DSL primitives (b.smem_alloc, b.sync_lds_only, b.buffer_load_vN, _cfvst_store_v) in…
9 PASS bf16_cfvst_supported in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:938 defines the single KDB/VPF cohort consumed by supports_attention_dense…
10 PASS dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:198 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:477 match the widened supports_attention_dense gating…
§D graded 21/21
# Verdict Evidence
1 PASS The new controls are explicit spec fields with validation in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:449 and dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:517, and they are declared as…
2 N/A No Capability declaration or KernelCandidate architecture coverage is added or modified in the shown diff.
3 N/A No dispatcher candidate _supports predicate or direct _supports caller path is added or modified in the shown diff.
4 PASS The new dispatch-selection surface is static tuning-axis data for the request-driven gfx942 dense path at dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:295, and the dispatcher tests select via `tuning_spec_with_knobs(req, "gfx942_dense"…
5 PASS The binary-changing KDB and VPF controls are folded into kernel-name/cache-key tags through _use_kdb(spec) and _use_vpf(spec) at dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:763.
6 PASS The full-pipeline dispatcher test selects the spec through tuning_spec_with_knobs, checks launch-relevant resolved fields, verifies kernel-name markers, and replays the selected knobs at…
7 N/A No selector heuristic ordering or hand-pinned override layer is added or reordered in the shown diff.
8 NEEDS-INFO Still NEEDS-INFO: the diff defines bf16_cfvst_supported and uses it in supports_attention_dense at dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:925, but the dispatch dense_rules/spec-override predicate hunk showing it imports the same cohort definition is missing.
9 N/A No new kernel candidate or architecture registration is added; the change adds tuning variants on the existing gfx942 dense…
10 PASS The new spec fields are reachable from the dispatcher tuning request through declared axes at dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:295 and exercised by dispatcher-level explicit selection in…
11 FAIL The dispatcher test now requires the default BF16 D128 gfx942 dense spec to resolve CFVST on at dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:1073, which promotes the feature onto the default path instead of keeping it opt-in.
12 N/A This PR does not add or rename dispatcher candidates, change candidate priority, or introduce a custom ranker.
13 PASS Adding the defaulted v_reg_prefetch field rekeys the gfx942_dense defaults fingerprint so stale tuning_id pins are refused (admits returns False, causing CandidateRegistry.select to raise PinRefused), documented at…
14 PASS The new IR-changing KDB and VPF controls receive independent kernel-name/cache identity tags at dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:766-771, and the defaults fingerprint change rekeys config_key / tuning_id while…
15 N/A This PR does not add a new dispatcher candidate or architecture module to the registry.
16 N/A This PR does not introduce a new operator family.
17 N/A This PR does not add a new dispatcher candidate whose CPU routing cohort must be tested through admits().
18 N/A This PR does not modify registry ratchets, torch-binding requirements, route-only registration, or ratchet exempt sets.
19 PASS The dispatch documentation explicitly states that the BF16 D128 default remains off (use_cfvst=None resolving to off, lds_num_buffers=1, v_reg_prefetch=False) and that these opt-in dense tuning choices do not alter the shipped default or make the opt-in dense…
20 N/A This PR changes Python dispatch tuning and the Python gfx942 dense kernel path, which has no C++ emitter or C++-consumed selector…
21 N/A This PR implements new opt-in kernel pipeline features and tuning exposure rather than patching an emitted artifact to work around…
§E graded 17/17
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/platform/dsl_docs/optimization/optimization_runbook.md:2543-2550 is the only platform file touched by this PR and adds documentation only without importing library.
2 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:591-603 and :681-686 query the device through rocke.runtime.hip_module (get_device_name, get_device_num_cus, get_device_target_id, current_device…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:59 uses NumPy with no torch dependency, and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:233 and :1466 import…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:867-876 imports downward from kernels and dispatch, and dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:730 adds no…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:60 is a Python script using pathlib.Path with no committed .sh files or /tmp, nproc, or sudo calls.
6 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2011-2051 emits only used value pairs in _cfvst_load_v_pipeline, and existing golden hashes in…
7 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:193-197, dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:187-224, and…
8 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:114-127 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1102-1105 use descriptive references without Jira IDs, PR numbers, or GitHub handles in…
9 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:452-461 and accompanying test/doc/benchmark files (including dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.…
10 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2632-2706, dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1106-1565…
11 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:1 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:188 are process-required deliverables.
12 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1296-1311 explicitly scopes the opt-in knobs to the gfx942 dense kernel.
13 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:315 and :421 reference bench_rocke_7way_specs.py, and…
14 PASS Resolved in the full diff: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2632-2706 preserves upstream emit_segment_store and sinks-aware lse_store(..., row_has_mass=row_has_mass) while updating m to m_i, and…
15 PASS All parameters in modified helpers in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1908-2277 (_async_load, load_pipeline_k, _cfvst_load_v_pipeline, do_qk, softmax_pv, pipeline_step) and…
16 N/A This item governs reviewer severity grading rather than code in the pull request diff.
17 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:155-225 and :287-297 report relative ratios, static coalescing/ISA verification, and provenance without absolute software-achieved…
§F graded 11/11
# Verdict Evidence
1 PASS Branch users/Parthiv911/rocke/gfx942-dense-cfvst-kdb-vpf matches the recognized users/<user>/... prefix (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:114).
2 PASS title perf(rocke): add opt-in gfx942 BF16 CFVST and KDB/VPF matches type(scope): summary and is 53 characters
3 PASS description is at least 30 characters and contains an issue reference
4 PASS test file dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py is in the diff
5 PASS All 13 changed files in the PR are Python source/test files, Markdown docs, or JSON golden hash files (dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:2); no keys, certs, or secrets are added.
6 PASS Changed files such as dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:522 and dnn-providers/hip-kernel-provider/rocke/platform/dsl_docs/optimization/optimization_runbook.md:2543 are cleanly formatted without lint or formatting…
7 NEEDS-INFO Unresolved since previous review (0f1fb4741a3f..1529294c6010): GitHub bot and Copilot review thread states, resolution statuses, and any deferred ticket IDs in review threads are not visible in the provided PR diff and metadata context.
8 N/A The PR base branch is develop, so this is not a stacked PR targeting a feature branch.
9 PASS The PR keeps the kernel changes, dispatch axes, tests, benchmark script, and case study together in one cohesive change (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:114).
10 PASS Added tests exercise real functionality including spec validation, dispatch tuning space, LDS budgets, golden IR hashes, and numeric accuracy in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1106…
11 PASS The PR title and body in the metadata are populated and match the benchmark run and case study in dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:191.
§G graded 34/34
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:338 pins LLVM IR SHA-256 golden hashes for the opt-in pipeline modes, while dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1465…
2 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1465, dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1702, and…
3 NEEDS-INFO Unresolved from the previous review: the diff updates golden hashes in dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:84 and the PR body reports test counts, but the diff cannot by itself prove that tools/run_checks.py, the installed-golden IR gate, check_ir_validity.py, the pytest suites, GPU numeric tests, and the llvm23 byte-identity check were executed and…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1158 tests the persistent=True requirement for KDB/VPF, dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1326 tests bf16_cfvst_supported, and…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_numeric.py:1442 documents and enforces multi-item persistent reachability preconditions, and…
6 FAIL Contradictory load-bearing prose and assertions on whether BF16 D128 CFVST is on or off by default: dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:3 and :392 and dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:211 state that BF16 D128 default use_cfvst=None resolves to off (matching _use_cfvst in attention_dense.py which is dtype == 'fp16' and head_size == 128), whereas…
7 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:223 specifies the independent chunked NumPy FP32 causal GQA SDPA reference as a pre- and post-batch gate, and…
8 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:290 rejects any non-bf16 or non-D128 shape in parse_shape instead of silently falling back to another dtype or head dimension.
9 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:128 and dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:493 extract VGPR…
10 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:173 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:269…
11 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:1269 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1532 verify explicit tuning reachability (including the full pad4+dsplit…
12 NEEDS-INFO Unresolved from the previous review: the diff does not include caller grep output or C++ files confirming that no live C++ selector or builder calls or mirrors gfx942 attention_dense.
13 N/A This PR does not add, modify, or recommend LLVM intrinsic .td overload classes or mangled intrinsic symbols.
14 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:122 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:151…
15 N/A This review grades the provided diff for head commit 1529294 directly, so there is no local branch-checkout ambiguity.
16 N/A This PR delivers concrete kernel, dispatch, test, and benchmark changes rather than an unverified pre-implementation plan.
17 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:699 and dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:269 show that the…
18 PASS The benchmark validates every variant against the FP32 reference before timing and after every timed batch (aborting on failure), takes medians over 5 rounds of 50 launches, and documents the blind spot that post-batch validation checks only the final output of each…
19 PASS The numeric test fixtures construct a small persistent grid (_MULTI_ITEM_NP = 3) with more than two work items per workgroup and ragged handoff, plus zero-trip (256, 64), odd-tile (256, 192 / 512, 192), and multi-tile (512, 512) shapes at…
20 N/A This PR does not add or modify a text detector or linter enforcing a ban on claims.
21 PASS The benchmark deliverable records full environment and run metadata, validates every variant against a chunked NumPy FP32 reference using fixed atol=1e-2 / rtol=1e-2 bounds rather than noise-floor-relative tolerances, and labels modeled vs measured quantities in the…
22 PASS All added golden entries carry both bytes (> 0) and 64-character sha256 digests across all GOLDEN_PROFILE_FLAVORS rather than build errors or skips, verified by test_pipeline_golden_entries_cover_each_independent_mode_and_llvm_flavor at…
23 PASS Performance claims enumerate dtype, B, S, Hq, Hkv, D, causal mode, persistent grid, target arch, CU count, and exact dispatch-resolved baseline kernel identity, and validate all arms against the FP32 reference at…
24 PASS Existing golden hashes are unchanged and every newly added opt-in golden case (including persist_bthkvmin_kdbvpf_pad4_dsplit and LSE variants) has corresponding GPU numeric coverage at…
25 PASS The case study and benchmark report static VGPR/SGPR/spills/scratch/LDS and static ISA instruction counts across all ablation variants (extracted via static_resources from the timed HSACOs) and document the SGPR V-addressing micro-optimization and sibling kernel check…
26 PASS _capture_git_checkout refuses dirty or untracked checkouts unless --allow-dirty is explicitly passed, verify_provenance verifies clean checkout state, source SHA-256 hashes, and dispatch replay, and the case study records clean-checkout provenance at…
27 PASS The benchmark script defines single-knob transitions across B-stages via STAGE_OVERRIDES and changed_fields and tables each knob increment separately against both the production baseline and Step-0 winner at…
28 PASS The documentation states that all new levers are opt-in and off by default (0-delta on shipped default dispatch), and the benchmark resolves its B1 baseline directly from production dispatch via attention_tuning_spec(req, 'gfx942_dense').kernel_spec rather than a…
29 N/A This PR does not swap a guarded primitive such as exp2 for a fast primitive.
30 PASS VGPR counts, spill counts, and scratch bytes are read directly from compiled HSACO code-object notes via static_resources (using llvm-readelf and llvm-objdump) and reported in the case study at…
31 PASS The benchmark resolves the baseline from attention_tuning_spec for the production request, verifies that none of the opt-in pipeline knobs are already enabled in the shipped baseline, and also compares against the rebuilt Step-0 existing-lever sweep winner (arm A) on…
32 PASS The benchmark and case study record hardware target ID (gfx942, 304 CUs), loaded HIP/COMGR DSOs, LLVM flavor (llvm23), git commit, source SHA-256 hashes, and exact reproduction scripts at…
33 PASS The changed tuning and support decision functions are tested across default, CFVST, KDB, VPF, combined, causal_diag_split, and rejected configurations (including non-persistent KDB/VPF, non-bf16, D64, block_n=32, sliding window, and sinks) and the case study tables…
34 PASS TestDenseLseNumericGfx942.test_cfvst_pipeline_lse_modes and test_cfvst_pipeline_pad4_dsplit_lse_numeric verify that enabling emit_lse produces bit-identical output tensor O to emit_lse=False (torch.equal(out, off_out)) across CFVST, KDB, VPF, combined, and pad4+dsplit…
§H graded 5/5
# Verdict Evidence
1 N/A This PR only adds opt-in CFVST, K LDS double buffering, and V register prefetch to the dense prefill kernel (attention_dense.py)…
2 N/A This PR applies to dense prefill attention and does not use page tables, block_tables, or any device-side indirection values.
3 PASS In dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1621-1626, b.div and b.mod use compile-time power-of-two constant 64 (and 32), _cfvst_load_v_pipeline at attention_dense.py:2011-2051 and publish_prefetched_v at…
4 N/A This PR does not construct or modify any device-side mask or bound from runtime sequence-length arrays (kv_lens, cu_seqlens)…
5 N/A No new launch runtime inputs that feed device-side bounds or masks are introduced or modified in this PR (use_cfvst…
§I graded 6/6
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:15 documents the Step-0 lever sweep across the tuning space and compares achievable winning configurations against both the Step-0 winner…
2 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:522 loudly rejects non-exact knob types in post_init, and supports_attention_dense at lines 1296 and 1301 loudly rejects unsupported knob combinations (including non-persistent grids…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:360 extends _INJECTIVITY_BASES for generated knob-perturbation coverage and dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:1069 adds…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:97 and line 209 record both the shipped Baseline/Production Dispatch kernel and the achievable Step-0 and Full Pipeline winning kernel…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:123 explicitly distinguishes the recorded Step-0 sweep snapshot from the live re-measured current-checkout specs (lines 282 and 686), and…
6 N/A This PR does not add or modify any DSL primitive or hardware instruction interface; it only adds opt-in kernel spec knobs…
§J graded 7/7
# Verdict Evidence
1 PASS The case study defines the arm/result columns before the formulas and every added equation is scalar-to-scalar: arm variants are declared in dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md…
2 PASS The formula symbols are introduced with one meaning in the methodology: A/B1-B7 at dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:239-248, T_variant, T_A, and T_candidate at…
3 PASS The sibling README links to the case study and summarizes only the opt-in lever deltas in dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:188-198, and the optimization runbook adds a short heuristic plus the same link in…
4 PASS The docs separate inherited from added scope: CFVST is described as already present but newly opt-in for BF16 in dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:112, while KDB and VPF are…
5 N/A The Markdown diff makes no asymptotic or big-O scaling/complexity claims, only measured ablation, provenance, and tuning-scope…
6 PASS The case study anchors constants and scope to a configuration/source table in dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:20-34, records static-resource provenance in…
7 PASS The existing directory README remains the entry point and links to the companion case study in dnn-providers/hip-kernel-provider/rocke/library/builders/gfx942/attention/prefill/README.md:188-190, while the new case study declares its specific scope in…
§K graded 13/13
# Verdict Evidence
1 N/A This PR updates axes and rules on the existing gfx942_dense tuned candidate rather than introducing a new tuned candidate or…
2 PASS dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:186 removes lds_num_buffers from DENSE_UNTUNABLE_KNOBS['gfx942'], dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:294-299 orders enabler use_cfvst before…
3 PASS dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:217-224 documents the gfx942_dense tuning-id migration caused by the new v_reg_prefetch default fingerprint, and…
4 PASS dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:298-299 declares problem-independent defaults for lds_num_buffers (1) and v_reg_prefetch (False), matching the dataclass defaults in…
5 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:1182-1270 verifies CFVST axes remain reachable on diagonal-split and non-persistent bases while out-of-scope KDB/VPF pins are refused by tuning_spec_with_knobs.
6 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1296-1311 centralizes BF16 CFVST, KDB, and VPF legality in supports_attention_dense, and…
7 N/A KnobSpace.base(req) and request normalization for candidate base specs are not modified in this PR.
8 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:522-535 rejects non-exact bool/int types for use_cfvst, lds_num_buffers, and v_reg_prefetch, and…
9 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:258-305 selects every arm through tuning_spec_with_knobs, records candidate/algorithm/spec_id/tuning_id/config_key/knobs/spec_hash via…
10 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:1116-1122 replays bare tuning_id only for single-lever production points while full-space combinations replay with explicit knobs in…
11 N/A No dispatcher sweep entry points (iter_dispatch_*_all, pin_to_spec, sample handling, or sweep_level scoping) are modified…
12 PASS dnn-providers/hip-kernel-provider/rocke/library/tests/dispatch/attention/test_tuning_space.py:1069-1099 verifies the default base spec keeps use_cfvst=None (resolved True on D128), lds_num_buffers=1, and v_reg_prefetch=False, while production sweep includes…
13 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:258-274 constructs benchmark arms via tuning_spec_with_knobs and dnn-providers/hip-kernel-provider/rocke/library/dispatch/AGENTS.md:206-215 states the…
§L graded 10/10
# Verdict Evidence
1 N/A The PR does not add or modify a gfx target in arch_specs.json or the C++ arch/ISA registries.
2 N/A The PR does not add or change any MMA op_id or fragment layout in core/arch/target.py or cpp/core/lower_llvm/mma.cpp.
3 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2086 continues to use the existing mfma_32x32x8_for_dtype(b, dtype, k_pack, q_packs[ks], acc) helper without hardcoding new intrinsic names or altering atom shapes/lane maps.
4 N/A The PR is scoped to the existing gfx942 kernel and does not modify wave-size definitions or target wave-size logic.
5 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1975 and dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2011 implement gfx942 K LDS double-buffering and V register prefetching directly using standard…
6 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:457 and dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:298 keep the pipeline knobs (lds_num_buffers, v_reg_prefetch) in the library kernel and dispatch…
7 N/A The PR does not add or modify logical dtypes, bit-packing contracts, host pack/unpack routines, or FP8 dialect handling.
8 N/A The PR operates on unscaled bf16/fp16 attention and does not touch scaled-MMA contracts or WMMA scale ids.
9 N/A The PR does not introduce a new architecture target.
10 N/A The PR does not modify intrinsic_arch_domain.<flavor>.json artifacts or LLVM flavor membership lists.
§M graded 10/10
# Verdict Evidence
1 PASS Host booleans (USE_CFVST, USE_KDB, USE_VPF, USE_PIPELINE, DIAG_SPLIT, masked) drive Python control flow in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1641-1658 and…
2 N/A This PR does not touch legalize_for_target or any target legalization passes.
3 N/A This PR does not modify print_ir or the ck.dsl.ir/v1 serialization implementation.
4 N/A This PR does not modify portable IR schemas, importers, magic division helpers, or builder recording.
5 PASS Async K tile loads compute an unswizzled wave-uniform destination offset per row (row_base = b.smem_ptr_add(lds_base, row_lds_off)) in dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1908-1923, and consumers drain VMEM via…
6 PASS All barriers and waits (b.s_waitcnt(vmcnt=0), b.sync_lds_only()) in the pipeline prologue, loop body, and epilogue are emitted unconditionally in workgroup-uniform control flow in…
7 N/A This PR does not touch ISABackend.buffer_rsrc_word3, hard-code buffer resource word 3, or use TemporalHint.STREAMING.
8 N/A This PR does not add intrinsic declarations or modify lowering backend selection precedence.
9 N/A This PR does not touch C entry points, headers under cpp/include/rocke/, or C++ host launch code.
10 N/A This PR does not modify !dbg emission, module debug info flags, or DWARF consumers.
§N graded 18/18
# Verdict Evidence
1 N/A The diff does not add or promote any helper under platform/python/rocke/helpers/.
2 N/A The diff modifies a gfx942 attention kernel, dispatch tuning axes, benchmarks, and tests, not a kernel use of shared helper…
3 N/A The diff does not modify or use the helpers SoftwarePipeline abstraction.
4 N/A The diff does not add or modify fusion, EpilogueOp, pattern tables, or fused GEMM/epilogue builders.
5 N/A The diff does not add or modify any public API in rocke.helpers.tiling.
6 N/A The diff does not add or modify front-door/toolbox tiling helpers or LayoutStyle classes.
7 N/A The diff does not use helpers/tiling layout overrides or modify tiling MMA soundness gates.
8 N/A The diff does not touch helpers/tiling memory verbs such as lds_tile_alloc, lds_store, lds_read, or emit.py.
9 N/A The diff does not use helpers/tiling N-D tensor axis roles, at_index, squeeze, FlowStage labels, or AB-swap routing.
10 N/A The diff does not modify helpers/tiling emit, LDS staging, MMA issue logic, or tiling analysis gates.
11 N/A The diff does not use TileMma, Tiling, lds_swizzle, derive_sched_group_counts, or helpers/tiling trait loading.
12 PASS The case study explicitly states that CFVST improves performance through wider V LDS reads and reduced LDS instruction traffic rather than as a bank-conflict reduction claim…
13 N/A The diff does not construct WarpDistributionEncoding, call make_tile_desc, re-export RegisterMapper, or change store cast rules in…
14 PASS The new pipeline places explicit waits and LDS synchronization around prologue/loop WAR and publication points (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:2422…
15 N/A The diff does not use helpers/tiling transformed descriptors or tiling allocation/bounds checks.
16 N/A The diff does not use optimize_layout, recommend, or evaluate_transform from helpers/tiling.
17 N/A The diff does not touch tiling_recorder.py, analysis/roundtrip.py, or tiling visualization.
18 N/A The diff does not touch InterleavedStyle or demo kernels under helpers/tiling/kernels/.
§O graded 16/16
# Verdict Evidence
1 N/A This PR does not modify the platform core verifier, C++ verifier, pointer-space definitions, or lowerer pointer type helpers.
2 N/A This PR does not touch platform/python/rocke/core/ or platform/cpp/core/ where scf.for verification and lowering internals…
3 N/A This PR does not modify IRBuilder SSA naming, intrinsic declaration tables, emission metadata numbering, or platform core emission…
4 N/A This PR does not touch IR type definitions, SmemType naming, or IR parsers in either engine.
5 N/A This PR does not edit core optimization passes or opcode purity tables in Python or C++.
6 N/A This PR does not modify Python or C++ constant folding logic.
7 N/A This PR does not modify platform kernel attribute validation, codegen policy attribute emission, cluster-dim handling, or COMGR…
8 N/A This PR does not add or modify SchedulerStrategy, CodegenPolicy, apply_codegen_policy, or hipcc scheduler handling.
9 N/A This PR does not modify platform waitcnt encoding or barrier lowering logic.
10 N/A This PR does not modify platform lowerer attribute revalidation or LLVM parameter type helpers.
11 N/A This PR does not touch ArchTarget, target-id resolution, target catalogs, or platform hardware-query internals.
12 N/A This PR does not modify platform core width or size-cap derivation or codegen arch defaults.
13 N/A This PR does not touch public C structs, enums, ABI version definitions, or Python ABI mirrors under cpp/include/rocke/.
14 N/A This PR does not add or modify C++ source, headers, bindings, or platform CMake files.
15 N/A This PR does not modify C++ engine fallback visibility, fallback records, backend flavor resolution, or debug lowerer authority…
16 N/A This PR does not touch known_gaps.md debt areas, C++ codegen-only runtime behavior, or gfx1250 builder parity claims.
§P graded 14/14
# Verdict Evidence
1 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:457-461 keeps lds_num_buffers and v_reg_prefetch as defaulted keyword-only spec fields on Gfx942AttentionDenseSpec, and…
2 N/A This PR does not modify kernarg ordering, signature(), manifest args_signature, or GEMM/conv ABI definitions.
3 NEEDS-INFO The diff for dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py is still truncated at line 825 before LaunchConfig construction, so I cannot verify whether the benchmark harness obtains launch geometry from the spec/candidate or recomputes it.
4 FAIL The changes since the previous review do not resolve this: dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1127 updates Python LDS accounting (k_bytes *= spec.lds_num_buffers) and dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1657 updates the Python LDS allocation (b.smem_alloc(dtype, [K_BUFS, BN, LDROW], ...)), while the diff still has no corresponding C++ validator/builder update mirroring the LDS gate and K-buffer count.
5 N/A This PR does not touch WMMA/RDNA GEMM or GemmMultiD/GemmMultiAbd platform instances.
6 N/A This PR does not use or modify caller-zeroed workspaces such as Stream-K, MoE sorting, fused MoE, or split-K.
7 N/A This PR does not touch Stream-K, persistent GEMM persistent_max_iters, GroupedGemmLauncher, or SUPPORT_MATRIX.md.
8 N/A This PR does not touch quantization helpers, quantization decode, or MX GEMM.
9 N/A This PR does not introduce numeric emulation or quantized decode paths.
10 N/A This PR does not add or modify manifest kinds, manifest emitters, or manifest runners.
11 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:424-451 manages an explicit HIP stream with wait_stream, and…
12 PASS dnn-providers/hip-kernel-provider/rocke/library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:524-538 locates LLVM tools via loaded_compiler_info() from the already loaded COMGR library, and…
13 PASS dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:768-771 adds distinct kdb1 and vpf1 cache/kernel-name tags, dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:1296-1311 updates admission guards in…
14 N/A This PR does not touch examples/, expected.json, platform/python/rocke/instances/, or helpers/.
§Q graded 7/7
# Verdict Evidence
1 N/A No new pytest test files are added or removed in this PR; only existing test files under library/tests/ are modified (and…
2 N/A This PR modifies the library/kernels/gfx942/attention_dense.py builder and does not add a platform kernel family or C++ parity…
3 PASS Golden hashes in dnn-providers/hip-kernel-provider/rocke/library/tests/golden/attention_dense_gfx942_ir_sha256.json:84 and dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942_golden.py:338 serve as an IR drift tripwire alongside GPU…
4 PASS New golden entries for the independent use_cfvst, lds_num_buffers, v_reg_prefetch, and persist_bthkvmin_kdbvpf_pad4_dsplit variants are recorded across GOLDEN_PROFILE_FLAVORS in…
5 PASS CPU negative tests in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1256 use values the parser genuinely rejects (e.g., use_cfvst='false', v_reg_prefetch='false'), active flavor is queried dynamically in…
6 N/A This PR does not refactor any platform gate or test harness.
7 N/A This PR only updates library spec validation in supports_attention_dense and does not touch platform backend resolution or…
§R graded 11/11
# Verdict Evidence
1 PASS library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:43-107 enumerates the existing spec levers, states which were swept or excluded, describes the staged sweep with FP32 correctness pruning, and names the Step-0 winners used as…
2 PASS library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:455-490 maps CFVST, KDB, and VPF to runbook §6/§7/§8, the §13.3 attention checklist, gfx942 §21, and gfx942-only eligibility; library/kernels/gfx942/attention_dense.py:1293-1306…
3 NEEDS-INFO Unresolved in the current diff: library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:455-469 maps the levers to the runbook and gfx942 architecture docs, but the PR still does not show checks against the matching utilities skills such as lds-optimization-rocke.md, lds-bank-conflict-expert/SKILL.md, prefetch-data-load-rocke.md, isa-inspection-rocke.md, or kernel-launch-guide.md.
4 PASS library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:111-147 reports static resources, spills, scratch, occupancy, MFMA, load/store, barrier, waitcnt, VALU, and SALU counts from the exact timed HSACOs…
5 PASS library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:435-453 records analyze_coalescing with vector_transactions, addr_fn_from_strides, line_bytes_for("gfx942"), CoalescingReport-style summaries, and assert_asm_backed for the…
6 PASS library/tests/test_attention_dense_gfx942_numeric.py:1431-1653 adds FP32-reference and bit-identical CFVST/KDB/VPF numeric coverage, and library/tests/test_attention_dense_gfx942_lds.py:334-368 checks the independent KDB/VPF LDS footprints against the lowered LDS pool.
7 NEEDS-INFO Unresolved in the current diff: library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:5-13 states bottlenecks and library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:151-166 gives ATT stall evidence, but the PR still lacks the runbook §3 arithmetic-intensity / §3.1a top-level bottleneck classification counters or a…
8 PASS library/kernels/gfx942/attention_dense.py:2394-2526 documents the KDB/VPF pipeline’s load, wait, and LDS WAR/publication barriers, and library/tests/test_attention_dense_gfx942.py:1390-1448 verifies the emitted loop operations keep tile.sync_lds_only and…
9 PASS library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:167-226 reports the shape sweep on gfx942 and records missing Step-0 winners rather than fabricating A/B comparisons, while…
10 NEEDS-INFO Unresolved in the current diff: library/benchmarks/gfx942/attention/prefill/bench_rocke_7way_specs.py:28-35 and library/builders/gfx942/attention/prefill/gfx942_dense_cfvst_kdb_vprefetch_case_study.md:295-312 document warmup, repeated randomized paired rounds, provenance, and environment, but still do not document GPU clock lock/state or otherwise show the same clocks for both benchmark arms as required by runbook…
11 PASS platform/dsl_docs/optimization/optimization_runbook.md:2540-2547 adds the new gfx942 BF16 D128 CFVST/KDB/VPF heuristic to the runbook and points to the case study without adding new figures to measured_results.md.
§S graded 8/8
# Verdict Evidence
1 PASS New public symbols v_reg_prefetch on Gfx942AttentionDenseSpec (dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:461) and bf16_cfvst_supported in __all__…
2 PASS Existing API behavior changes for lds_num_buffers and DENSE_UNTUNABLE_KNOBS["gfx942"] (dnn-providers/hip-kernel-provider/rocke/library/dispatch/attention/axes.py:186, :298) and supports_attention_dense…
3 N/A No public API symbol is removed or renamed in this pull request.
4 PASS bf16_cfvst_supported is added to __all__ at dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:734, resolves to the function defined at dnn-providers/hip-kernel-provider/rocke/library/kernels/gfx942/attention_dense.py:938, and is…
5 PASS Tests assert behavioral contracts and exact negative exceptions: exact ValueError types and messages for invalid use_cfvst, lds_num_buffers, and v_reg_prefetch types are checked at…
6 PASS CPU-checkable contracts (spec validation, support gating, IR structure, golden LLVM IR digests, LDS byte sizing, and dispatch tuning space) are tested without a GPU in dnn-providers/hip-kernel-provider/rocke/library/tests/test_attention_dense_gfx942.py:1106…
7 N/A The modified gfx942 dense attention kernel builder and Python dispatch tuning layer do not have a C++ spec-builder/selector twin…
8 N/A This PR does not modify rocke/platform/ code, runtime/manifest APIs, or the platform README minimal-build entry points.

Resolve conflict in attention_dense_gfx942_ir_sha256.json: develop (ROCm#14692)
qualified the LLVM 24 lane (aliases {} + explicit llvm24 hashes). Re-blessed
with test_attention_dense_gfx942_golden.py --write: 0 existing hashes changed;
adds llvm24 entries for the 12 KDB/VPF cases this PR introduced.
@cgmillette

Copy link
Copy Markdown
Contributor

Automated review: Model - qwen3.6:35b-a3b-coding-mtp-q4_K_M, effort: max

PR #13205 — add opt-in gfx942 BF16 CFVST and KDB/VPF (Parthiv911, AICK-1900) — 🟠 Follow-up: bench, docs assume CFVST off

Prior item Status
aosewski (10-07) CHANGES_REQUESTED ×4: rebase, fp16 identity, S=1024/2048, evidence 🟢 FIXED, as on 10-29
• on develop's kernel: default path, develop's 39 goldens unchanged (ran)
• still CHANGES_REQUESTED, re-requested; only aosewski can lift it
aosewski (10-14) ×4: provenance, ablation arms, replay 🟠 OPEN, as at 1529294c
• bench aborts before timing on 12 of 12 shapes (ran)
• 6 of 7 hashed sources differ from the recorded hashes (ran)
Rest of aosewski (10-14) ×12 and reachability; ours (10-15, 10-28); yraparti (10-18 → 10-29) incl. §D.1 🟢 FIXED, carried
• range-diff: 831201a2 unchanged; f2ad5598 re-blessed the golden only (ran)
• PR tests pass on the merge (ran)
yraparti (10-22 → 10-31) §P.4: LDS gate, C++ mirror 🟡 MOOT
• LDS tests: gate = emitted pool, KDB cohort included (ran)
• cap is ArchTarget.lds_capacity_bytes; no C++ validator exists (known_gaps.md:232) (read)
• 10-31 thread unanswered
Ours 🔴 N1 (10-28): absolute timing in PR history 🟢 FIXED 831201a2
• the commits that carried it are still out of the PR's history (ran)
• new merge message, body: no absolute figure (ran)
Ours 🟡 N1 (10-29): parity gate skips the opt-in specs 🟡 OPEN, no reply
• test_attention_ir_cpp_parity.py still builds no KDB/VPF spec (read)
• C++ engine = golden: 12 opt-ins × 4 flavors (ran)
AviralGoelAMD (10-30) APPROVED at 831201a2 🟢 APPROVED 831201a2
• older head; still counts on develop
Ours 🟠 N1 (10-31): bench, docs assume CFVST off 🟠 OPEN, no reply
• case_study.md:3, :485, AGENTS.md:211, README.md:204 still say off (ran)
• title, body (the squash message) still call CFVST opt-in (read)
• fix: CFVST-on baseline; re-run or date results
yraparti (10-31) §D.11: default resolves CFVST on 🟢 ANSWERED
• author right: develop resolves bf16 D128 CFVST on since #14367 (ran)
• KDB/VPF stay opt-in: default path = develop, 400 requests (ran)
• thread still open
yraparti (10-31) §G.6: docs vs code on the CFVST default 🟠 OPEN, valid
• real: docs say off; code and tests say on (read)
• fix the docs; tests asserting off would contradict #14367
• same item as our N1; no reply
Threads 🟡 77 of 81 resolved
• open: §D.11 (answered), §G.6, §P.4, case_study.md:511 (outdated)
• each blocks merge until resolved
Bots / CI 🟡 not run
• 7 workflows await maintainer approval (fork); 3 bot checks ✓
• 1529294c Multi-Arch: Windows gfx110X ✓; Linux skipped, artifact copy denied
• 1529294c hipDNN Windows: develop's packaging break, fixed since
Our checks 🟢 clean, apart from our N1
• merge = head: contains develop d1de2108, 0 behind (ran)
• build, ctest 34 ✓ / 1 skip; parity, representative golden ×4; differential 0 changed (ran)
• dense golden = fresh re-record ×4 flavors; llvm24 added for the 12 PR cases (ran)
• tests 624 ✓ / 1 skip (GPU numerics); rules 1–3, history, body clean (ran)

Net-new: none.

Utility: 🟢 Positive — opt-in KDB/VPF on develop's CFVST body; default path unchanged; numerics author-run.


Legend: 🔴 blocking · 🟠 should-fix · 🟡 minor nit · 🟢 info/good · ⚪ retracted

Follow-up review: first pass by a local qwen3.6 model, verified by the orchestrator (Claude Opus 5.5). Checks: merge with develop, build + ctest, C++/Python parity, goldens (dense golden re-recorded at all 4 flavors), PR tests, default path vs develop, C++-engine lowering of the opt-in cases, the bench's pre-timing guards, history and body scan, CI at head. Flags whether a closer look is needed; not an approval or rejection.

_use_cfvst returns True for every D128 spec regardless of dtype (since
ROCm#14367), so use_cfvst=None resolves ON for BF16 D128. Correct the case
study, dispatch AGENTS.md, prefill README, module docstring and a test
comment that said it resolves off / is opt-in. Only K double buffering
and V register prefetch are new opt-in levers in this PR. Tests are
unchanged; they already assert the real default.
CFVST is the existing D128 default (use_cfvst=None resolves on); describe
it as the prerequisite body, and list the production modes as CFVST off,
CFVST + KDB, CFVST + VPF.
@AviralGoelAMD
AviralGoelAMD enabled auto-merge (squash) November 1, 2026 09:13
…PF C++ parity

Since ROCm#14367 production resolves BF16 D128 CFVST on, so the bench aborted
on all 12 shapes before timing. B1 now pins use_cfvst=False (the CFVST-off
reference), B2 is production dispatch, downstream stages inherit the
policy, and A pins use_cfvst=False to rebuild the pre-ROCm#14367 Step-0
winners (symbol gains the cfvst0 token). All 12 shapes pass the
pre-timing guards.

Date the case-study results to cc84e26 (pre-ROCm#14367) instead of implying
they were measured at the PR head.

test_attention_ir_cpp_parity now also lowers the 12 gfx942 KDB/VPF golden
cases through both engines.
@AviralGoelAMD AviralGoelAMD changed the title perf(rocke): add opt-in gfx942 BF16 CFVST and KDB/VPF perf(rocke): add opt-in gfx942 BF16 D128 K LDS double buffering and V register prefetch Nov 1, 2026
@AviralGoelAMD
AviralGoelAMD dismissed aosewski’s stale review November 1, 2026 09:16

comments are addressed.

@AviralGoelAMD

AviralGoelAMD commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

@cgmillette thanks — addressed the follow-up at 6c567235:

Item Status
🟠 N1 bench assumes CFVST off Fixed (74e0809b). B1 baseline now pins use_cfvst=False (the CFVST-off reference); B2 cfvst is production dispatch; B3–B7 inherit the policy instead of pinning use_cfvst=True (dispatch canonicalizes that pin back to None, which was the first abort). The production guard now requires CFVST-on + KDB/VPF off. A pins use_cfvst=False to rebuild the pre-#14367 Step-0 winners; the guard checks a derived current symbol (historical + the cfvst0 token that pin adds), while the seven historical symbols are still exported verbatim with separate match flags (6c567235). Pre-timing guards (dispatch, replay, A-symbol audit, single-knob deltas, resolved-policy check, supports_attention_dense) pass on all 12 shapes (ran on CPU with compile stubbed).
🟠 N1 docs / title Fixed (3715cddc, 63edb97f, 74e0809b). Case study, dispatch AGENTS.md, prefill README.md, module docstring and a test comment say CFVST is the existing D128 default and only KDB/VPF are new opt-ins. Case-study results are dated to cc84e262 (pre-#14367; compare shows it diverged from cbf685fee74), not re-measured — no gfx942 timing claims at head. PR title/body updated.
🟡 parity gate skips opt-in specs Fixed (74e0809b). test_attention_ir_cpp_parity.py now also lowers the gfx942 golden's 12 KDB/VPF cases through both engines (anti-vacuity assert on the selection). With rocke_engine built from this head: 2 passed, no skips.
🟡 open thread case_study.md:511 Resolved (answered by the author; §P.4 has no C++ dense builder/validator). 0 unresolved threads.
Merge with develop f2ad5598: only conflict was the gfx942 golden; took develop's aliases: {} and re-blessed — 0 existing hashes changed, +12 llvm24 entries for this PR's cases.

Local, at 41cad876: test_attention_ir_cpp_parity.py, gfx942 golden / LDS / test_attention_dense_gfx942.py, test_tuning_space.py — 626 passed, 278 subtests, 0 skipped; pre-commit clean. GPU numerics were not re-run on this push (no gfx942 here). CI for the new head is queued.

…t-A guard

EXPECTED_A_KERNEL again holds the seven recorded symbols verbatim, so
A_original_expected_kernel / A_kernel_name_matches_original stay truthful
(the rebuilt symbol now differs by the cfvst0 token). The guard compares
against CURRENT_EXPECTED_A_KERNEL (historical + cfvst0), which is also
exported alongside a separate match flag.
@cgmillette

Copy link
Copy Markdown
Contributor

Automated review: Model - qwen3.6:35b-a3b-coding-mtp-q4_K_M, effort: max

PR #13205 — add opt-in gfx942 BF16 D128 K LDS double buffering and V register prefetch (Parthiv911, AICK-1900) — 🟡 Follow-up: bench fixed; squash message stale

Prior item Status
aosewski (10-07) CHANGES_REQUESTED ×4: rebase, fp16 identity, S=1024/2048, evidence 🟢 FIXED, as on 10-29
• default path and develop's 39 goldens = develop (ran)
• dismissed 11-01 09:16Z by AviralGoelAMD ("comments are addressed"); aosewski still requested
aosewski (10-14) ×4: provenance, ablation arms, replay 🟢 FIXED 74e0809b
• replay reaches timing on 12 of 12 shapes; arms as tabled (ran)
• results dated to their pre-#14367 commit, not re-run (read)
Rest of aosewski (10-14) ×12 and reachability; ours (10-15, 10-28); yraparti (10-18 → 10-29) incl. §D.1 🟢 FIXED, carried
• 831201a2 unchanged; since f2ad5598 only docs, bench, parity test (ran)
• PR tests pass at head (ran)
Ours 🔴 N1 (10-28): absolute timing in PR history 🟢 FIXED 831201a2
• offending commits still out of the history (ran)
• 8 commit messages, body, armed merge message: no absolute figure (ran)
Ours 🟡 N1 (10-29): parity gate skips the opt-in specs 🟢 FIXED 74e0809b
• gate now lowers the 12 KDB/VPF cases: 2 ✓ at 4 flavors (ran)
• a C++ mutation of one case fails it (ran)
AviralGoelAMD (10-30) APPROVED at 831201a2 🟢 APPROVED 831201a2
• older head; still counts on develop
Ours 🟠 N1 (10-31): bench, docs assume CFVST off 🟡 OPEN, bench FIXED 74e0809b
• bench: 12 of 12 shapes pass its pre-timing guards (ran)
• still off/opt-in: case_study.md:112, :251 (ran); body's "head adds docs only" (read)
• auto-merge armed with the old title and body: re-arm (read)
yraparti (10-31) §D.11, §G.6: CFVST default vs docs 🟢 ANSWERED, FIXED 3715cddc
• default is develop's (#14367); cited doc lines now say on (ran)
• resolved 11-01 by AviralGoelAMD after replies
yraparti (10-22 → 10-31) §P.4: LDS gate, C++ mirror 🟡 MOOT
• no C++ builder or validator for this kernel (read)
• LDS gate = emitted pool; tests pass (ran)
• resolved 11-01 by AviralGoelAMD after reply
Threads 🟢 81 of 81 resolved
• the 4 open at our last review resolved 11-01
Bots / CI 🟡 not run
• 7 workflows await maintainer approval (fork); 3 bot checks ✓
• auto-merge on (squash); required checks not yet posted
Our checks 🟡 clean, one Rule 1 nit
• merge = head: contains develop d1de2108, 0 behind (ran)
• build, ctest 34 ✓ / 1 skip; goldens ×4; differential 0 changed (ran)
• PR tests 626 ✓ / 1 skip; default path = develop (ran)
• rule 1: #14367 ×6 in bench comments (ran)

Net-new: none.

Utility: 🟢 Positive — opt-in KDB/VPF on develop's CFVST body; default path unchanged; numerics author-run.


Legend: 🔴 blocking · 🟠 should-fix · 🟡 minor nit · 🟢 info/good · ⚪ retracted

Follow-up review: first pass by a local qwen3.6 model, verified by the orchestrator (Claude Opus 5.5). Checks: merge with develop, build + ctest, C++/Python parity at 4 flavors with a mutation check of the KDB/VPF cases, goldens, PR tests, default path vs develop, the bench's own pre-timing path on 12 shapes, history, body and armed merge message scan, threads, CI at head. Flags whether a closer look is needed; not an approval or rejection.

@cgmillette cgmillette 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.

lgtm

@AviralGoelAMD
AviralGoelAMD merged commit 4425555 into ROCm:develop Nov 2, 2026
148 of 150 checks passed
ex-rzr added a commit that referenced this pull request Nov 3, 2026
…ke/dense-paged-kv

Conflicts with #13205 (gfx942 bf16 cfvst, K LDS double buffering, V register
prefetch) and the attention CPU test list (#13953).

All hunks keep both sides:
- gfx942 _async_load takes develop's kbuf slot offset and this branch's
  per-wave page lookup. The KDB/VPF pipeline requires persistent + cfvst, and
  paged K/V takes neither, so paged never reaches it.
- Name-injectivity table: lds_num_buffers is buildable on develop and the paged
  fields are buildable here, so neither stays in the unbuildable set; both new
  bases (persistent KDB/VPF, paged) are kept.
- The gfx942 numeric file keeps the paged class and develop's pipeline tests.
- CMake: develop's SDPA host tests plus the non-Windows gfx942 dense block.

No golden re-bless needed: the representative and differential goldens pass as
merged.
AviralGoelAMD added a commit that referenced this pull request Nov 3, 2026
…ed-3d-hipdnn

Brings in 52 develop commits, among them #13972 (kernel slots: SDK runtime,
tooling and hkp_pack packing), #13205 and #13652 (gfx942 rocKE changes).

Resolution: dnn-providers/integration-tests/SUPPORT_MATRIX_OVERVIEW.md is
re-rendered from the merged claims (feature_matrix.py; --check passes).

Checked on the merge: the four rocKE answer tables are unchanged; g1-g4 pass
(rocKE still selects the shipped 4,566 kernels); launch_surface --check
passes; 199 sampled recipes lower to identical segment + reduce IR (398/398);
byte identity GREEN; IR parity and differential goldens OK; IngestorGenerator
suite 1623 passed; rocKE-on clang-tidy build: Unified3d host tests pass (5
GPU-only skips); the new hkp_pack output passes the census (5/5),
verify_variant_sets --mode full and coverage_gate rungs 1-2.
@assistant-librarian

Copy link
Copy Markdown
Contributor

TheRock Submodule Bump Activity

Newest first

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation external contribution Code contribution from users community.. project: hip-kernel-provider rocke: platform Touches rocKE platform rocke-lib: attention Touches rocKE library attention/FMHA kernels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants