KernelBench: Can LLMs Write Efficient GPU Kernels?
Anne Ouyang, Simon Guo, Simran Arora, Alex L. Zhang, William Hu, Christopher Ré, Azalia Mirhoseini
TL;DR
<3-5 sentence high-level summary> KernelBench investigates whether language models can automatically generate GPU kernels that are both functionally correct and fast on real-world PyTorch workloads. It introduces a 250-task benchmark, a fast_p metric combining correctness and speedups, and a workflow that accepts rich hardware-specific information and feedback. Across multiple models and test-time methods, frontier reasoning models show limited out-of-the-box success, with iterative refinement and execution/profiling feedback delivering the most substantial gains yet still facing substantial limitations, especially across hardware. The work provides an open-source framework, analyzes failure modes, and outlines concrete avenues—data, prompting, and tooling—for advancing LM-driven kernel optimization with tangible production impact on energy and cost efficiency.</p>
Abstract
Efficient GPU kernels are crucial for building performant machine learning architectures, but writing them is a time-consuming challenge that requires significant expertise; therefore, we explore using language models (LMs) to automate kernel generation. We introduce KernelBench, an open-source framework for evaluating LMs' ability to write fast and correct kernels on a suite of 250 carefully selected PyTorch ML workloads. KernelBench represents a real-world engineering environment and making progress on the introduced benchmark directly translates to faster practical kernels. We introduce a new evaluation metric fast_p, which measures the percentage of generated kernels that are functionally correct and offer a speedup greater than an adjustable threshold p over baseline. Our experiments across various state-of-the-art models and test-time methods show that frontier reasoning models perform the best out of the box but still fall short overall, matching the PyTorch baseline in less than 20% of the cases. While we show that results can improve by leveraging execution and profiling feedback during iterative refinement, KernelBench remains a challenging benchmark, with its difficulty increasing as we raise speedup threshold p.
