AstrAI/csrc/kernels
ViperEkura 988e01314d perf: pipeline prefill MMA kernel (double-buffered K/V + packed stores)
- double-buffer K/V one tile ahead via cp.async to overlap load with tensor-core math (ncu long_scoreboard 2.12->0.53)
- reorder wait->barrier->prefetch so one __syncthreads/tile covers both cross-warp publish and buffer-reuse (was two)
- add predicated cp_async_16_pred (src-size=0 zero-fills OOB) to unify full/partial tiles, dropping the scalar fallback
- halve BC to 16 to keep 3 blocks/SM despite the doubled smem
- pack adjacent bf16 output into one 32-bit STG, removing the uncoalesced scalar-store penalty (14%->5% sectors)
- result vs torch SDPA: prefill 0.61-0.78x -> 0.70-0.82x, spills eliminated
2026-07-10 12:19:14 +08:00
..
gqa_common.cuh fix: correct prefill mask index, unify GQA kernel interface 2026-07-06 17:21:23 +08:00
gqa_decode_attn.cu perf: add split-K (FlashDecoding) to decode MMA kernel 2026-07-10 11:43:18 +08:00
gqa_decode_attn.cuh fix: correct prefill mask index, unify GQA kernel interface 2026-07-06 17:21:23 +08:00
gqa_decode_attn_mma.cuh perf: add split-K (FlashDecoding) to decode MMA kernel 2026-07-10 11:43:18 +08:00
gqa_mma_utils.cuh perf: pipeline prefill MMA kernel (double-buffered K/V + packed stores) 2026-07-10 12:19:14 +08:00
gqa_prefill_attn.cu perf: pipeline prefill MMA kernel (double-buffered K/V + packed stores) 2026-07-10 12:19:14 +08:00
gqa_prefill_attn.cuh perf: reduce MMA kernel registers, switch to static smem 2026-07-10 00:39:47 +08:00
gqa_prefill_attn_mma.cuh perf: pipeline prefill MMA kernel (double-buffered K/V + packed stores) 2026-07-10 12:19:14 +08:00