Repository navigation
FA4 consumer Blackwell (sm_120) integration: forward + backward + dispatcher fixes #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from 9 commits
Commits
Show all changes
224 commits
Select commit
Hold shift + click to select a range
ead67d3
[Cute,Fwd,Sm120] Disable use_tma_O in SM80 base class
jganbar bc67a9c
[Cute,Fwd,Sm120] Use universal smem-store atom for SM80 MMA layout
jganbar c0250ca
[Cute,Fwd,Sm120] Default pack_gqa=False on consumer Blackwell
jganbar e595c95
Add SM120 TMA forward kernel with warp specialization
blake-snc a6b9896
Fix arch override and add SMEM fallback in SM120 TMA forward
blake-snc bf10b6d
Move `stream` to end of FlashAttentionForwardSm120Tma.__call__
blake-snc b7be538
Add SM80/SM120 block-sparse forward attention support
blake-snc 3cd8cb6
Use get_total_block_count utility for block-sparse early exit check
blake-snc cee3b54
SM120 (consumer Blackwell) integration: forward + backward end-to-end…
thad0ctor e06bc15
test: make backward postprocess white-box guard whitespace-agnostic
thad0ctor 4670859
test: use deterministic per-pattern seeds instead of Python hash()
thad0ctor a0dd865
bench: backward tile sweep harness for SM120
thad0ctor 47aa883
bench: loosen SM120 backward correctness tol to 0.1 abs
thad0ctor 4d59090
cute: flip SM120 backward d<=64 default num_stages 2->1
thad0ctor 362a65a
cute: SM120 backward repartition 4 warps -> 8 warps per block
thad0ctor 55ab672
cute: SM120 backward v4 atomic dQ/dK/dV via 4-contig per-thread gmem …
thad0ctor dd8ef9b
cute: enable pack_gqa in SM120 backward (interface + kernel port)
thad0ctor 8ec45d9
cute: keep SM120 bwd pack_gqa opt-in
thad0ctor 78870f9
cute: store SM120 pack_gqa dkv accum directly
thad0ctor e63118b
cute: split SM120 pack_gqa backward m-loop
thad0ctor 0e821f3
cute: coalesce SM120 pack_gqa dkv accum zero
thad0ctor bf6861f
cute: fuse SM120 pack_gqa dkv postprocess
thad0ctor d93408a
cute: skip aligned SM120 pack_gqa row guards
thad0ctor c43a7b4
cute: keep SM120 GQA forward on nonpacked path
thad0ctor 1b7db10
cute: restore SM120 packed GQA forward path
thad0ctor d2d0ec2
bench: mark SM120 forward current winner
thad0ctor 9b46c42
bench: record SM120 current FA2 comparison
thad0ctor 37f3b27
cute: retune SM120 Qwen forward tile
thad0ctor f609c64
cute: optimize SM120 local forward dispatch
thad0ctor 0af9a4c
cute: skip SM120 dense TMA seqlen masks
thad0ctor eb6e4b8
cute: skip SM120 dense base seqlen mask
thad0ctor e65b67a
cute: retune SM120 qpkv5 and local forward tiles
thad0ctor 4c0b291
cute: retune SM120 Qwen forward tiles
thad0ctor 37840d3
cute: retune SM120 long Qwen forward tiles
thad0ctor 14459b8
cute: retune SM120 long Qwen forward tiles
thad0ctor 5174f9e
cute: skip unneeded SM120 causal mask work
thad0ctor 7466e10
cute: stage SM120 long qpkv5 Q in registers
thad0ctor f25e87e
cute: retune SM120 long qpkv5 forward
thad0ctor 48c7d4d
cute: extend SM120 qpkv5 long causal retune
thad0ctor 4e895b5
cute: tune SM120 qpkv6 TMA stages
thad0ctor ec6dd92
cute: tune SM120 qpkv5 noncausal TMA stages
thad0ctor ca7f03e
cute: narrow SM120 qpkv5 TMA retune
thad0ctor 08c184f
cute: keep SM120 qpkv6 TMA retune noncausal
thad0ctor 6a8f9ab
cute: revert unstable SM120 TMA stage retune
thad0ctor 3dc3f22
cute: tune SM120 Gemma qpkv4 local forward
thad0ctor 6b77ace
cute: tune SM120 qpkv5 midseq causal forward
thad0ctor 6459f7d
cute: tune SM120 qpkv6 D256 forward load overlap
thad0ctor 532331f
cute: retune SM120 qpkv5 16k forward
thad0ctor 4774a0c
docs: add SM120 win ledger
thad0ctor c6051aa
docs: tighten SM120 win ledger scope
thad0ctor 60354fd
cute: retune SM120 qpkv8 8k forward
thad0ctor a986d34
docs: record SM120 qpkv6 profiling note
thad0ctor bbe6294
docs: record SM120 qpkv6 hook scheduling result
thad0ctor 3c34c6a
docs: record SM120 qpkv6 predicate probes
thad0ctor fb5d416
cute: address SM120 review correctness
thad0ctor 56310a8
cute: close remaining SM120 review gaps
thad0ctor ced523f
cute: retune SM120 qpkv4 forward lookup
thad0ctor fdd8c12
docs: record SM120 qpkv4 lookup validation
thad0ctor 09b885d
docs: record SM120 five-repeat broad sweep
thad0ctor b9261e6
docs: record rejected SM120 qpkv2 dense probe
thad0ctor f6cf982
docs: record SM120 five-repeat rerun
thad0ctor d6bdf7e
docs: record SM120 noisy miss repeat
thad0ctor 4275428
docs: record SM120 ten-repeat broad sweep
thad0ctor e93f8ef
Tune SM120 D64 MHA forward lookup
thad0ctor 3dcf691
Tune SM120 D128 qpkv4 forward lookup
thad0ctor 85d75e0
Add SM120 paged KV for D192 and D256
thad0ctor 1b7c366
Fix SM120 local test worktree import
thad0ctor 7e29608
Add SM120 D256 backward baseline
thad0ctor 3b236a5
docs: record SM120 forward tail reruns
thad0ctor 610a666
cute: auto-pack SM120 qpkv8 noncausal backward
thad0ctor ed94071
docs: record SM120 D256 N32 backward rejection
thad0ctor bd5b29f
cute: auto-pack SM120 qpkv4 S8192 backward
thad0ctor 74c0b4d
cute: expand SM120 qpkv4 S8192 backward auto-pack
thad0ctor 5bbee40
docs: record SM120 D256 backward follow-up probes
thad0ctor 08ea5fc
cute: expand SM120 D256 backward autopack rows
thad0ctor f5b5ea1
docs: record qpkv2 backward autopack extension
thad0ctor e01e891
cute: tune SM120 qpkv5 forward hooks
thad0ctor effed34
docs: record D64 MHA override rejection
thad0ctor e20ee42
cute: tune SM120 qpkv8 S4096 forward
thad0ctor 76746ef
docs: record SM120 forward no-change probes
thad0ctor a05b301
cute: add SM120 fused dKV profiling gate
thad0ctor 3b1f43f
cute: oversplit SM120 qpkv4 causal backward
thad0ctor 1432c92
cute: fuse SM120 qpkv8 causal dkv postprocess
thad0ctor e943809
cute: gate SM120 qpkv8 fused dkv to bf16
thad0ctor 7d12686
docs: record SM120 D256 backward retest results
thad0ctor 30db028
docs: record SM120 D256 source probe rejections
thad0ctor 8dc70d4
tests: harden SM120 review guards
thad0ctor 229f87f
cute: split SM120 D256 qpkv6 qpkv8 causal bwd
thad0ctor 2d7ce45
docs: record SM120 split2 B1 validation
thad0ctor 89fe103
docs: record SM120 empty split rejection
thad0ctor 3b276ae
cute: tune SM120 qpkv8 h8 causal bwd split
thad0ctor 17ce38a
docs: record SM120 qpkv8 h8 split3 sweep
thad0ctor 986d732
docs: record SM120 combined zero rejection
thad0ctor e59fa22
docs: record SM120 qpkv4 split rejection
thad0ctor cf39944
docs: record SM120 fused dKV rejections
thad0ctor 4f1ea4d
cute: tune SM120 qpkv4 causal pack split
thad0ctor 541cd4b
test: update SM120 qpkv4 split policy
thad0ctor 32f1d31
docs: record SM120 qpkv6 bwd NCU
thad0ctor f5da596
docs: record SM120 split3 wide rejection
thad0ctor 10dbd84
cute: tune SM120 qpkv8 long causal
thad0ctor d7f8a5d
cute: extend SM120 qpkv8 long causal tile
thad0ctor eb91374
docs: record SM120 qpkv5 tile rejection
thad0ctor 557ce60
docs: record SM120 qpkv5 non-TMA rejection
thad0ctor a11ddad
docs: record SM120 D256 schedule rejections
thad0ctor a8632f8
docs: record SM120 long forward sweep
thad0ctor 38fb046
docs: record SM120 long forward rejections
thad0ctor 0d709fb
docs: record SM120 focused long no-patch probes
thad0ctor d11c0a1
docs: record SM120 post-qpkv8 broad sweep
thad0ctor a0fb2e2
docs: record SM120 S4096 forward rejections
thad0ctor 8320cf4
cute: route SM120 qpkv5 S4096 noncausal off TMA
thad0ctor 1ca5ca7
docs: record SM120 qpkv5 non-TMA sweep
thad0ctor 6507984
docs: record SM120 qpkv4 pack-off rejection
thad0ctor 1f1667d
docs: record SM120 qpkv8 noncausal rejections
thad0ctor f4bf650
cute: skip full causal masks for SM120 D256 bwd rows
thad0ctor e448d3e
cute: extend SM120 D256 causal mask skip to qpkv2
thad0ctor 9078c7a
cute: reject SM120 varlen block sparsity on SM80 path
thad0ctor 29ad06c
docs: reject SM120 D256 m-load predicate elision
thad0ctor 65b4b5d
docs: update SM120 qpkv6 bwd profile baseline
thad0ctor fb21d97
docs: reject SM120 PackGQA row-map probe
thad0ctor a7c754a
docs: record SM120 qpkv8 H16 bwd profile
thad0ctor 682a020
docs: reject SM120 D256 non-alias schedule
thad0ctor e09d6a2
docs: reject SM120 D256 cp.async cache-always
thad0ctor 1a4a7ab
docs: reject SM120 B1 qpkv6 mask skip
thad0ctor 9ed3b49
docs: reject SM120 TMA no-inf-check probe
thad0ctor 9f29cce
tune SM120 qpkv5 S16384 B1 hooks
thad0ctor 8ed047f
tune SM120 qpkv5 S16384 qregs
thad0ctor 51a3c5b
docs: reject SM120 qpkv2 split probe
thad0ctor d6bf449
tune SM120 qpkv5 S16384 B2 qregs
thad0ctor d6dc1e9
tune SM120 qpkv5 S16384 qregs all batches
thad0ctor 1278426
tune SM120 qpkv8 S65536 causal
thad0ctor 83d9968
tune SM120 D256 qpkv8 qpkv16 noncausal
thad0ctor 246a798
tune SM120 qpkv8 long noncausal
thad0ctor 4f7e0f4
tune SM120 qpkv6 long hooks
thad0ctor 2b988f5
limit SM120 qpkv6 hooks to stable rows
thad0ctor 3db93aa
docs: reject SM120 qpkv5 long nc probes
thad0ctor fcb6352
tune SM120 qpkv6 causal block bounds
thad0ctor 2fedf02
docs: record SM120 qpkv8 causal probe results
thad0ctor 8f02987
tune SM120 qpkv8 D256 causal qregs
thad0ctor 517282c
docs: reject SM120 qpkv8 D256 hook probe
thad0ctor 77a7cb4
tune SM120 qpkv6 D256 long qregs
thad0ctor fcc906b
tune SM120 qpkv8 D256 causal qregs
thad0ctor 8d7c388
docs: update SM120 win ledger after qregs probes
thad0ctor 1d2d944
tune SM120 qpkv16 D256 causal qregs
thad0ctor fd8ddd6
docs: record current SM120 long sweep
thad0ctor e430ad2
docs: reject SM120 qpkv5 S8192 nonTMA probe
thad0ctor 93d200b
docs: record SM120 qpkv8 D128 profile
thad0ctor 3960316
docs: record post-qpkv16 broad sweep
thad0ctor 43f1ea9
tune SM120 qpkv6 B2 qregs rows
thad0ctor 641a895
docs: record qpkv6 B2 broad sweep
thad0ctor cf0a7f0
docs: record rejected SM120 forward gap probes
thad0ctor 5cbf8fc
docs: record SM120 pause-point forward sweep
thad0ctor 3f7b69c
docs: record rejected SM120 D128 forward probes
thad0ctor 6125775
optimize SM120 packed GQA valid rows
thad0ctor af5a57d
record SM120 pause benchmark
thad0ctor d49655e
tune SM120 qpkv6 S8192 noncausal
thad0ctor b782823
tune SM120 qpkv4 backward mask skip
thad0ctor 5dc126d
docs: record SM120 rejected probes
thad0ctor cd1b3e3
docs: record SM120 S2048 backward pause point
thad0ctor dfb7a24
tune SM120 qpkv4 S2048 backward
thad0ctor 7a6e8c8
tune SM120 D128 forward tiles + qpkv2 backward split for RTX 6000
thad0ctor a787c10
tune SM120 D256 forward qpkv6 causal + gemma local for RTX 6000
thad0ctor 0f2c962
docs: record RTX 6000 overnight backward lever sweep (all rejected)
thad0ctor 7452f90
tune SM120 gemma-e2b qpkv8 S2048 backward split for RTX 6000
thad0ctor a8027b6
tune SM120 B=1 / large-S causal backward splits for RTX 6000
thad0ctor 729d69c
tune SM120 B=1 S1024 causal backward splits for RTX 6000
thad0ctor cbf1108
tune SM120 B=1 qpkv4 S2048 causal backward split for RTX 6000
thad0ctor eb76554
tune SM120 B=1 qpkv4 S4096 causal backward split for RTX 6000
thad0ctor d8e6524
docs: record multi-agent across-the-board pass (fwd tuned; bwd kernel…
thad0ctor b71bc13
speed: SM120 D128 long-seq backward asymmetric pipeline stage (RTX 6000)
thad0ctor 878083f
docs: sm_120 has no tcgen05/TMEM (D256 backward wall is a hardware li…
thad0ctor d73a6d5
speed: enable qpkv6 D256 S16384 causal static block bounds (RTX 6000)
thad0ctor 114de65
docs: fused-dKV broadening re-test flat (mining pass complete)
thad0ctor c410897
docs: double-check correctness audit + flag pre-existing local-bwd bug
thad0ctor c29cc0e
fix: SM120/SM80 local/sliding-window backward gradients (was garbage)
thad0ctor 50cc3b6
speed: windowed m-block range for SM120/SM80 local backward
thad0ctor 09be437
docs: record local-window backward fix (correctness + windowed m-rang…
thad0ctor ea9770c
docs: sibling-bug hunt — local fix robust; flag bidirectional-window …
thad0ctor 21d8159
test: add SM120 D256 local/sliding-window BACKWARD regression test
thad0ctor 318eccb
fix: non-causal symmetric sliding-window forward (block re-processing…
thad0ctor 9515d12
test: add SM120 non-causal bidirectional sliding-window regression (f…
thad0ctor 2506f42
docs: record bidirectional sliding-window forward fix
thad0ctor 254f78d
docs: "sm_120 feature gaps" are a pre-existing test-batching artifact…
thad0ctor d27ebd0
fix: varlen + GQA forward produced garbage for sequences after the first
thad0ctor 58a2114
docs: correct the "feature gaps" conclusion — real varlen+GQA bug, no…
thad0ctor 8f6bfb3
test: relative tolerance for qpkv16 D256 backward (was mis-scaled abs…
thad0ctor 1de4caa
fix: varlen+GQA backward dK/dV for non-block-aligned cu_seqlens
thad0ctor de61afa
docs: sweep 'losses' are a clock-boost measurement artifact, not kern…
thad0ctor 0069fd9
perf: SM120 D128 qpkv5 S4096 causal fwd tile 64x128->128x64 (+2.8% vs…
thad0ctor e040276
docs: true bwd-d128 standing is parity at S>=4096 (in-process); 0.966…
thad0ctor 305e623
docs: S1024 bwd-d128 resolved as parity-to-win (1.03-1.05); no real b…
thad0ctor 728c4bf
perf: SM120 general D256 forward wide tile 64x64->128x64+Qregs+256t a…
thad0ctor 357b524
perf: SM120 D128 qpkv4 S1024 causal fwd tile 64x64->64x96 (+5-6%, fli…
thad0ctor ea5b06a
fix: support learnable_sink on the SM80-base forward kernel (SM120 D2…
thad0ctor 527f58d
docs: post-fix fwd sweep 1.044 (D256 1.072); D128 laggards are bias, …
thad0ctor a7b8d01
perf: SM120 gemma-local D256 forward wide tile 64x16/32 -> 128x{32,64…
thad0ctor 30fa0f7
docs: final forward standing 1.053 geomean (was 1.015); gemma-local l…
thad0ctor 68e86b0
perf: extend SM120 D256 wide tile to S2048 non-causal (num_head>=16, …
thad0ctor 640debe
docs: D256 backward is parity in-process (0.996, 13/28 wins); the 'oc…
thad0ctor 315c5e4
perf: extend SM120 D256 wide tile to S2048 causal qpkv16 (num_head>=3…
thad0ctor 4d8c32b
docs: backward deep-profiling — reg-bound 255/1-CTA (D128 too, w/ spi…
thad0ctor c4077ac
docs: backward ncu profiling — D128 compute-bound, D256 global-reload…
thad0ctor b0bd28a
docs: backward redesign de-risk — dK/dV split infeasible (~137 reg); …
thad0ctor 98cc0e2
docs: REJECT L2-residency bwd scheduler on SM120 (1.5-2.5x slower; de…
thad0ctor 7d27475
perf: extend SM120 D256 wide tile to varlen forward (+7-11% packed-seq)
thad0ctor 5bfc7c1
perf: extend SM120 gemma-local D256 wide tile to varlen forward
thad0ctor e5e18d0
perf: SplitKV (FlashDecoding) for SM120 forward — decode 2-4x (was di…
thad0ctor 512254c
perf: D128 decode tile 128x64 -> 16x64/1-warp (+50-68% on SplitKV dec…
thad0ctor b3f807a
perf: custom sm_120 GEMV decode kernel (FlashAttentionDecodeSm120, ga…
thad0ctor 2268f09
docs: decode occupancy-crack is a validated NEGATIVE — kernel is memo…
thad0ctor 5b80257
docs: decode coalescing NEGATIVE + correction — gmem already coalesce…
thad0ctor 86f0ee5
perf: paged-KV D128 forward tile 128x128 -> 64x64/128t (~1.8x, infere…
thad0ctor 6bc1ff9
docs: creative opportunity-hunt outcome — paged-KV D128 1.84x banked;…
thad0ctor 6e17038
feat: fp8 (e4m3) KV-cache decode for sm_120 — 1.6-1.85x at R<=4 (gated)
thad0ctor 078fd08
perf: fp8 decode R8 two-level reduction — +10-13% at GQA R8 (gated)
thad0ctor f9e7c3b
feat: auto-enable fp8 KV-cache decode + unsupported-shape guard + pytest
thad0ctor efe7aef
perf: D128 GQA-4 S2048 causal tile 64x96 -> 128x64+ns2 (stabilizes vs…
thad0ctor 5b7aab1
docs: forward re-sweep outcome — 1 win banked, otherwise at floor
thad0ctor f0c91b9
perf: wire up LPT scheduler for causal/local forward — closes D128 MH…
thad0ctor 1647701
docs: causal-MHA large-S residual is intrinsic (255-reg/1-CTA occupan…
thad0ctor 4e8b02a
docs: document sm_120 (consumer Blackwell) support, fp8 KV decode, an…
thad0ctor 4e4a296
test: skip deterministic backward on sm_120 (SM80-base bwd lacks dQ-s…
thad0ctor 7f6929e
refactor: remove experimental SM120 tuning env-flag hatches, hardcode…
thad0ctor bfad828
chore: drop internal campaign notes (win.md, SM120 perf log) from tra…
thad0ctor be2cecc
fix: two sm_120 correctness bugs (learnable_sink+SplitKV, negative-of…
thad0ctor File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
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
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
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
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.