ThunderKittens: Simple, Fast, and Adorable AI Kernels

Benjamin F. Spector, Simran Arora, Aaryan Singhal, Daniel Y. Fu, Christopher Ré
10/27/2024
cs.LGcs.AI

No official code found. Best implementation: HazyResearch/ThunderKittens (3,498 stars, MIT, last commit 2026-04-29).

Abstract

The challenge of mapping AI architectures to GPU hardware is creating a critical bottleneck in AI progress. Despite substantial efforts, hand-written custom kernels fail to meet their theoretical performance thresholds, even on well-established operations like linear attention. The diverse hardware capabilities of GPUs might suggest that we need a wide variety of techniques to achieve high performance. However, our work explores whether a small number of key abstractions can drastically simplify the process. We present ThunderKittens (TK), a framework for writing performant AI kernels while remaining easy to use and maintain. Our abstractions map to the three levels of the GPU hierarchy: (1) at the warp-level, we provide 16x16 matrix tiles as basic data structures and PyTorch-like parallel compute operations over tiles, (2) at the thread-block level, we provide a template for overlapping asynchronous operations across parallel warps, and (3) at the grid-level, we provide support to help hide the block launch and tear-down, and memory costs. We show the value of TK by providing kernels that match or outperform prior kernels for a range of AI operations. We match CuBLAS and FlashAttention-3 on GEMM and attention inference performance and outperform the strongest baselines by $10-40\%$ on attention backwards, $8\times$ on state space models, and $14\times$ on linear attention.

View on arXivView PDF

Code Implementations(1)

MIT

Tile primitives for speedy kernels

3,498300Cuda, PythonMar 4, 20245 months agoMIT

Similar Papers

Cite this paper

@article{spector2024thunderkittens,
  title  = {ThunderKittens: Simple, Fast, and Adorable AI Kernels},
  author = {Benjamin F. Spector and Simran Arora and Aaryan Singhal and Daniel Y. Fu and Christopher Ré},
  year   = {2024},
  eprint = {2410.20399},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2410.20399v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2410.20399.svg)](https://codeofpaper.com/paper/2410.20399)

Discussion