🚀 T0-GPU v0.1.1 — SSA Pipeline Stabilization + 79.2 TFLOPS GEMM
A major milestone: the T0 compiler's SSA pipeline is now stable and producing 79.2 TFLOPS bf16 GEMM on RX 7900 XTX — on par with Triton on AMD, with zero external dependencies.
⚡ Performance
| Config | VGPRs | 4096³ TFLOPS | Status |
|---|---|---|---|
| 128×128 k32 | 239 | 79.2 | ✅ Primary |
| 128×64 k32 | 175 | 79.1 | ✅ |
| 128×128 k16 | 207 | 56.8 | ✅ |
| 128×64 k64 | 223 | 70.3 | ✅ |
🏗️ T0 Compiler (34 modules, ~38K LOC)
- SSA Pipeline: BlockDSL → SSA IR → 6-pass optimization (DCE, CSE, LICM, CopyProp, AlgSimp, Waitcnt) → SSA RegAlloc
- TileIR GEMM: Cooperative load + LDS double-buffer + K-loop pipeline + graduated LDS waits
- Gap Reclaim: Alignment-gap VGPR recovery, saving ~15 VGPRs (254 → 239 for k32, 64 spills → 0 for k64)
- Diagnostics: ISA verifier, GPU printf, HW probe (40+ instruction latencies), K-loop pipeline simulator
🔧 9 Critical Bug Fixes
- LICM dead code after terminator → GPU page fault
- CSE: 5 root causes (barrier-aware, inline constant key, sentinel MVal, VReg remap)
- DCE: loop-carried dependency preservation (backward branch detection)
- RegAlloc: max_vgprs 128→255, MVal interval merging
- KFD VA race: BufferPool LRU cache (zero-syscall buffer reuse)
- k48 hang: non-power-of-2 cooperative load address decomposition (assert added)
🛡️ KFD Runtime Hardening
- SIGPIPE defense (prevents queue leak on pipe close)
- KFD open 5× retry (covers MODE1 reset recovery window)
- GPU health probe (GTT write/readback verification)
- BufferPool LRU (eliminates VA remapping race)
📖 Documentation
- T0_技术手册.md: 1000+ line comprehensive technical manual
- 18 experiment records: Root cause analysis, performance optimization, correctness verification
- Tech blog: 从零到 79 TFLOPS
📊 Comparison
| Engine | 4096³ bf16 GEMM | Dependencies | Dispatch Latency |
|---|---|---|---|
| T0 | 79.2 TF | Rust only | 2.26 μs |
| Triton | ~80 TF | Python+LLVM+ROCm | ~20 μs |
| rocBLAS | ~105 TF | ROCm (WGP mode) | ~20 μs |
⚠️ Known Limitations
- WGP mode triggers CWSR page fault on RX 7900 XTX (Linux 6.17) — CU mode only for now
tile_k=48disabled (non-power-of-2 cooperative load bug, assert-protected)128×128 k64disabled (64KB LDS at CU limit causes occupancy hang)
Full Changelog: v0.1.0...v0.1.1