Repository navigation
perf(rocm): FA-RDNA2 decode, scores on every wave and 4 barriers per tile - #33
Draft
BlivionIaG wants to merge 1 commit into
Draft
BlivionIaG wants to merge 1 commit into
BlivionIaG wants to merge 1 commit into
Conversation
BlivionIaG
changed the base branch from
claude/eloquent-albattani-1e61il
to
rdna_extras
September 29, 2026 16:36
2 of 4 tasks
BlivionIaG
force-pushed
the
claude/fa-rdna2-decode-scores
branch
from
October 2, 2026 21:02
55b792b to
e5892c4
Compare
Author
|
Branch updated (rebased onto current rdna_extras, incl. the bench/retest commits) and validation evidence recorded.
|
This was referenced Oct 7, 2026
…tile Re-derive the per-head split-K decode schedule onto current rdna_extras. D=128 and D=256 score on every wave with packed fdot2, exchange the tile max once through LDS, double-buffer the page lookups, and read P·V as half2. A taken tile has 4 barriers; a fully masked tile skips the P barrier on every thread. Launches keep the current stream. The GQA decode kernel is unchanged. Co-authored-by: Grok 4.7 <noreply@x.ai>
cursor
Bot
force-pushed
the
claude/fa-rdna2-decode-scores
branch
from
October 11, 2026 08:43
e5892c4 to
8b57520
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Retarget of draft #33 onto current
rdna_extras(1dc3bac4cd, which contains the v0.31.0 port at8abf4c97plus the later INT4 PLE merge). The per-head split-K decode kernels still score each KV tile on one part of the CTA. This carries the #33 schedule onto the v0.31fa_rdna2source:fdot2only: no WMMA, no MFMA.laccumulates per wave and is summed once per CTA.m_newis CTA-uniform, so that barrier is not divergent.half2. The two halves merge once per CTA.The fp8 and int8 decode wrappers share these bodies. The GQA decode kernel is unchanged. Every
fa_rdna2launch still passes the current stream.Not a duplicate: this is #33 itself, moved off the archived
rdna_extra/v0.28.0base (a6ab43cf). No other open PR rewrites these per-head decode bodies.AI assistance: re-derived with Grok 4.7 in Cursor. A human must review every changed line and run the GPU checks below before this leaves draft.
What changed vs the old #33 diff
fa_rdna2.curather than replaying40931b3d. Those kernel bodies match the pre-port source aside from clang-format. The port's behavioral delta kept here isat::cuda::getCurrentCUDAStream()on every launch.THREADS/32floats, not+ 1).k_end <= 0does not enter the P·V loop. The oldfor (k = 0; k < k_end)already did not run whenk_endwas negative.bench_results/2026-10-0*, the rocprof scripts, and the "no merge (QSA path)" retest commit. Those numbers were measured on the old tree. This PR does not claim tok/s.fa_rdna2_decode_pageddirectly, so it measures the per-head kernel withVLLM_FA_RDNA2_GQA_DECODEunset.Test Plan
Re-measure on the 8x V620 box, ROCm 7.14.0, this head against current
rdna_extras. No numbers from the old base carry over._rocm_Cfor gfx1030 (wave32). Confirmfa_rdna2.cuhas no new warnings, and check the per-head decode instantiations for spills and LDS occupancy.test_decode_writer_layout,test_decode_empty_rows_are_zero,test_custom_scale_into_out,test_decode_paged_sliding_window,test_decode_multi_token_queries,test_forward_split_decode.VLLM_FA_RDNA2_GQA_DECODEunset for the kernel benchmark.fa_rdna2_decode_pagedbefore reading tok/s (the old retest found Flash-Next on the QSA path). Record decode tok/s for the cells that hit this kernel.fa_decode_paged_splitk_gqa_kernel_256is a follow-up. It is not in this PR.Test Result
No GPU in this environment. No tok/s, spill count, or occupancy number is claimed.
CPU-side, on this head:
ds_read_b128group has disjoint LDS banks.clang++ -std=c++17 -fsyntax-onlyof both kernels, instantiated for fp16 and int8, with HIP and torch stubbed out. This is not a gfx1030 device build. There is no ROCm toolchain here, so the real_rocm_Cbuild was not run.Essential Elements of an Effective PR Description Checklist
supported_models.mdandexamplesfor a new model.