Skip to content

v0.1.12

Latest

Choose a tag to compare

@LeiWang1999 LeiWang1999 released this 08 Jul 03:02
2d63708

TileLang v0.1.11 → v0.1.12 Changes

Summary of the main changes between v0.1.11 and v0.1.12 (91 commits).

New Features

  • LLVM backend support (#2409), with follow-up fixes for auto backend resolution (#2519) and module export (#2467)
  • Tile scheduler introduced (#2441)
  • Backend registry architecture: host and device CodeGen are now dispatched through a backend registry (#2442, #2446), target detection/normalization is registration-based, and ExecutionBackend was merged into the backend module (#2323); kernel launch is materialized per backend (#2387)
  • Developer tooling: pass_visualizer structure-tree pass browser (#2449) and pass-diff display for debugging (#2375)
  • New CUDA intrinsics exposed (#2473), st.bulk shared-memory zero fill on SM100+ (#2403), stmatrix m16n8 on Blackwell (#2417), SM75 MMA dispatchers for FP16 accumulation and UINT8 (#2392)

CUDA / Codegen Improvements

  • Optimized fp8↔half/bf16 casts: vectorized and scalar cast codegen (#2511, #2475), plus a fix for vectorized fp16↔bf16 cast compilation (#2407)
  • TMA lowering for arbitrary/swizzled SMEM layouts (#2380) and GMMA/UMMA lowering for sliced (arbitrary-layout) SMEM (#2452)
  • Reduced CUDA template include overhead (#2474), swizzled TMA buffer alignment (#2391), RNG state kept in kernel scope (#2540)
  • Warp-specialization fixes: register over-subscription (#2406), register reallocation for 1P1C (#2440)

JIT / Caching / Build

  • Cross-host CUDA binary cache (#2459); compile options now included in the cache key (#2532)
  • PyTorch extensions and perf wheels are cached (#2509); frontend disk cache removed (#2363); lazy kernel lookup caching improved (#2357)
  • JIT diagnostics and configurable NVCC timeout (#2350), -ccbin support for choosing the C++ compiler (#2348), TILELANG_VERBOSE env var to control compile output (#2453)

Notable Bug Fixes

  • Pipeline: fixed physical async wait counts (#2505) and simplified async copy lowering (#2444)
  • Layout/Transform: divide-by-zero in LayoutInference on non-power-of-two broadcast (#2469), avoided thread-indexed replicated fragment readback (#2514), kept all-rep reducers from scalarizing vector plans (#2507), reducer workspace only allocated for cross-warp AllReduce (#2494)
  • Correctness: T.Persistent dropping tiles when the last dim isn't a multiple of group_size (#2455), sign-extension bugs in packed uint32 decode (#2500) and make_int negative int8 lanes (#2438), PTX v4 atomics for fp16/bf16 atomic_addx4 (#2492), vectorized atomic_add dtype mismatch (#2414), bf16 exp self-recursion (#2402) and rsqrt overload (#2386)
  • DeepSeek V3.2 topk threshold on exact-boundary inputs (#2513); flash attention bwd varlen NaN fix (#2461); SM100 CLC GEMM schedule-state lifetime (#2423)
  • Autotuning benchmarking stabilized across devices (#2370); do_bench gained a cache_size option (#2531)

Other

  • T.view / T.reshape enhancements (#2450), better T.assume/loop-bound handling to eliminate redundant boundary checks (#2502), improved diagnostics for T.serial fragment access (#2462)
  • C++ style guide added and API naming/namespace normalization across the C++ codebase (#2430, #2434–2436)
  • Auto target arch now detected from the current device instead of device 0 (#2517)

Overall

This release centers on the new LLVM backend and backend-registry refactor, major TMA/GMMA layout flexibility on CUDA, fp8/fp16/bf16 cast performance, and a large batch of correctness fixes across layout inference, atomics, and pipelining.

What's Changed

New Contributors

Full Changelog: v0.1.11...v0.1.12