Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
fbb24ad
backprop init
ealmloff Mar 15, 2026
235d246
transformer example
ealmloff Mar 15, 2026
0528e0c
faster
ealmloff Mar 15, 2026
8b6839a
nanochat
ealmloff Mar 15, 2026
1ba33f6
wip
ealmloff Mar 17, 2026
bbb9cd3
drawing model + coop matmul
ealmloff Mar 18, 2026
c3b8b6d
data augmentation
ealmloff Mar 18, 2026
28bd897
better dataset
ealmloff Mar 18, 2026
8c25d67
wip
ealmloff Mar 18, 2026
9228712
multible outputs
ealmloff Mar 18, 2026
f3002a9
refactor
ealmloff Mar 18, 2026
973ffc7
ui close to working
ealmloff Mar 19, 2026
9fe42a9
ui working
ealmloff Mar 19, 2026
f315984
tab autocomplete
ealmloff Mar 19, 2026
a5d8f57
remove output files
ealmloff Mar 21, 2026
d6ac082
remove more output files
ealmloff Mar 21, 2026
f192867
move composite ops from core to fusor
ealmloff Mar 21, 2026
df2e0cf
remove pairwise
ealmloff Mar 21, 2026
14cf293
fix nanochat app drawing
ealmloff Mar 21, 2026
f58241d
more data
ealmloff Mar 21, 2026
986cc19
better token encoding and more dynamic synth data
ealmloff Mar 22, 2026
38fbb20
the start of a testing framework
ealmloff Mar 22, 2026
4b727e9
improved fuzzing cpu mode
ealmloff Mar 22, 2026
602ad86
more tests
ealmloff Mar 23, 2026
ca570c7
fix fuzzing tests
ealmloff Mar 23, 2026
3cc7595
fix strided softmax
ealmloff Mar 23, 2026
8428e87
fix clippy
ealmloff Mar 23, 2026
fb16b73
move more tests into conformance
ealmloff Mar 24, 2026
b2df02a
more fuzzy tests
ealmloff Mar 24, 2026
bcdcca3
more fuzzing
ealmloff Mar 24, 2026
1969d1e
pull out more common ops
ealmloff Mar 24, 2026
21abc15
expose layer_norm_last_dim_fused
ealmloff Mar 25, 2026
ef4f983
move bench
ealmloff Mar 25, 2026
1abdae6
more ops
ealmloff Mar 25, 2026
2079595
fix warnings
ealmloff Mar 25, 2026
05d3a65
Merge remote-tracking branch 'floneum/main' into backprop
ealmloff Jun 2, 2026
261ee9a
more cleanup
ealmloff Jul 1, 2026
39532da
Merge remote-tracking branch 'floneum/main' into backprop
ealmloff Jul 1, 2026
02a4378
drop demo app crates and revert incidental deltas vs main
ealmloff Jul 2, 2026
db9cb90
gate chunked submits to training-scale graphs, drop redundant first-t…
ealmloff Jul 2, 2026
5cdab21
shrink autograd surface: drop unused ops, dedup per-rank backward rules
ealmloff Jul 2, 2026
efa105c
compile broadcast and restride backwards through the graph
ealmloff Jul 2, 2026
9a2b6e8
express index and embedding backwards as graph ops, defer qmatmul deq…
ealmloff Jul 2, 2026
847389b
add gradient tests for untested backward ops
ealmloff Jul 2, 2026
74413f7
split autograd into module directory
ealmloff Jul 2, 2026
d3be0d3
fix clippy in autograd module
ealmloff Jul 2, 2026
e1b967d
restore main's exact cargo lock
ealmloff Jul 2, 2026
f3e91ec
support tensor-tensor comparison ops on gpu
ealmloff Jul 2, 2026
e467f6b
run every autograd test on both cpu and gpu
ealmloff Jul 2, 2026
6ffd801
add end-to-end xor classifier training test
ealmloff Jul 2, 2026
97ee879
default api supports backprop
ealmloff Jul 3, 2026
d1ade3f
optimize kernels for large batch sizes
ealmloff Jul 5, 2026
f7b580b
more fusion improvements
ealmloff Jul 11, 2026
af2f8d1
Optimize fusion planning and transformer execution
ealmloff Jul 11, 2026
859871e
replace the rewrite fixpoint with an egg equality saturation optimizer
ealmloff Jul 11, 2026
c95a837
simplify tensor conversion and layer forward APIs
ealmloff Jul 12, 2026
07ddb6d
cap in-flight gpu memory in the buffer pool
ealmloff Jul 12, 2026
7d4fe3c
enable semantic egraph identity and shared materialization
ealmloff Jul 12, 2026
e5d3e42
fix stale index
ealmloff Jul 12, 2026
d696687
derive dispatch sizing from a device occupancy policy
ealmloff Jul 12, 2026
8a24659
rebind interned payload inputs to the extraction's actual children
ealmloff Jul 12, 2026
078a5d1
fix the 128x128 coop tile and sweep every table entry for conformance
ealmloff Jul 12, 2026
25d6c5a
replace the coop tile ladder with a measured general cost model
ealmloff Jul 12, 2026
bf5cd31
fuse unary epilogues into cooperative matmul
ealmloff Jul 12, 2026
2f24b2f
reuse fusion plans across repeated layers by default
ealmloff Jul 12, 2026
6a06625
score split-k by the occupancy wave model and collapse CoopGemmParams…
ealmloff Jul 12, 2026
910ef4d
make graph optimization size-independent
ealmloff Jul 12, 2026
b4244c3
single-source qgemv dispatch geometry from the kernel's shape selection
ealmloff Jul 12, 2026
b2f87d9
pin fallback-family selection tables with structural legality properties
ealmloff Jul 12, 2026
9493a69
add coop matmul run-to-run determinism gate and drop dead policy helpers
ealmloff Jul 12, 2026
5ff4346
pass the selected qgemv shape through the builders and drop the coop …
ealmloff Jul 12, 2026
4eae00e
absorb outside-consumer producers as region outputs
ealmloff Jul 12, 2026
a6c132e
Optimize repeated fusion planning
ealmloff Jul 12, 2026
5351c35
Accelerate repeated transformer training
ealmloff Jul 13, 2026
88f9254
bound fusion-plan windows to the generator observation horizon
ealmloff Jul 13, 2026
ef528a8
Fix horizontal fusion scheduling
ealmloff Jul 13, 2026
2a0808d
Generalize attention APIs and simplify recognition
ealmloff Jul 13, 2026
21c69b1
vector component ir op, vec workgroup arrays, and fma/msl kernel labs
ealmloff Jul 13, 2026
e61a38c
flash attention kernel via coop store-to-tile
ealmloff Jul 18, 2026
e419487
strided rank-4 operands and gqa in the flash attention kernel
ealmloff Jul 18, 2026
d6ad25d
flash attention backward kernels: lse, dq, dkv
ealmloff Jul 18, 2026
f796bf6
dtype-generic f16 training, workgroup tile arena, measured coop tile …
ealmloff Jul 22, 2026
6c0bc03
drop unused elide import
ealmloff Jul 24, 2026
15d8a76
transformer example at 20m params
ealmloff Jul 24, 2026
487fd54
simplify the compiler: one composition engine, derived no-subgroup qm…
ealmloff Jul 25, 2026
bb3ee24
fix the last five red conformance tests: window-escaping rewrites, ki…
ealmloff Jul 25, 2026
4e3261a
graphviz dumps of the execution graph between resolver stages, roofli…
ealmloff Jul 25, 2026
e1db008
linear conv backward, unary chains into matmul epilogues, autograd ta…
ealmloff Jul 26, 2026
a881dd5
one scalar argmin for matmul tile and split-k, derived subgroup split…
ealmloff Jul 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ jobs:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
FUSOR_CONFORMANCE_REQUIRE_GPU: "1"
run: cargo test --lib --bins --tests --examples --workspace --features kalosm/language,kalosm/sound,kalosm/vision,kalosm/remote,kalosm/scrape --exclude fusor-core --exclude rbert --exclude rwhisper
run: cargo test --lib --bins --tests --examples --workspace --features kalosm/language,kalosm/sound,kalosm/vision,kalosm/remote,kalosm/scrape --exclude rbert --exclude rwhisper

doc:
if: github.event.pull_request.draft == false
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ rust-analyzer
/.claude
**/.claude/
profiles
/fusor-ml/fusor/examples/data
91 changes: 77 additions & 14 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 7 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,9 @@ members = [
]

[patch.crates-io]
wgpu = { git = "https://github.com/ealmloff/wgpu", branch = "yield-now" }
# Local checkout of the wgpu fork while the mixed-precision cooperative-MMA
# extension bakes (f16 operands with f32 accumulators in the MSL writer).
wgpu = { path = "../wgpu-fusor/wgpu" }

[workspace.dependencies]
kalosm = { path = "./interfaces/kalosm", version = "0.4.0", default-features = false }
Expand Down Expand Up @@ -390,3 +392,7 @@ codegen-units = 1

[profile.dev.package."*"]
opt-level = 3

[patch."https://github.com/ealmloff/wgpu"]
naga = { path = "../wgpu-fusor/naga" }
wgpu = { path = "../wgpu-fusor/wgpu" }
4 changes: 4 additions & 0 deletions fusor-ml/conformance/goldens/attention_gqa_causal.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
out 0xa45dec1e98442bd9
dq 0x9d3eefd367974641
dk 0x712914ed2040211b
dv 0xeedffc029ea157a5
1 change: 1 addition & 0 deletions fusor-ml/conformance/goldens/bilstm_trace.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
out 0xab42f2b1f7f2e4b7
5 changes: 5 additions & 0 deletions fusor-ml/conformance/goldens/decode_trace_dispatch.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
399 [("flash_attention", 6), ("matmul_f32", 19), ("merged_matmul", 6), ("nary_direct", 33), ("row_program", 13)]
1 [("flash_attention", 6), ("matmul_f32", 19), ("merged_matmul", 6), ("nary_direct", 32), ("row_program", 13)]
1 [("flash_attention", 6), ("matmul_f32", 19), ("merged_matmul", 6), ("merged_region", 1), ("merged_row", 1), ("nary_direct", 35), ("row_program", 15)]
1 [("flash_attention", 24), ("matmul_f32", 59), ("merged_matmul", 18), ("merged_region", 40), ("merged_row", 32), ("nary_direct", 114), ("row_program", 27)]
1 [("flash_attention", 24), ("matmul_f32", 59), ("merged_matmul", 18), ("merged_region", 39), ("merged_row", 26), ("nary_direct", 114), ("row_program", 27)]
9 changes: 9 additions & 0 deletions fusor-ml/conformance/goldens/kernel_bench_dispatch.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
wgrad merged_matmul 2
wgrad256 merged_matmul 2
wgrad256m merged_matmul 2
fwd merged_matmul 2
fwd256 merged_matmul 2
fwdup merged_matmul 2
attn merged_matmul 2
softmax merged_row 1
softmax row_program 1
4 changes: 4 additions & 0 deletions fusor-ml/conformance/goldens/qgemv_decode_ggml.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
q4k_4096x8192 0x7f4870e80e75707a
q4k_4096x8193 0x92adc0e985bb5224
q4k_4096x5120 0x253507257e08480d
q6k_4096x8192 0x5394b93db2f8ac10
Loading
Loading