Skip to content

v0.1.1 — SSA Pipeline Stabilization + 79.2 TFLOPS GEMM

Latest

Choose a tag to compare

@GeisYaO GeisYaO released this 30 Mar 02:53

🚀 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=48 disabled (non-power-of-2 cooperative load bug, assert-protected)
  • 128×128 k64 disabled (64KB LDS at CU limit causes occupancy hang)

Full Changelog: v0.1.0...v0.1.1