Commit b01c722
fix(dsws): route first-time wave entry through _alloc/_init (Pool-T7 brick)
The CONV=1 seed block sent first-time wave entry through the .Ldispatch
re-dispatch trampoline, which lands on _follow and deliberately skips
_alloc/_init. That is correct for RE-dispatch (a wave that already ran them
once after a bail) but fatal for first entry: the three per-wave initializers
live ONLY inside _alloc/_init --
(a) s_alloc_vgpr 32 -- the DYNVGPR per-wave lean allocator handshake,
(b) INITFLAG==0xACED -- the LDS rendezvous with the claimer,
(c) s35 = 0 -- the local last-seen-epoch baseline.
First-entry-via-_follow skipped all three, so followers read EPOCH/STI from
uninitialized LDS with a garbage s35 before the claimer published INITFLAG,
desynced from the epoch clock, never reached their _quiesce bail, and
QUIESCE_CNT never reached WAVES-1 -> the claimer spun forever in
.Lclaimer_wait_done -> GPU hang -> MODE1 reset -> desktop brick. This is why
Phase-A CONV=0 ran clean (its .else entry goes .Lbfeed/.Lafeed/.Lcompute ->
full _alloc/_init/_follow) but the first CONV=1 dispatch hung with conversions
provably dormant: seed->dispatch entry routing was the only new always-active
path. Entry and re-dispatch are NOT interchangeable.
Fix (CONV=1-only): the 3 seed arms now s_branch .Lcompute/.Lafeed/.Lbfeed
(full role entry, s59 pre-seeded) instead of .Ldispatch. Bails still go
_quiesce -> .Ldispatch -> _follow (re-dispatch unchanged). Corrected the
.Ldispatch header comment to RE-DISPATCH ONLY (and fixed its inaccurate
"already-consumed INITFLAG" note -- INITFLAG is written once and never cleared;
the real reason re-dispatch skips _init is it would reset s35).
CPU model (dsws_ctrl_model.cpp): added the first-entry contract
(WaveEntry/simulate_first_entry/entry_safe/claimer_quiesce_converges) + a
Pool-T7 repro test (TDD RED->GREEN): the buggy routing deterministically fails
to converge (reproduces the hang), the fix converges.
Offline validation: CONV=0 .text sha256 byte-identical to HEAD on all 3 mixes
(4c2a2b/6c1a1b/2c3a3b); CONV=1 .text differs as intended; RGA 0-spill,
max-live VGPR 83 <= NFV=112; CPU model ALL PASS. Independently Codex-reviewed
offline (no blocker/major). GPU re-baseline pending kmbandy greenlight.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0132aDSBLwusCJ4KzHQTnvdu1 parent 3dbb8c9 commit b01c722
3 files changed
Lines changed: 81 additions & 8 deletions
File tree
- ggml/src/ggml-cuda/aiter-integration/rdna4_fp8_gemm/spike/dvgpr_occ
Lines changed: 40 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
93 | 93 | | |
94 | 94 | | |
95 | 95 | | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
Lines changed: 18 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
657 | 657 | | |
658 | 658 | | |
659 | 659 | | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
660 | 666 | | |
661 | 667 | | |
662 | 668 | | |
663 | 669 | | |
664 | 670 | | |
665 | | - | |
| 671 | + | |
666 | 672 | | |
667 | 673 | | |
668 | | - | |
| 674 | + | |
669 | 675 | | |
670 | 676 | | |
671 | | - | |
| 677 | + | |
672 | 678 | | |
673 | 679 | | |
674 | 680 | | |
| |||
1241 | 1247 | | |
1242 | 1248 | | |
1243 | 1249 | | |
1244 | | - | |
1245 | | - | |
1246 | | - | |
1247 | | - | |
1248 | | - | |
| 1250 | + | |
| 1251 | + | |
| 1252 | + | |
| 1253 | + | |
| 1254 | + | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
| 1258 | + | |
1249 | 1259 | | |
1250 | 1260 | | |
1251 | 1261 | | |
| |||
Lines changed: 23 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
98 | 121 | | |
99 | 122 | | |
100 | 123 | | |
0 commit comments