d47b2bfcce
fix: use un-normalized P for multi-tile PV (correct online softmax merge)
2026-05-29 19:57:54 +00:00
43ae3e7f98
fix: reload Q per-K-sub-tile in multi-tile kernel (same as single-tile)
2026-05-29 19:56:35 +00:00
7598d548ee
debug: test multi-tile with s_k=128 only
2026-05-29 19:53:02 +00:00
8e99bd50e6
feat: 6-warp TMA multi-tile KV kernel with register accumulator + test
2026-05-29 19:49:53 +00:00
1814510195
wip: add n_kv_tiles param for multi-tile KV (not yet used)
2026-05-29 19:47:48 +00:00
d20792aa9d
fix: TMA descriptor index for batched multi-head (batch*n_h + head)
2026-05-29 19:45:44 +00:00
754c6a692c
feat: per-head TMA descriptors for multi-head FMHA
2026-05-29 19:44:58 +00:00
9eb193458e
test: refactored multi-row TMA test with multi-head and batch
2026-05-29 19:43:41 +00:00
832a04181d
test: relax relative error threshold to 5% for BF16, use cosine > 0.999 as pass criterion
2026-05-29 19:41:40 +00:00
bfef94f5d0
test: HD=128/256 multi-row TMA FMHA
2026-05-29 19:40:32 +00:00
a1b2ab79a1
feat: 6-warp TMA FMHA multi-row kernel + test
2026-05-29 19:39:17 +00:00
d0a50f1f2e
fix: remove double normalization in TMA epilogue (P already normalized before PV)
2026-05-29 19:36:41 +00:00
fb971781aa
fix: revert V to direct load (V TMA needs debugging), K TMA works
2026-05-29 19:35:44 +00:00
cd2c028b39
feat: TMA loads for both K and V in 6-warp FMHA kernel
2026-05-29 19:34:48 +00:00
523d3838a2
test: HD=128/256 variants for TMA FMHA
2026-05-29 19:32:49 +00:00
bd4f09d514
fix: ambiguous MMA_K_BF16 in test
2026-05-29 19:32:15 +00:00
4459ddefdd
feat: 6-warp TMA FMHA kernel + test — TMA for K loads
2026-05-29 19:32:02 +00:00
7a8ba8eeb6
fix: SMEM size calculation — TILE_SZ is in BF16 elements, need *sizeof(bf16_t) for bytes
2026-05-29 19:30:50 +00:00
aac1b25442
test: TMA QK diagnostic — 3 variants to isolate failure
2026-05-29 19:29:35 +00:00
9dfada6626
test: TMA + canonical + QK GEMM incremental
2026-05-29 19:28:23 +00:00
0435e229bd
fix: typo cuda_SUCCESS -> cudaSuccess
2026-05-29 19:27:30 +00:00
74514e2680
test: TMA sub-tile load — exact pattern from test_qk_softmax
2026-05-29 19:26:56 +00:00
e449d6d5e1
test: TMA diagnostic with 192 threads
2026-05-29 19:26:09 +00:00
0b36b6047a
test: TMA diagnostic with 128 threads
2026-05-29 19:25:38 +00:00
a766b488c2
test: minimal TMA diagnostic — isolate multi-warp TMA bug
2026-05-29 19:25:01 +00:00
fe3b6b8d13
test: QK+softmax T=1 first
2026-05-29 19:12:26 +00:00
a9a87fe7b8
fix: P write with lane stride, use sRowSum
2026-05-29 19:11:19 +00:00
fd6a9b00ae
test: QK + softmax — verify P values against reference
2026-05-29 19:10:08 +00:00
5eff53c145
fix: SMEM layout and printf in PV-only test
2026-05-29 19:08:39 +00:00
106f103c83
test: PV-only GEMM — isolate PV from full FMHA pipeline
2026-05-29 19:06:52 +00:00
5542a9da00
debug: V loaded directly from GMEM (not TMA) to isolate PV issue
2026-05-29 18:57:42 +00:00
2262e10fca
fix: PV GEMM — V canonical uses CORES_MN_V=2 (block_mn=16), not 16
...
V is the B operand with block_mn=16 in the PV MMA. Its canonical layout
uses CORES_MN=16/8=2, not 128/8=16. The previous code used CORES_MN=16
which produced wrong canonical indexing → garbage PV output.
Also:
- V SMEM size is (16,16) canonical = 256 BF16, not (128,16) = 2048
- P written as 16 elements at row 0 (T=1 decode)
- V loaded from TMA (16,128) and sub-sampled to (16,16) canonical
- V TMA coord: {col_start, d_base} for (HD,s_k) tensor
2026-05-29 18:54:02 +00:00
90c3372040
refactor: TMA FMHA kernel — 4-warp, proven pattern, full pipeline
...
Complete rewrite of fmha_6warp_tma.cuh based on lessons learned:
- 128 threads (4 warps) instead of 192 (6 warps) — simpler, proven
- Warp 0: TMA load + softmax, Warp 1: MMA + TMEM alloc
- TMA: mbarrier.arrive.expect_tx (root cause fix), phase parity tracking
- Q loaded directly (T=1 decode), K/V via TMA
- Per-K-sub-tile Q and K loading into (128,16) canonical buffers
- Full softmax + PV GEMM + epilogue pipeline
- Test updated to match new kernel signature
2026-05-29 18:50:58 +00:00
d5e20b2d42
fix: reference should be raw dot product (MMA is unscaled)
2026-05-29 18:48:39 +00:00
2b945f255b
test: TMA K-load + QK GEMM — incremental from working pattern
2026-05-29 18:47:27 +00:00
f33746f183
test: minimal TMA K-load — no MMA/TMEM, just verify TMA + canonical
2026-05-29 18:46:09 +00:00
d64b62bc80
test: simple (128,16) TMA desc for K sub-tile only
2026-05-29 18:45:01 +00:00
eaf8a878cf
fix: only warp 0 lane 0 issues TMA (not all lane 0 threads)
2026-05-29 18:44:18 +00:00
69bf20b09d
fix: SMEM alignment in TMA K-only test
2026-05-29 18:43:44 +00:00
2c0ee69aea
test: TMA K-only — proven gen pattern + TMA for K loads only
2026-05-29 18:43:07 +00:00
9fc2d549e4
fix: warp-collective TMEM read/dealloc in minimal QK test
2026-05-29 18:42:03 +00:00
c755e6fdde
fix: TMEM read/dealloc for 128-thread kernel
2026-05-29 18:40:24 +00:00
bd1309ba88
test: minimal QK — 128 threads, tid==0 MMA, match working gen kernel pattern
2026-05-29 18:40:11 +00:00
39aef1284f
fix: smem size in minimal QK test
2026-05-29 18:37:38 +00:00
ce89fe9170
test: minimal QK — separate sQ0/sK0, clean SMEM layout
2026-05-29 18:37:20 +00:00
71b353577d
fix: QK direct test — per-K-sub-tile Q load (same as working kernel)
2026-05-29 18:35:00 +00:00
35d0596893
fix: T=1 for QK direct test (write_q_to_smem only handles row 0)
2026-05-29 18:33:35 +00:00
bee7cc5f8f
fix: lane vs threadIdx.x in direct QK test
2026-05-29 18:32:21 +00:00
670599b754
test: direct QK GEMM — baseline for TMA comparison
2026-05-29 18:31:57 +00:00
9a185f0222
test: debug Q SMEM canonical after TMA load
2026-05-29 18:30:52 +00:00