Booth
community★ featuredAn open-source CUDA, HIP, and Triton compiler with no LLVM anywhere in the path. Takes the same sources you would hand to nvcc, ROCm, or Triton's JIT and emits AMD RDNA 2/3/4 binaries, NVIDIA PTX, Tenstorrent Metalium C++, native RV32IM, or plain x86-64 — so a Triton matmul can run on a laptop that has never seen a GPU. Also reads a deliberate subset of MLIR (`func.func` plus the `arith` dialect) and Fortran `do concurrent` kernels via LFortran. Formerly BarraCUDA; renamed to honour Kathleen Booth.
Links
📦
Repo
📋 Changelog
Booth — Changelog ================= ## Booth 0.6.1 ### Backends - `--nvidia-cubin` puts every kernel of a module into the one cubin, so ggml-cuda files with several kernels no longer stop at E600 (Zane Hambly, 2026-10-26) - `--nvidia-cubin` lowers local loads and stores, half and bfloat16 conversions, rounding, votes, membar, nanosleep, 16-bit parameters and constant divisors, and sizes each kernel's registers from its own counts (Zane Hambly, 2026-10-26) - `--nvidia-cubin` holds a register only where its value is live, places join barriers by the blocks a region covers, and lowers wmma load, store and mma to scalar SASS, so topk-moe and lightning-indexer build (Zane Hambly, 2026-10-26) - `--nvidia-cubin` lowers cvta.local and cvta.global, so cumsum and quantize get as far as their vprintf call (Zane Hambly, 2026-10-26) - `--nvidia-cubin` spills values to the local frame when a kernel needs more registers than SASS has, so mmvq gets past E603 (Zane Hambly, 2026-10-26) - `--cuda-host` and `--cuda-exe` emit the host half of a CUDA compile, so kath builds a whole program the way nvcc does: the source back out with the device definitions removed, each launch through `__cudaPushCallConfiguration` and a stub calling `cudaLaunchKernel`, the kernels registered from a constructor out of a fatbin carrying both the cubin and the PTX, and the system C++ compiler driven to link it. Clean-room `cuda.h`, `cuda_runtime.h`, `cuda_fp16.h`, `cuda_bf16.h` and `cublas_v2.h` under `runtime/include` (Zane Hambly, 2026-10-26) - `--cuda-host` writes each kernel's stub where the kernel stood and keys a launch on the instantiation rather than its position, so a kernel launched from inside a host template or through a macro reaches the right one, and it spells enum, struct, vector and function template arguments, so ggml-cuda files get through the host pass (Zane Hambly, 2026-10-26) - `--cuda-host` writes out a variadic template argument pack, spells a function template-id argument rather than the symbol it lowered to, keeps a launch whose callee ends in `>>`, registers up to 4096 kernels and refuses with E622 above that instead of falling silent, and `kath cuda` finds Booth's own `runtime/include` from the binary rather than the working directory, so binbcast and cpy get through (Zane Hambly, 2026-10-26) - `--cuda-host` carries const on the BIR type itself, so a kernel taking `const float *` registers the instantiation its launch actually names rather than one spelled without the qualifier (Zane Hambly, 2026-10-26) - `kath cuda -c` compiles one `.cu` to one relocatable object rather than a whole program, with `-fPIC` for a shared library, each object carrying its own fatbin and registration constructor the way nvcc does, so many translation units link into one library (Zane Hambly, 2026-10-26) - `kath cuda` takes `-Idir` written up against the flag as well as `-I dir`, rather than dropping it and c
Works on
blackhole