NVIDIA/cutlass

Machine Learning

A CUDA template and Python DSL library for writing high-performance GEMM and tensor-core kernels on NVIDIA GPUs.

10,654
2,139
C++
NOASSERTION
8 years old

CUTLASS is the layer NVIDIA provides when cuBLAS-level calls are too coarse and you need your own fused kernel. It is a specialist tool: expect to write CUDA-level code, not to get an out-of-the-box operator library.

The problem

A team has a training or inference kernel whose shape, datatype, or fusion pattern does not fit library calls, so time goes into memory movement or several separate launches that could be one. The usual path is hand-written CUDA, which means rebuilding tiling, shared-memory staging, and pipelining from scratch. CUTLASS changes that step: you describe the GEMM (or a related operation) in terms of its abstractions, choose tile sizes and datatypes, and add an epilogue in the same kernel. The result is a device-wide kernel built from reusable pieces rather than a one-off implementation.

What's different

CUTLASS decomposes a GEMM into a hierarchy of parallelization levels and treats the moving parts as composable components. The newer CuTe layer packages the type, shape, memory space, and layout of tensors and threads into Layout and Tensor objects, so indexing is computed rather than hand-written; the author says this lets programmers focus on the logical description of the algorithm. CuTe also exists as a Python DSL, the direction recent releases emphasize: version 4.8 adds initial support for the Rubin architecture (SM107), including higher-throughput FP8 and FP4 tensor-core instructions, larger shared-memory and TMEM allocations, and softmax acceleration features.

The trade-off is that the abstraction is not a stable public API in the ordinary sense. Each release is tied to specific architectures and datatypes, and features for a new GPU arrive as previews that "may need additional performance tuning," in the project's own words for the Rubin Operator API. The CuTe DSL inherits that coupling: useful if you already work close to the hardware, awkward if you wanted something that hides the GPU generation.

Who should try it

It fits teams that already write CUDA and need a custom fused GEMM, quantized or block-scaled kernel, or an epilogue a library call cannot express, on NVIDIA hardware with a reasonably modern toolkit. It is a poor fit if you only want to call a matrix multiply from PyTorch, cannot move the build and test environment onto an NVIDIA GPU, or need Windows: the README says CUTLASS 3.x builds are down on Windows for all CUDA toolkits.

Requirements and limitations

You need a C++17 host compiler and CUDA 11.4 or newer, with CUDA 12.8 stated as the best-tested toolkit. Supported GPUs start at Volta (compute capability 7.0); the hardware table lists V100, TitanV, RTX 20-series, T4, A100, A10, and RTX 30-series, with efficiency expected on Volta through Hopper. Tested OS entries are Ubuntu 18.04 to 22.04 with GCC 7.5 to 11.2, and GCC 8.5 is called out for known regressions. Upkeep is not trivial: following a new architecture like Rubin means keeping toolkit, driver, and CUTLASS version aligned, and treating preview kernels as candidates for tuning rather than drop-in replacements. Budget for keeping kernels building and producing good numbers across whichever GPUs you actually deploy on. The official docs are the place to check setup details.

HotRepo's take

HotRepo has only two dated observations, 2026-10-24 and 2026-10-25, each showing 10,652 stars and +6 for the day, so persistence or momentum cannot be judged from this sample. A 2017-created repository with this installed base is better assessed by release notes than by trending boards. Before adopting, verify that the specific CUTLASS version you pick documents your GPU and CUDA toolkit combination and that its example kernels for your target architecture have current, runnable code.

Hacker News

3xTF32: FP32 accuracy with 2x Performance (on A100)
▲ 3 · 0 comments · November 10, 2021
Show HN: CUTLASS: Fast Linear Algebra in CUDA C++
▲ 3 · 0 comments · December 14, 2017
A new, undocumented INT1 tensor core instruction in Nvidia Ampere
▲ 1 · 1 comment · June 23, 2020

Written by AI from the project's README, updated October 25, 2026. The project's own docs are the source of truth.