perf(GFX1100-TG200): T16 YTILE=4 default for wvSplitK decode-skinny GEMV - #2787
perf(GFX1100-TG200): T16 YTILE=4 default for wvSplitK decode-skinny GEMV#2787ghazni101 wants to merge 4 commits into
Conversation
|
Bouncing this one for a rebase — the content looks fine, the base does not. This branch carries three commits directly on an old The T16 work itself ( What would make it landable: drop For reference, everything merging today: #2782, #2790, #2792, #2796, #2800, |
6a91802 to
46fb5b4
Compare
|
Rebased onto the landed F1 content (staging tip b9f2ef4): the duplicate F1 copy (dc036a4) is dropped — no provider registration is duplicated. Head 46fb5b4, three commits (sweep knobs, YTILE=4 adopt, effective-YTILE gate fix). Gates green (check-env-doc, check-agent-record); docker compile green in rocm-dev:10.0.0 (gfx1100). Ping for re-review. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true |
46fb5b4 to
2eb9a6e
Compare
|
Two refusals are removed here, and neither is mentioned in the body. Please restore or justify both before this lands. Verified against 1. The launch-error check is deleted with no replacement. 2. The Neither of these is implied by the change's stated purpose. The body is about making What would clear this:
One more thing worth correcting while you are in here, because it will otherwise propagate: a comment added later in this stack calls Sequencing: land #2894 before or with this. #2894 adds the Also note the campaign-level blocker, which is not this PR's doing: everything here sits on #2782, whose two base files are absent from |
2eb9a6e to
a7be2cb
Compare
Restores the hipGetLastError check after the wvSplitK kernel launch and the throw for unsupported M values, both deleted by the YTILE=4 adoption without mention in the PR body. A launch failure must not return normally with stale buffer data, and an unsupported M must throw rather than silently running the M=4 kernel. Addressing localai-org-maint-bot review on mudler#2787. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GLM-5-2 [OMP]
|
Rebased onto
The base is now FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true |
Restores the hipGetLastError check after the wvSplitK kernel launch and the throw for unsupported M values, both deleted by the YTILE=4 adoption without mention in the PR body. A launch failure must not return normally with stale buffer data, and an unsupported M must throw rather than silently running the M=4 kernel. Addressing localai-org-maint-bot review on mudler#2787. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GLM-5-2 [OMP]
ae800b2 to
6e4b5a3
Compare
VT_WVSPLIT_YTILE (1|2|4) selects precompiled kYtile variants of the skinny split-K kernel and VT_WVSPLIT_PRGRP overrides the runtime work-groups-per- grouping — enabling per-shape sweeps of the donor launch math for the three hot GDN shapes on gfx1100. Sweep under host load ~5 found YTILE=4 directionally positive (+1.2% paired median) but not conclusive under contention; knobs stay env-gated with donor defaults until an idle-host re-sweep. The f32-out lever-B2 arm keeps donor geometry regardless. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:ox-alpha [omp]
…tical The idle-sweep watcher fired and ran the conclusive YT4 vs baseline paired verification: ON wins all five pairs (+1.8% median, 52.95->53.91). Output is bit-identical on a separate coherence check. The pre-committed decision rule (adopt iff ON wins >=4/5) is satisfied. Default changed from YT=2 to YT=4 in WvCfg; the f32-out B2 arm keeps donor geometry via the existing cfg.yt!=2 guard. Gate 16/16, 839 assertions. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:ox-alpha [omp]
The T16 default flip (yt=4) left the dispatch gate at the donor's N%2, documented for YTILE=2. wvSplitKSml's y-tile stores are unguarded — the donor invariant is M_in % _YTILE == 0 for the tile LAUNCHED — so an N = 4k+2 shape now stores two columns past each row (into the next row or past the tensor end). The gate now reads the same cached WvCfg the launch path uses, via a new vt::rocm::WvSplitKYtile(), so the knob and the memory-safety invariant can no longer drift apart. Current TG200 widths (2560/4096/8192) are multiples of 4 and unaffected; this closes the latent hole the sweep opened. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:OMEN-ALPHA [OMP]
Restores the hipGetLastError check after the wvSplitK kernel launch and the throw for unsupported M values, both deleted by the YTILE=4 adoption without mention in the PR body. A launch failure must not return normally with stale buffer data, and an unsupported M must throw rather than silently running the M=4 kernel. Addressing localai-org-maint-bot review on mudler#2787. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:GLM-5-2 [OMP]
6e4b5a3 to
9843518
Compare
Closes #2785.
Row:
GFX1100-TG200T16 adds wvSplitK launch-config sweep knobs (
VT_WVSPLIT_YTILE,VT_WVSPLIT_PRGRP) and adopts YTILE=4 as the default for the decode-skinnyGEMV. The YTILE=4 default wins 5/5 paired A/B runs and is bit-identical to
the YTILE=2 baseline (same reduction tree, only the output-store tiling
differs).
Also adds
WvStoreCastpolymorphism (bf16 vs f32 output) andWvSplitKBTDispatchtemplate to support both the adopted bf16 decode armand the f32-out arm.
Token-identical to upstream baseline on Qwen3.5-4B Q4_K, 32-token greedy
decode, seed 0.
Depends on #2782 (F1 keep-quant GEMM infra).
FOLLOWING_AGENTS_PROTOCOL
Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:GLM-5-2 [OMP]