Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
271 commits
Select commit Hold shift + click to select a range
91df355
[FIX] [SYMBOLIC ENGINE] Iterate tl.static_range concretely instead of…
mark14wu Jun 11, 2026
e4c754f
[FEAT] [SANITIZER] Compiled mode: static out-of-bounds checking over …
mark14wu Jun 11, 2026
b02023c
[FIX] [SANITIZER] Address Codex review: respect disable flag, model l…
mark14wu Jun 11, 2026
95d7c2b
[FIX] [SANITIZER] Compiled mode: fail-closed on missing metadata, per…
mark14wu Jun 11, 2026
4142bb9
[FIX] [FRONTEND] Remove interpreter-added tensor attributes on restore
mark14wu Jun 11, 2026
8eaa25d
[FIX] [CORE] Present raw jit_fns to the compiler during warmup compil…
mark14wu Jun 11, 2026
1efaf08
[FEAT] [SANITIZER] Add triton-sanitizer-compiled CLI entry point
mark14wu Jun 11, 2026
1edd9d8
[FIX] [SANITIZER] Sanitizer(compile=False) must dispatch to eager, no…
mark14wu Jun 11, 2026
2060e5b
[FIX] [SANITIZER] Fail closed on unrecognized memory ops in the TTIR …
mark14wu Jun 11, 2026
364a53c
[FIX] Complete symbolic race detector lifecycle handling
mark14wu Jun 14, 2026
80e1b5c
[REFACTOR] Move LoopSite hook identity out of race detector branch
mark14wu Jun 14, 2026
81c168d
[REFACTOR] Split core loop lifecycle changes
mark14wu Jun 14, 2026
3e8de0c
[REFACTOR] Move core hook consumers to extracted branch
mark14wu Jun 14, 2026
242712a
Merge branch 'main' into race-detector-z3-demo
mark14wu Jun 14, 2026
17b0ab0
[FIX] [RACE DETECTOR] Never read a verdict finalize did not produce
mark14wu Jul 5, 2026
6e445d5
[TEST] [RACE DETECTOR] Align block-pointer footprint test with pessim…
mark14wu Jul 6, 2026
803be1f
[FEAT] [RACE DETECTOR] Compiled mode: static shared-memory race detec…
mark14wu Jul 6, 2026
c576c2e
[FEAT] [SANITIZER] Compiled mode: model min/max/rem, scf.if guarding,…
mark14wu Jul 6, 2026
92563a3
Merge branch 'sanitizer-compiled-mode' into race-detector-z3-demo
mark14wu Jul 6, 2026
cf0b905
[DOCS] [RACE DETECTOR] Restructure plan around the concretization ladder
mark14wu Jul 6, 2026
d8b85bd
[FEAT] [RACE DETECTOR] S1: shared TTIR reader, atomic RMW semantics, …
mark14wu Jul 7, 2026
2d1e289
[FEAT] [SANITIZER] [RACE DETECTOR] S2: model scf.if conditions as pat…
mark14wu Jul 7, 2026
fba8b53
[FEAT] [SANITIZER] [RACE DETECTOR] S2: per-term DataDep policy
mark14wu Jul 7, 2026
e031202
[FEAT] [RACE DETECTOR] S3: T1 global-memory race track over TTIR
mark14wu Jul 7, 2026
ba86f61
[FEAT] [RACE DETECTOR] S4: tier selector — T0 proofs behind a lineari…
mark14wu Jul 7, 2026
46ba124
[FEAT] [RACE DETECTOR] S4: C2 witness replay + C3 differential cross-…
mark14wu Jul 9, 2026
60d155b
[FIX] [RACE DETECTOR] C2/C3: launch-grid replay, focus ambiguity gate…
mark14wu Jul 9, 2026
14f3b09
[DOCS] [RACE DETECTOR] S5: DataRaceBench-style evaluation protocol
mark14wu Jul 9, 2026
91829c2
[FEAT] [RACE DETECTOR] S5: evaluation harness skeleton
mark14wu Jul 9, 2026
10ad2b2
[FEAT] [RACE DETECTOR] S6: RMW-return modeling (B) and the await abst…
mark14wu Jul 9, 2026
aa050e3
[FEAT] [RACE DETECTOR] S5 Phase A: TritonRaceBench labeled corpus + D…
mark14wu Jul 9, 2026
ebced96
[FEAT] [RACE DETECTOR] S5 Phase B/C: tutorials + liger corpora, mutat…
mark14wu Jul 9, 2026
0071691
[DOCS] [RACE DETECTOR] Revise S5 next steps: paper-driven items, demo…
mark14wu Jul 9, 2026
5ad7a72
[FEAT] [RACE DETECTOR] S5 RQ-driven items: headline, scaling, ablatio…
mark14wu Jul 9, 2026
ee3c328
[DOCS] [RACE DETECTOR] Refresh stale numbers and add verification stamp
mark14wu Jul 9, 2026
b2d279c
[FEAT] [RACE DETECTOR] S5 T0 stretch: symbolic loop bounds
mark14wu Jul 10, 2026
687735e
[DOCS] [RACE DETECTOR] Descope M5: drop the SMT-LIB emission deliverable
mark14wu Jul 10, 2026
ebcf0e0
[DOCS] [RACE DETECTOR] Restructure TODO: remaining work first, ordere…
mark14wu Jul 10, 2026
2a72849
Merge branch 'main' into race-detector-z3-demo
mark14wu Jul 10, 2026
c980e3f
Merge branch 'race-detector-z3-demo' of github.com:Deep-Learning-Prof…
mark14wu Jul 10, 2026
6021aa4
[FIX] [RACE DETECTOR] CI: TRITON_INTERPRET pollution vs triton 3.7 AS…
mark14wu Jul 10, 2026
7bbf641
[FEAT] [RACE DETECTOR] M5 sm80: shared-track sweep, mutation matrix, …
mark14wu Jul 10, 2026
fab7b8f
[FIX] [RACE DETECTOR] Enforce the launch contract on unread pid axes
mark14wu Jul 10, 2026
68bd45c
[FEAT] [RACE DETECTOR] Corpus growth (trb020-024) + moral-strength se…
mark14wu Jul 10, 2026
68e20df
[FEAT] [RACE DETECTOR] C2 per-site keying, numpy-2 interpreter shim, …
mark14wu Jul 10, 2026
db36067
[FIX] [CI] skip optional warmup gracefully on driverless hosts
mark14wu Jul 10, 2026
24a4c59
[FEAT] [RACE DETECTOR] M4 tranche 1: sm90 wgmma agent, WAR direction,…
mark14wu Jul 10, 2026
98a6072
[EVAL] [RACE DETECTOR] M5: sm90 sweep half — wgmma mutations, CS3 cas…
mark14wu Jul 10, 2026
4e5c3f9
[EVAL] [RACE DETECTOR] landing figure: the 2-D concretization map (pl…
mark14wu Jul 10, 2026
ace7e79
[DOCS] [RACE DETECTOR] TODO: M4 tranche 1, sm90 sweep half, landing f…
mark14wu Jul 10, 2026
79b015b
[DOCS] [RACE DETECTOR] Track the paper's extension placeholders as a …
mark14wu Jul 10, 2026
7cd8cd7
[FEAT] [RACE DETECTOR] M4 tranche 2: TMA/mbarrier protocol, WAW query…
mark14wu Jul 10, 2026
0fc6cd2
[EVAL] [RACE DETECTOR] M5: TMA kernel in the sm90 sweep — mbarrier mu…
mark14wu Jul 10, 2026
03d0d84
[DOCS] [RACE DETECTOR] TODO: M4 tranche 2 landed with the adversarial…
mark14wu Jul 10, 2026
a53f3e7
[EVAL] [RACE DETECTOR] record liger-kernel provenance in the results …
mark14wu Jul 10, 2026
677be13
[DOCS] [RACE DETECTOR] Scope M4 tranche 4: Blackwell tensor memory, a…
mark14wu Jul 11, 2026
9c2400c
[EVAL] [RACE DETECTOR] vendor TritonBench_G_v1 (184 real-world Triton…
mark14wu Jul 11, 2026
99c4319
[EVAL] [RACE DETECTOR] TritonBench_G_v1 corpus: GPU launch capture, b…
mark14wu Jul 11, 2026
5860fd3
[DOCS] [RACE DETECTOR] TODO: TritonBench_G_v1 corpus landed; launch-s…
mark14wu Jul 11, 2026
7e71ac0
[DOCS] [RACE DETECTOR] Prioritize address-position lifting; queue the…
mark14wu Jul 11, 2026
3eab447
TODO: queue category-8 communication-kernel corpus work and gsan base…
mark14wu Jul 11, 2026
e3976d7
[DOCS] [RACE DETECTOR] hand-off spec: address-position lifting (TODO …
mark14wu Jul 11, 2026
4f0ea0a
[FEAT] [RACE DETECTOR] address-position lifting: snapshot selects in …
mark14wu Jul 12, 2026
00bb8e9
[EVAL] [RACE DETECTOR] category 8a: comm/comp communication-kernel fa…
mark14wu Jul 12, 2026
3844226
[DOCS] [RACE DETECTOR] TODO: §3d address-position lifting and §2 cate…
mark14wu Jul 12, 2026
e1752e6
[EVAL] [RACE DETECTOR] shared capture layer, int/bool value snapshots…
mark14wu Jul 12, 2026
7fe3269
[EVAL] [RACE DETECTOR] fla corpus: flash-linear-attention, 378 captur…
mark14wu Jul 12, 2026
7c41c31
[EVAL] [RACE DETECTOR] fla_capture: write the specs JSON compact
mark14wu Jul 12, 2026
d8a5712
[FIX] [RACE DETECTOR] gate reduce results out of event addresses
mark14wu Jul 12, 2026
f7ac9cb
[DOCS] [RACE DETECTOR] TODO: fla corpus 3f landed, 3d snapshot follow…
mark14wu Jul 12, 2026
51e0575
[DOCS] [RACE DETECTOR] TODO: upstream fixes filed for the three genui…
mark14wu Jul 12, 2026
79da201
[EVAL] [RACE DETECTOR] extract shared case-capture main and captured-…
mark14wu Jul 13, 2026
a04a6e3
[EVAL] [RACE DETECTOR] flagattn corpus: FlagAttention, 28 captured la…
mark14wu Jul 13, 2026
40be31e
[DOCS] [RACE DETECTOR] TODO: FlagAttention corpus 3g landed, pid-affi…
mark14wu Jul 13, 2026
d290fc8
[EVAL] [RACE DETECTOR] flaggems corpus: FlagGems, 82 captured launches
mark14wu Jul 13, 2026
a364ebb
[DOCS] [RACE DETECTOR] TODO: FlagGems corpus 3h landed; lane-coupling…
mark14wu Jul 13, 2026
d468e4e
[DOCS] [RACE DETECTOR] sweep report: five real-code corpora, 722 rows…
mark14wu Jul 13, 2026
c848c2b
[FEAT] [RACE DETECTOR] torchao corpus: 67 rows over pytorch/ao's hand…
mark14wu Jul 13, 2026
04393d5
[FEAT] [RACE DETECTOR] tritonbench_meta corpus (41 rows) + fix exact-…
mark14wu Jul 13, 2026
cc456ba
[FEAT] [RACE DETECTOR] tilebench corpus: 56 rows over TileBench's Tri…
mark14wu Jul 16, 2026
e2a58d9
[FIX] [RACE DETECTOR] interp cumsum overrider: mirror tl.cumsum's own…
mark14wu Jul 16, 2026
1a84de6
[FEAT] [RACE DETECTOR] launch-scoped verdict tier: proved@T1-launch +…
mark14wu Jul 16, 2026
0a1887f
[FEAT] [RACE DETECTOR] CuTile IR reader: the cuda.tile front-end of t…
mark14wu Jul 16, 2026
3629ffa
[EVAL] [RACE DETECTOR] tilebench_cutile corpus: 61 rows over TileBenc…
mark14wu Jul 16, 2026
a4da494
[DOCS] [RACE DETECTOR] TODO 3n: content-fragile attribute for demoted…
mark14wu Jul 16, 2026
4e2af48
[FEAT] [RACE DETECTOR] content-fragile attribute: compose demoted wid…
mark14wu Jul 16, 2026
89e864b
[FEAT] [RACE DETECTOR] pre-exit representative events for awaits
mark14wu Jul 31, 2026
a6369be
[EVAL] [RACE DETECTOR] await litmus trio for the pre-exit representative
mark14wu Jul 31, 2026
04a08f9
[FIX] [RACE DETECTOR] value-model identity or/xor write-backs
mark14wu Aug 4, 2026
cd37439
[EVAL] [RACE DETECTOR] re-stamp the scorecard for the identity-poll rows
mark14wu Aug 4, 2026
6afb550
[FIX] [RACE DETECTOR] assert happens-before irreflexivity
mark14wu Aug 9, 2026
2d8da8b
[FIX] [RACE DETECTOR] symbolic mutual scope inclusion in the atomicit…
mark14wu Aug 9, 2026
9067179
[FIX] [RACE DETECTOR] coherence hb-consistency (co-hb)
mark14wu Aug 10, 2026
e4ee1f3
[FEAT] [RACE DETECTOR] value-causality constraint family (wf-vc, no o…
mark14wu Aug 10, 2026
32afc6f
[FEAT] [RACE DETECTOR] Feasibility query backing the race-freedom cer…
mark14wu Aug 11, 2026
7fa6d10
[FIX] [RACE DETECTOR] Require moral strength on every reads-through hop
mark14wu Aug 26, 2026
59e8492
[FIX] [RACE DETECTOR] Refuse unknown memory scopes instead of widening
mark14wu Aug 26, 2026
846ca81
[FEAT] [RACE DETECTOR] A2 gate: atomic-ordering barrier coverage over…
mark14wu Aug 27, 2026
bcaac7c
[FEAT] [EVALUATION] aiter_ops corpus: 113 captured aiter Triton launches
mark14wu Aug 28, 2026
60eac17
[FIX] [EVALUATION] Abort the dynamic track at the unsupported mark
mark14wu Aug 29, 2026
22bbbda
[PERF] [RACE DETECTOR] Requery only prior-SAT pairs at the launch rung
mark14wu Aug 30, 2026
581324b
[FEAT] [RACE DETECTOR] Enumeration fallback: decide Z3-unknown querie…
mark14wu Aug 30, 2026
8bdf709
[FEAT] [RACE DETECTOR] ENUM_MAX_CASES 1024 and the requery's launch c…
mark14wu Aug 30, 2026
fb91fc0
[DOCS] [RACE DETECTOR] TODO 3n: paper linkage done; the taxonomy pros…
mark14wu Aug 30, 2026
8d3ca5e
[DOCS] [RACE DETECTOR] Note the paper exposes no 'conditional' qualifier
mark14wu Sep 1, 2026
22fa8fb
[FIX] [RACE DETECTOR] CuTile reader: refuse tile_atomic_cas, know cud…
mark14wu Sep 4, 2026
453667e
[FEAT] [RACE DETECTOR] tritonracebench_cutile: cuda.tile twins of the…
mark14wu Sep 4, 2026
1850510
[FEAT] [RACE DETECTOR] Ladder switch (L0/L1/L2) and the L1 rung: conc…
mark14wu Sep 4, 2026
dd74f0e
[FEAT] [RACE DETECTOR] Multipath capture (Route 3, ladder L2)
mark14wu Sep 4, 2026
5480bad
[FIX] [RACE DETECTOR] Close scf regions printed with an attribute dict
mark14wu Sep 4, 2026
f65cd2d
[FEAT] [RACE DETECTOR] Keep the modelable conjunct of a mixed and-mas…
mark14wu Sep 4, 2026
413459a
[FIX] [RACE DETECTOR] Loop existence premises are local constraints a…
mark14wu Sep 4, 2026
fc9e1d3
[FIX] [RACE DETECTOR] Route 3 review fixes: runner CLI, mutation trac…
mark14wu Sep 4, 2026
2e25373
[FIX] [RACE DETECTOR] Distinct loop identity across sibling regions a…
mark14wu Sep 4, 2026
fec640a
[FIX] [RACE DETECTOR] L1 rung: cross-instance premise with memory tai…
mark14wu Sep 4, 2026
45c0cd6
[FIX] [RACE DETECTOR] L1 rung: projected-cost refuses only beyond twi…
mark14wu Sep 4, 2026
e6b9719
[FEAT] [RACE DETECTOR] Level-dependent per-row budget: 200 s at L1
mark14wu Sep 4, 2026
413f2f1
[FEAT] [EVAL] Corpus capture: value-snapshot every int/bool tensor vi…
mark14wu Sep 5, 2026
c7ecea1
[FIX] [RACE DETECTOR] L1 rung: linear premise check, analysis under t…
mark14wu Sep 5, 2026
f15ce7b
[FEAT] [RACE DETECTOR] L1 rung: enforce the in-bounds premise before …
mark14wu Sep 5, 2026
b6aba6a
[FEAT] [RACE DETECTOR] Share the in-bounds check with the C2/C3 repla…
mark14wu Sep 5, 2026
8b68cf4
[FEAT] [EVAL] Runner process reuse (--reuse-workers) and the L1 recor…
mark14wu Sep 5, 2026
58ebcd2
[DOCS] [RACE DETECTOR] TODO 3o: the L1 pinned rerun's measured time (…
mark14wu Sep 5, 2026
1aba359
[EVAL] Runner process reuse is DEBUGGING ONLY: --debug-reuse-workers,…
mark14wu Sep 5, 2026
f2bc712
[FEAT] [RACE DETECTOR] CuTile reader multipath mode (Route 3 at L2 fo…
mark14wu Sep 5, 2026
16fe5c9
[FIX] [RACE DETECTOR] CuTile reader: keep single-path if refusals byt…
mark14wu Sep 5, 2026
3d15942
[FIX] [RACE DETECTOR] CuTile reader multipath: review fixes
mark14wu Sep 5, 2026
09c1e27
[EVAL] Recapture all 8 Triton corpora with int/bool value snapshots
mark14wu Sep 5, 2026
831480d
[DOCS] [RACE DETECTOR] TODO 3o: tick the change-surface item (done 20…
mark14wu Sep 5, 2026
1cff2e5
[EVAL] The pinned-rerun driver (evaluation/pinned_run.py), rehearsed …
mark14wu Sep 5, 2026
490e73e
[FEAT] [RACE DETECTOR] Route 2: loaded values as snapshot Selects in …
mark14wu Sep 5, 2026
0eaee36
[FIX] [RACE DETECTOR] Route 2 review: domain premise, structural refu…
mark14wu Sep 5, 2026
c7d99d1
[FEAT] [RACE DETECTOR] Route 2: contents are the last concretization,…
mark14wu Sep 5, 2026
6102bdb
[DOCS] [RACE DETECTOR] Route 2 record: design, review, short change s…
mark14wu Sep 5, 2026
45ea559
[FIX] [RACE DETECTOR] Retag the lanes of a pointer tile through tt.ex…
mark14wu Sep 5, 2026
4473bf0
[EVAL] pinned_run: count Route 2's content-qualified proofs as their …
mark14wu Sep 5, 2026
24fff61
[EVAL] [RACE DETECTOR] Fence-order probes: Triton stale reads, PTX ba…
mark14wu Sep 5, 2026
c88df08
[FEAT] [RACE DETECTOR] Fence-ordered intra-instance semantics behind …
mark14wu Sep 5, 2026
d30e1d9
[FEAT] [RACE DETECTOR] Static track: gpu.barrier is a fence position …
mark14wu Sep 5, 2026
a06f9d6
[FEAT] [RACE DETECTOR] Dependency order (D2/D3): same-position value …
mark14wu Sep 5, 2026
69afa76
[FIX] [RACE DETECTOR] TTIR dependency provenance per source load
mark14wu Sep 5, 2026
20c9ef1
[FIX] [RACE DETECTOR] TTIR dependency provenance: libdevice and inlin…
mark14wu Sep 5, 2026
edd476e
[EVAL] [RACE DETECTOR] Benchmark: fence the synchronization kernels a…
mark14wu Sep 5, 2026
0c249ae
[EVAL] [RACE DETECTOR] Benchmark: the tile-level-fence pattern (stage…
mark14wu Sep 5, 2026
7cadcf3
[EVAL] [RACE DETECTOR] cuTile twin of the fenced re-read; fence order…
mark14wu Sep 5, 2026
e1b186e
[FIX] [RACE DETECTOR] CuTile reader: mark both parse modes' graphs as…
mark14wu Sep 5, 2026
ed0fe97
[FEAT] [RACE DETECTOR] Fence order ON by default (stage 5 flip); the …
mark14wu Sep 5, 2026
6c57160
[REFACTOR] [RACE DETECTOR] Compiled client: public analyze_graph entr…
mark14wu Sep 5, 2026
39998dc
[FEAT] [RACE DETECTOR] CuTile reader: the await abstraction (spin loo…
mark14wu Sep 5, 2026
9828f1e
[EVAL] [RACE DETECTOR] compare_runs: row-by-row dataset comparison wi…
mark14wu Sep 5, 2026
637f57f
[FEAT] [RACE DETECTOR] CuTile reader: tile_atomic_cas recorded like t…
mark14wu Sep 5, 2026
3eae359
[FEAT] Add cancellable fresh-process row execution
mark14wu Sep 6, 2026
9acff3a
[FEAT] Persist pinned attempts in a durable SQLite ledger
mark14wu Sep 6, 2026
b99e3a9
[PERF] Simplify snapshot lookups and constant-trip static loops
mark14wu Sep 6, 2026
8635506
[FEAT] Add reproducible checkpoint overhead rehearsals
mark14wu Sep 6, 2026
2dac419
[FIX] Recheck completion and deadline after pause callbacks
mark14wu Sep 6, 2026
3e6722e
[FEAT] Resume pinned experiments from durable row checkpoints
mark14wu Sep 6, 2026
7e3e046
[DOC] Expose checkpoint usage and coordinate timing rehearsals
mark14wu Sep 6, 2026
17e3743
[FIX] Validate checkpoint startup on the current detector branch
mark14wu Sep 6, 2026
bca0c8b
[FIX] Preserve operator interruption on whole-service termination
mark14wu Sep 6, 2026
baadf35
[TEST] Accept process disappearance during cleanup observation
mark14wu Sep 6, 2026
bbcc156
[PERF] Prove snapshot and mixed-radix conflicts with linear prechecks
mark14wu Sep 6, 2026
34a3e68
[MERGE] Integrate durable checkpoints with the current detector
mark14wu Sep 6, 2026
c378353
[PERF] Reuse conflict expressions and skip false HB paths
mark14wu Sep 6, 2026
30ab953
[DOC] Record selected FLA construction speedups and validation
mark14wu Sep 6, 2026
66c1a05
[FIX] Precheck linear accesses with shared snapshot premises
mark14wu Sep 6, 2026
995a1cc
[PERF] Scan shared snapshot features only when needed
mark14wu Sep 6, 2026
515466b
[DOCS] Record remaining L2 static slow-row optimization
mark14wu Sep 6, 2026
b52ce58
Reuse complete UNSAT queries and common solver constraints
mark14wu Sep 6, 2026
454d032
Record remaining timeout diagnostics and exact-query optimization res…
mark14wu Sep 6, 2026
ff160f1
[FIX] Honor fence and positional dependency order in concrete enumera…
mark14wu Sep 6, 2026
344df49
[PERF] Fold plain conflict formulas and enforce dynamic deadlines
mark14wu Sep 7, 2026
f8d7025
[FEAT] Model captured allocation bounds for strided tensors
mark14wu Sep 7, 2026
7342c95
[FIX] Reject logical snapshots for strided tensor views
mark14wu Sep 7, 2026
a97ea2f
[FIX] Interrupt native Z3 checks at the dynamic deadline
mark14wu Sep 7, 2026
9e28027
[FEAT] Model captured allocation bounds for strided tensors
mark14wu Sep 7, 2026
5921ffb
[FIX] Reject logical snapshots for strided tensor views
mark14wu Sep 7, 2026
7517393
[PERF] Reuse enumeration metadata and address ordering
mark14wu Sep 7, 2026
6d55a9f
[FIX] Restore watchdog state when thread startup fails
mark14wu Sep 7, 2026
220eb76
[PERF] Reuse enumeration metadata and address ordering
mark14wu Sep 7, 2026
ad3783f
[PERF] Simplify signed address arithmetic from structural domains
mark14wu Sep 7, 2026
6f3e9db
[PERF] Simplify signed address arithmetic from structural domains
mark14wu Sep 7, 2026
490250d
[FIX] Require faithful tensor storage for replay snapshots
mark14wu Sep 7, 2026
4de5b8e
[DOC] Preserve the exact source commits used in L2 diagnostics
mark14wu Sep 7, 2026
31c48f5
[DOC] Record selected L2 optimization results and remaining bottlenecks
mark14wu Sep 7, 2026
4707631
[FEAT] Explain missing source fences in global race reports
mark14wu Sep 7, 2026
35b869d
[FEAT] Respect guarded cuTile token order in the shared solver
mark14wu Sep 7, 2026
a841a4a
Capture cuTile token ancestry and verify loop ordering
mark14wu Sep 7, 2026
6e1d3eb
[FEAT] Enable cuTile token order across compiled analysis
mark14wu Sep 7, 2026
f133ec8
[DOC] Record cuTile token-order validation and coverage boundary
mark14wu Sep 7, 2026
c812712
[FIX] Cancel dynamic deadlines outside native finalizers
mark14wu Sep 7, 2026
66d0dba
[FIX] Avoid retaining cancelled interpreter frames
mark14wu Sep 7, 2026
234a8fe
[FIX] Preserve frontend dependencies, lane coordinates and loop fence…
mark14wu Sep 7, 2026
e6358a2
[FIX] Preserve the positional dependency of dot accumulators
mark14wu Sep 7, 2026
52bf83d
[TEST] Validate frontend repairs with repository hooks and concrete m…
mark14wu Sep 7, 2026
e1b37bf
[FEAT] Defer unordered cuTile loop conflict pairs to allocation checks
mark14wu Sep 7, 2026
1c95d24
Test conflict-aware cuTile loop boundaries with actual aliases
mark14wu Sep 7, 2026
79034e0
[FIX] Integrate positional provenance and frontend ordering corrections
mark14wu Sep 7, 2026
030494c
[FIX] Discharge unordered cuTile loop pairs with verified allocation …
mark14wu Sep 7, 2026
ddc4735
[DOC] Record restored cuTile loop-stride coverage and verified receipts
mark14wu Sep 7, 2026
e48d00b
Merge branch 'race-detector-z3-demo' of github.com:Deep-Learning-Prof…
mark14wu Sep 7, 2026
b10b8f8
[FIX] Isolate dynamic analysis behind a parent process deadline
mark14wu Sep 7, 2026
ca7445a
Merge branch 'race-detector-z3-demo' of github.com:Deep-Learning-Prof…
mark14wu Sep 7, 2026
2e970f8
[FIX] Resolve callee access locations through MLIR callsite aliases
mark14wu Sep 7, 2026
f40920a
[TEST] Close frontend conformance diagnostics with source-matched con…
mark14wu Sep 7, 2026
b4c606b
[FIX] Integrate isolated dynamic deadlines with frontend conformance …
mark14wu Sep 7, 2026
7b8393e
[TEST] Add READY-only dynamic transport admission helper
mark14wu Sep 7, 2026
465b31d
[PERF] Stop L2 frontend execution after a static decision
mark14wu Sep 7, 2026
c3dd382
[DOC] Record verified process deadline and accounting boundaries
mark14wu Sep 7, 2026
9fee74c
[TEST] Cover demand-driven L2 frontend execution
mark14wu Sep 7, 2026
8f4d6ad
[FIX] Fingerprint actual global reads in transported kernels
mark14wu Sep 7, 2026
6976616
[DOC] Document on-demand L2 execution and comparison mode
mark14wu Sep 7, 2026
4d093f9
[FIX] Preserve frontend execution policy in evaluation provenance
mark14wu Sep 7, 2026
55adc88
[FIX] Require both select arms for positional dependencies
mark14wu Sep 7, 2026
e5d917d
[TEST] Record integrated L2 execution-policy validation
mark14wu Sep 7, 2026
5c4622f
[FIX] Preserve subprocess failure handling with on-demand L2 execution
mark14wu Sep 7, 2026
37704ff
[DOC] Record completed conformance repairs and integrated validation
mark14wu Sep 7, 2026
a1f82f6
[FIX] Refuse enumeration when tensor storage cloning fails
mark14wu Sep 7, 2026
c169b5b
[FIX] Rebuild conflict prechecks for mutable premises
mark14wu Sep 7, 2026
40560be
[FIX] Verify live kernel dependencies before subprocess execution
mark14wu Sep 7, 2026
614644c
[FIX] Integrate three performance-audit correctness repairs
mark14wu Sep 7, 2026
0a3497d
[PERF] Fold variable divisors using certified original query guards
mark14wu Sep 7, 2026
9127562
Simplify complete PID cases before bounded solver enumeration
mark14wu Sep 7, 2026
f0fbb3a
[PERF] Normalize isolated array reads with exact witness lifting
mark14wu Sep 7, 2026
3a32c8b
[PERF] Certify guarded snapshot range and injectivity lemmas
mark14wu Sep 7, 2026
7e529f1
[PERF] Integrate scope-preserving array and snapshot simplification
mark14wu Sep 7, 2026
6eb774a
[PERF] Use alternate arithmetic solving after exact array elimination
mark14wu Sep 7, 2026
1f529e9
[PERF] Keep unstable array strategy experimental after complete-run v…
mark14wu Sep 7, 2026
70a9373
Cache guarded-divisor applicability on shared expression DAGs
mark14wu Sep 8, 2026
52688c1
Cache snapshot lemma premises and certificates per solver
mark14wu Sep 8, 2026
fd1af8a
[PERF] Reuse solver-local query scan caches in production
mark14wu Sep 8, 2026
f5a8466
[PERF] Avoid descendant scans for literal snapshot cells
mark14wu Sep 8, 2026
12fe429
[PERF] Defer snapshot lemmas until pure Select prechecks need them
mark14wu Sep 8, 2026
eaf41f6
[PERF] Reuse bound TTIR graphs for evaluation gate metadata
mark14wu Sep 8, 2026
a8d8fd5
[PERF] Reuse precheck normalization and bypass known false queries
mark14wu Sep 8, 2026
de9d386
[PERF] Limit snapshot extraction to relevant asserted tables
mark14wu Sep 8, 2026
84b80c7
[PERF] Integrate structural L2 analysis shortcuts
mark14wu Sep 8, 2026
a0ebfa4
[FIX] Admit trusted Triton root helpers in dynamic transport
mark14wu Sep 8, 2026
cf099aa
Add seven distinct race-free benchmark repair variants
mark14wu Sep 8, 2026
f052809
[FIX] Retry bounded counter analysis at the actual launch extent
mark14wu Sep 9, 2026
2790bb4
[FIX] Model ordinary integer CAS in the compiled race frontend
mark14wu Sep 9, 2026
228c2db
Fix await causality without conflating execution premises
mark14wu Sep 9, 2026
0e952d9
Freeze the pinned roster at 1249 rows after the seven repair variants
mark14wu Sep 9, 2026
73e0f7b
Avoid duplicate tensor identity hashing and byte copies
mark14wu Sep 9, 2026
5ce2574
Integrate session-owned dynamic preloading into resumable runs
mark14wu Sep 9, 2026
8b06b1d
Add cuTile twins for the seven race-free repair rows
mark14wu Sep 10, 2026
a21aba7
Lower integer bitwise addressing exactly in the CuTile reader
mark14wu Sep 10, 2026
109af90
Lift the counted while-form loop in the CuTile reader
mark14wu Sep 10, 2026
f35eed8
Give the CuTile track Route 2: loaded values as snapshot Selects
mark14wu Sep 10, 2026
62c6d7c
Extend the cuTile real-operator corpus to 68 configurations
mark14wu Sep 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -172,3 +172,7 @@ benchmarks/*.json
triton_viz/version.py
.subagents/
subagent*.txt
evaluation/results/
# int/bool value-snapshot sidecars of the captured corpora (content-addressed,
# hashes live in the specs JSON; regenerate with the capture drivers)
evaluation/kernels/*_values.npz
10 changes: 8 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
#
# See https://github.com/pre-commit/pre-commit

# extern content
exclude: extern
# extern content + vendored corpora (byte-identical to upstream)
exclude: (extern|evaluation/kernels/tritonbench_g_v1/)

repos:

Expand Down Expand Up @@ -60,6 +60,9 @@ repos:
rev: "v4.5.0"
hooks:
- id: check-added-large-files
# captured-launch spec JSONs (evaluation/kernels/*_specs.json) carry
# exact int/bool value snapshots and legitimately exceed 500 KB
args: ["--maxkb=1500"]
- id: check-case-conflict
- id: check-docstring-first
- id: check-merge-conflict
Expand Down Expand Up @@ -117,6 +120,9 @@ repos:
rev: "v2.2.6"
hooks:
- id: codespell
# machine-generated capture payloads (embedded IR text carries SSA
# names codespell misreads as typos)
exclude: ^evaluation/kernels/.*_specs\.json$

# Check for common shell mistakes
- repo: https://github.com/shellcheck-py/shellcheck-py
Expand Down
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,13 @@ Triton-Viz uses a small set of environment variables to configure runtime behavi
- `PROFILER_ENABLE_LOAD_STORE_SKIPPING` (default: `1`): skip redundant load/store checks to reduce profiling overhead.
- `PROFILER_ENABLE_BLOCK_SAMPLING` (default: `1`): sample a subset of blocks to reduce profiling overhead.
- `PROFILER_DISABLE_BUFFER_LOAD_CHECK` (default: `0`): disable buffer load checks in the profiler.
- `TRITON_VIZ_EVAL_ALL_FRONTENDS` (default: `0`): set to `1` to run both symbolic frontends in L2 evaluation for coverage comparisons. By default, L2 runs the interpreter only after static abstention, then concrete enumeration only if both symbolic frontends abstain. L0/L1 keep their existing behavior. See [L2 frontend execution](evaluation/L2_FRONTEND_POLICY.md) for timing and provenance rules.

Evaluation experiments can use [durable pinned reruns](evaluation/PINNED_RESUME.md)
to save each row and resume after interruption. The optional
`TRITON_VIZ_PINNED_STATE_DIR` selects an isolated host-lock directory for
rehearsals and tests; formal runs reject this override and use the canonical
host registry described in that guide.

## More Puzzles

Expand Down Expand Up @@ -227,3 +234,8 @@ If you find this repo useful for your research, please cite our paper:
}
```
<p align="right">(<a href="#readme-top">back to top</a>)</p>


### Resumable evaluation with dynamic preloading

The checkout evaluation driver supports a session-owned clean preloader while retaining fresh row and analysis processes. Use `--dynamic-launcher preload` explicitly; `--prepare-only` freezes a run without starting it. See [the lifecycle, environment and timing protocol](evaluation/DYNAMIC_PRELOAD.md). The frozen environment includes `FLAGGEMS_SOURCE_DIR`, `TRITON_INTERPRET`, `TRITON_CACHE_DIR` and `TORCHINDUCTOR_CACHE_DIR`; kernel/source checks are unchanged.
1,483 changes: 1,483 additions & 0 deletions TODO.md

Large diffs are not rendered by default.

414 changes: 414 additions & 0 deletions address_position_lifting_spec.md

Large diffs are not rendered by default.

92 changes: 92 additions & 0 deletions evaluation/CHANGE_SURFACE_L1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Change-surface run at L1: the 492 pinned-abstain real-code rows

Date 2026-09-04. Detector commit 5ba8b6a (branch `route1-concrete-enumeration`), ladder level L1, per-row budget 200 s, jobs=1, seed 0; triton 3.6.0, torch 2.10.0+cu128, z3 4.15.3. Dataset: `evaluation/results/change_surface_L1.jsonl` (gitignored; header stamps level, budget and commit). Rows: every real-code row the pinned L0 run (`PINNED_fb91fc0.jsonl`) left as `abstain` (492 of 1062; the 6 timeouts and 5 capture failures are outside the L1 rung's reach and were not rerun).

This is the change-surface diff the design (paper repo `design-route1-concrete-enumeration.md`, section 7 step 4) requires before any paper use of L1: it says what the rung decides, what it refuses and why, and where the remaining abstentions come from. It is NOT a pinned rerun: L0-decided rows were not rerun here (the selective-pricing check is the pinned rerun's job).

## Headline

| outcome | rows | share of 1062 |
|---|---|---|
| proved@enum | 391 | 36.8% |
| race@enum | 16 | 1.5% |
| proved@T1 (decided by commits since the pin, not by the rung) | 1 | |
| still undecided | 84 | 7.9% (was 492 = 46.3%) |

The rung decides 407 of the 492 (82.7%). Every decision is at the analyzed-launch extent with `content_fragile=True`: these scalar arguments, this grid, THESE tensor contents.

## Residual by refusal kind (84 rows)

| kind | rows | what it is |
|---|---|---|
| interpreter-error | 29 | the Triton interpreter itself cannot run the kernel (reproduced with the plain C2 replay recorder, no taint patches): 9 `'int' object has no attribute 'to'`, 7 `_semantic` helper-call failures, 2 tuple-unpack, 2 `None` to tensor, 2 `float + None`, 7 singletons (inline asm, `tl.assume` on rebuilt inputs, ...) |
| cutile-no-interpreter | 23 | cuda.tile rows: no interpreter exists, the rung cannot run (the design's fixed floor) |
| row-crash | 12 | the harness subprocess died without writing a row (see the crash section) |
| atomic-return | 7 | an atomic return value reaches a host branch (5: masked_scatter/masked_select part-sum, mm_streamk first_wave, spinning_lock_reduction, la_persistent_paged) or a footprint position through memory (2: nll_loss fwd/bwd): footprints are not per-instance determined |
| projected-cost | 6 | 10240-instance chunked/paged prefill kernels at 96 to 111 ms per instance (projected 17 to 19 min) and two 8192-instance template-attention kernels at 302 to 306 ms (projected 41 min); refused 5 s in |
| instance-ceiling | 4 | 131072 to 2031616 instances, over ENUM_MAX_INSTANCES = 65536; refused before executing |
| row-timeout | 3 | the whole subprocess exceeded 200 s (rope_fwd_3d, gdn2 fused_recurrent, iplr fused_recurrent bwd; see the crash section) |

Residual by corpus: fla 17, tritonbench_meta 11, tritonbench_g 11, aiter_ops 10, flaggems 10, tilebench_cutile 23 (all cuTile), torchao 1, tilebench 1, liger 1; flagattn and tutorials 0.

## By the pinned static-refusal family

| static family (pinned) | rows | proved@enum | race@enum | residual |
|---|---|---|---|---|
| indirect-address | 229 | 189 | 8 | 32 |
| control-flow | 84 | 68 | 1 | 15 |
| other | 76 | 62 | 6 | 8 |
| nested-loop | 51 | 32 | 0 | 19 |
| data-dependent-bound | 40 | 34 | 1 | 5 |
| spin-shape | 9 | 5 | 0 | 4 |
| solver | 3 | 1 | 0 | 2 |

## Per corpus

| corpus | rows | proved@enum | race@enum | residual |
|---|---|---|---|---|
| fla | 226 | 206 | 3 | 17 |
| aiter_ops | 62 | 52 | 0 | 10 |
| tritonbench_g | 56 | 37 | 8 | 11 |
| flaggems | 36 | 23 | 3 | 10 |
| torchao | 36 | 34 | 1 | 1 |
| tilebench_cutile | 23 | 0 | 0 | 23 |
| tritonbench_meta | 20 | 9 | 0 | 11 |
| flagattn | 17 | 17 | 0 | 0 |
| tilebench | 11 | 9 | 1 | 1 |
| liger | 4 | 3 | 0 | 1 |
| tutorials | 1 | 1 | 0 | 0 |

## Cost

- enum run time over the 453 rows that executed: median 0.17 s, p90 3.7 s, p95 11.7 s, max 185.9 s.
- per-instance interpreter time: median 10.5 ms, p90 90 ms, max 880 ms (not constant across instances: data-dependent trip counts, pid branches, triangular workloads).
- row wall time (compile + both symbolic tracks + the rung): median 3.6 s, p95 63.1 s, max 200.2 s; the whole run took 1.42 h at jobs=1. Before the projected-cost refusal the first 52-row stretch averaged 22.6 s per row (five rows burning the full budget); with it, 10.1 s.

## The 16 race@enum rows: triage

None of these is a new finding; the Leads-30 counting discipline holds (none counted). Grouped by what the witness actually says about the CAPTURED contents:

1. Capture-rebuild artifacts (11): the captured launch rebuilds tensors above the 8192-element value-snapshot cap from their descriptors (`randint` for integer tensors), so index tensors carry contents the real call never passes. destindex_copy, destindex_copy_kv1, destindex_copy_kv2, quantize_kv_transform (randint destinations with replacement: the Leads-30 reading, same as casebook A6); kv_cache_filling fwd/quant (all-zero captured BlockOffsets: two instances fill one block); context_attn_llama (B_Start_Loc rebuilt all-zero: every batch row writes Out[0]); moe_jagged_rowwise (randint jagged offsets: duplicate lanes in one store); masked_select write_back (`part_sums` is a 9-element value snapshot of the REAL mask's prefix sums while the 32768-element mask itself is rebuilt at random, so block 2 writes [4123, 6159) and block 3 starts at 6128: a 31-row overlap the real inputs cannot produce); radix_sort (`global_ones` = 499384 is a snapshot, the rebuilt input has 499185 zeros: the zero/one partitions overlap); unique_large (the `idx` tensor is rebuilt as random int64 in the range 4e6 to 3.9e10 and used as addresses). These rows say: the rung reads contents, so it is the first rung to expose capture fidelity; the fix is in the corpus capture (snapshot the index tensors or rebuild them with the real semantics, e.g. `randperm`), not in the rung.
2. Out-of-bounds-induced (2, the casebook A8 class, excluded by the paper's in-bounds premise): iplr fused_recurrent_varlen bwd (the known A8 shape: instance (0,2,0) indexes past the 8192-element state into the neighbouring allocation); chunk_gla_fwd A intra_sub_intra_merge (A captured with 4096 elements while the kernel indexes it as NK x n_bh x T x BC = 32768: the reads run into the adjacent clone).
3. Model races with a benign effect, worth a casebook note (3): unique_dup simple_unique_flat (line 45 `tl.store(data_out + cumsum, a, mask)`: duplicate sorted values share a cumsum slot, so two lanes of ONE store write the same address with the SAME value; the model's duplicate-position query reports it, the A1 shape); ttt layer_norm_bwd chunk / fused_chunk (line 439: each program owns BS = 2 rows but stores a BT = 32-row `dx` tile, so neighbouring programs overwrite 30 shared rows with identical values; the captured constexprs are the real launch's). Both were among the Leads-30 candidates the external tools also flagged.

The design's section 7.3 expectation that the three permutation-scatter Leads-30 rows come out proved@enum did NOT hold (masked_select and radix_sort are race@enum, nonzero crashed): the rung is right about the rebuilt contents, which are internally inconsistent; the expectation assumed the captured inputs were the real permutation.

## Drift against the first stretch

The first 52 rows (aiter_ops) were also run under the pre-fix semantics (spin pre-gate on the reader's `spin-shape` kind, same-instance writes counted against the premise, no projected-cost refusal, 150 s cap). 44 rows unchanged; 7 abstentions became proved@enum (2 mis-gated carried-value `scf.while` rows, 4 same-instance in-place updates, 1 budget-edge row); 1 row went the other way, rope_fwd_3d (11840 instances at 6.8 ms, 81.9 s in the first stretch) hit the 200 s row budget in the full run: a budget-edge row whose wall time depends on machine load (see the crash section).

## Crashes and timeouts

All 15 rows were re-run through the harness at L0 and at L1 with signal capture (`repro_crash.py`, 2026-09-04).

**row-crash (12): deterministic, all inside the L1 rung, the out-of-bounds class.** Every one of the 12 abstains cleanly at L0 in about 3 s and dies at L1 within 3 to 7 s: 8 with SIGSEGV, 4 with SIGABRT from glibc's heap checks (`corrupted size vs. prev_size`, `free(): invalid size`). The rung executes the kernel's memory operations on raw host pointers, so an out-of-bounds store on the rebuilt inputs corrupts the process heap; the plain C2 replay recorder would do the same. Two rows produced output before dying (nonzero emitted `race@enum` and then aborted at teardown; chunk_gla_fwd split raised a nonsensical AttributeError on the recorder object, the signature of a corrupted heap), so a verdict from a kernel that writes out of bounds is not trustworthy even when the process survives. The subprocess isolation contained every crash (no other row was affected), but the paper's in-bounds premise, which the symbolic frontends enforce by fail-stop, is NOT enforced by the rung today. Recommended fix (a semantic change, not landed): check every access's active-lane address range against the cloned tensors' spans in the before-callback and refuse by name (`out-of-bounds`) before the interpreter dereferences; that turns the 12 crashes into named abstentions and also converts the two OOB-induced `race@enum` rows (iplr varlen bwd, chunk_gla merge) into honest refusals. The affected rows: fla iplr fused_recurrent_varlen fwd (the A8 fwd twin), flaggems cross_entropy_loss bwd x2 and nonzero, tritonbench_g chunk_gla_fwd split, fused_rotary_embedding (the Leads-30 row whose OOB claim was "refuted on verify"; it corrupts the heap here), rotary_emb_nopad v2, softmax_reducev, token_attn llama2 / mistral / reduceV, tritonbench_meta grouped_gemm.

**row-timeout (3).** Two are not the rung's cost: fla gdn2 fused_recurrent and iplr fused_recurrent bwd sit on the dynamic track's 60 s watchdog already at L0 (pinned wall 64 s, `dynamic.status = timeout`); in reproduction the L0 row itself ran to the 200 s budget (the SIGALRM watchdog did not interrupt the interpreter), while at L1 both rows decided `proved@enum` in 66 to 67 s with the rung taking 2 to 3 s (8 and 4 instances). They are budget-edge rows of the SYMBOLIC tracks under load. The third, aiter_ops rope_fwd_3d (11840 instances at 6.8 ms, decided in 81.9 s in the first stretch), exceeded 200 s in the full run and 260 s in reproduction: a regression of the memory-taint patch, not of the rung's execution. Diagnosis (standalone, 60 s watchdog): the run phase is unchanged at 6.86 ms per instance (8553 of 11840 in 60 s); the premise check had become quadratic (a full scan of the interval buffer per value-source load, 35520 of them over the 106560 operations' intervals), and it ran OUTSIDE the watchdog, so the row blew its budget instead of refusing by name. Fixed (bisection over the op-sorted buffer; the analysis phase now runs under the remaining budget): the row decides `proved@enum` through the harness in 157 s (84.7 s execution, 68.3 s analysis). The remaining 68 s is the cross-instance sweep over 97,593,600 per-lane intervals: the kernel's accesses are strided, so no lanes coalesce (916 intervals per operation, 2.3 GB of interval columns). That is the rung's real scalability limit for strided kernels on large grids (a 65536-instance row of this shape would need about 12 GB) and is recorded as an open item: represent an operation's footprint as a bounding box plus a uniform-stride run and sweep boxes, materializing lanes only where boxes of distinct instances overlap.

## Addendum 2026-09-05: the in-bounds premise enforced in the rung

Hao's decision after the crash analysis above: the rung now checks every access's active lanes against the tensor arguments' storages (the cloned allocations) BEFORE the interpreter dereferences, and refuses by name (`out-of-bounds`, naming the access, the instance and the offending byte). Masked-off lanes may point anywhere. Measured cost: about 4 microseconds per access (a min/max over the lanes and one bisection), one to four percent of the rung's end-to-end time.

The 14 affected rows re-run through the harness at L1 (same commit lineage, 200 s budget): all 12 former crashes and both out-of-bounds `race@enum` rows (iplr fused_recurrent_varlen bwd, chunk_gla_fwd A intra_sub_intra_merge) now end as `out-of-bounds` refusals in 2.6 to 6.5 s, exit code 0, no signal. Cross-validation on the 51 interpreter-decided benchmark rows is unchanged (35 agree, 16 disqualified by name, 0 disagree). Restated headline for the 492 rows under the enforced premise: 391 proved@enum, 14 race@enum, 1 proved@T1, 86 residual (8.1% of 1062), of which 14 `out-of-bounds`, 29 interpreter-error, 23 cuTile, 7 atomic-return, 6 projected-cost, 4 instance-ceiling, 3 row-timeout (rope_fwd_3d now decides, see the timeout section; the two fused_recurrent rows remain symbolic-track budget-edge rows). The 14 race@enum rows: 11 capture-rebuild artifacts and 3 benign-effect model races; none counted.
Loading
Loading