百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
C

cutlass

> 编程语言
开源

用于高性能线性代数的 CUDA 模板和 Python DSL

10.2K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

用于高性能线性代数的 CUDA 模板和 Python DSL

Overview

CUTLASS 4.8.0

CUTLASS 4.8.0 - Aug 2026

CUTLASS is a collection of abstractions for implementing high-performance matrix-matrix multiplication (GEMM) and related computations at all levels and scales within CUDA. It incorporates strategies for hierarchical decomposition and data movement. CUTLASS decomposes these "moving parts" into reusable, modular software components and abstractions.

Primitives for different levels of a conceptual parallelization hierarchy can be specialized and tuned via custom tiling sizes, data types, and other algorithmic policy. The resulting flexibility simplifies their use as building blocks within custom kernels and applications.

CUTLASS has been providing CUDA C++ template abstractions for high-performance linear algebra since 2017 and these abstractions provide extensive support for a wide range of computations including mixed-precision computations, specialized data-movement (async copy) and multiply-accumulate abstractions for FP64, FP32, TF32, FP16, BF16, FP32 emulation via tensor core instruction, 8b floating point types (e5m2 and e4m3), block scaled data types (NVIDIA NVFP4 and OCP standard MXFP4, MXFP6, MXFP8), narrow integer types (4 and 8b signed and unsigned integers), and binary 1b data types (where architectures allow for the native support of such data types) across NVIDIA's Volta, Turing, Ampere, Ada, Hopper, and Blackwell architectures.

To this rich ecosystem of C++ based kernel programming abstractions, CUTLASS 4 adds CUTLASS DSLs. These are Python native interfaces for writing high-performance CUDA kernels based on core CUTLASS and CuTe concepts without any performance compromises. This allows for a much smoother learning curve, orders of magnitude faster compile times, native integration with DL frameworks without writing glue code, and much more intuitive metaprogramming that does not require deep C++ expertise.

Overall, we envision CUTLASS DSLs as a family of domain-specific languages (DSLs). With the release of 4.0, we released the first of these in CuTe DSL. This is a low-level programming model that is fully consistent with CuTe C++ abstractions - exposing core concepts such as layouts, tensors, hardware atoms, and full control over the hardware thread and data hierarchy.

CuTe DSL demonstrates optimal matrix multiply and other linear algebra operations targeting the programmable, high-throughput Tensor Cores implemented by NVIDIA's Ampere, Hopper, and Blackwell architectures.

We believe it will become an indispensable tool for students, researchers, and performance engineers alike - flattening the learning curve of GPU programming, rapidly prototyping kernel designs, and bringing optimized solutions into production.

CuTe DSL is currently in public beta and will graduate out of beta by end of summer 2026.

To get started quickly - please refer :

  • CUTLASS C++ Quick Start Guide.
  • CuTe DSL Quick Start Guide.

What's New in CUTLASS 4.8

CuTe DSL

  • New features
    • Initial Rubin support to accelerate dense GEMMs. The following features are available:

      • CuTe DSL
        • Rubin new FP8 and FP4 Tensor Core support
        • B collector reuse
        • Extended TMEM size from 512 COL to 576 COL
        • Larger shared memory allocations (328KB)
        • Enhanced mixed precision throughput (FP8/FP4)
      • Primitives
        • Rubin new FP8 and FP4 Tensor Core support
        • Extended TMEM size from 512 COL to 576 COL

      NOTE: Executing Rubin kernels (SM107) requires the R615 driver which will be released with CUDA Toolkit 13.4 GA. R610 from CUDA Toolkit 13.4 Developer Preview is not sufficient.

    • CuTe DSL extensions has several new features:

      • CTA-V maps are now inferred automatically for cute_ext TMA load, store, multicast, and reduce-store operations. Explicit CTA-V maps remain supported as overrides.
      • Added asynchronous atomic TMA reduce-store and sparse MMA operations.
      • Added reusable cute_ext GEMM mainloop and TMA epilogue helpers.
      • Added opt-in TMEM accumulator-buffer planning, including overlapping ping-pong storage for capacity-constrained kernels.
      • Improved device-side TMA descriptor updates and grouped GEMM performance through SMEM-staged updates, workspace reuse, and reduced prologue and synchronization overhead.
    • This release includes an opt-in preview of the CuTe DSL extensions (cute_ext) compiler pipeline for ordinary Cute DSL kernels. This pipeline lets user mix cute_ext APIs directly into @cute.jit and @cute.kernel code and is required for kernels that mix the two API surfaces. You may test this feature with the following: CUTE_DSL_USE_EXTENSION_COMPILER=1 python your_program.py The pipeline is expected to preserve program behavior, but generated PTX/SASS may differ. The pipeline is planned to become the default in a future release.

    • Added examples for better control over Primitives' compiler warnings/errors introduced in 4.7.0. See the CuTeDSL/experimental/compiler_diagnostic/ directory.

    • IKET Profiler Tool

      • Rubin kernels (sm107) can now be profiled.
      • It is now possible to only dump timing data for a specific cluster to reduce profiling overhead. Previously all clusters were profiled.
      • Task Scheduling can instrument the schedule with IKET ranges when constructing TaskManager objects (iket_enable_profiling=True). Task execution will generate an IKET range and individual pipeline stages in a schedule may generate separate ranges (iket_profiling_stages).
    • A number of new examples were added in this release:

      • Rubin (CuTe):
        • Dense GEMM for legacy data type with B collector reuse as applicable
        • Grouped GEMM with B collector reuse
        • Dense blockscaled GEMM with FP4/FP6/FP8 mixed precision and UE5M3 / block-32 scale-factor support
        • Grouped blockscaled GEMM with B collector reuse as applicable
        • Blockwise GEMM
      • Rubin (CuTe extension):
        • FP4 blockscaled GEMM
        • Grouped GEMM with B collector reuse
      • Blackwell (CuTe extension):
        • Dense GEMMs
          • Back-to-back GEMM
          • Blockscaled GEMM
          • Persistent GEMM with alpha/beta scaling
          • CLC scheduler/dynamic persistent GEMM
          • GLU GEMM
          • Mixed input GEMM
          • Planar complex GEMM
          • Input transform GEMM
          • GeForce pingpong dense GEMM
          • Blackwell Ultra blockscaled GEMM
        • Attention
          • GQA Decode
        • Grouped GEMM
          • Unscaled and blockscaled grouped GEMM
        • Top-K
      • Ampere (CuTe extension):
        • SIMT GEMM
  • Bug fixes and improvements:
    • nvidia-cuda-nvdisasm is now an optional dependency of nvidia-cutlass-dsl via the optional [sass] extra. SASS dumping (CUTE_DSL_KEEP=sass / KeepSASS) now resolves nvdisasm from the bundled wheel (recommended since its version matches the DSL toolchain) or from a local CUDA Toolkit (CUDA_HOME/CUDA_PATH). A locally-provided nvdisasm must come from a CUDA Toolkit at least as new as the toolchain that produced the CUBIN. Installations that never dump SASS are unaffected.
    • Reduced the protobuf version requirement of IKET profiler from 6.30 to 4.21. This should make protobuf an easier requirement to satisfy in preparation for transioning IKET to an optional extra.
    • Improved JAX PyTree input/output aliasing for cutlass.jax.cutlass_call
    • Fixed a regression from 4.6.0 where cute.autovec_copy emitted per-element instead of vectorized instructions for tensors with a dynamic stride (!3463)
    • Fixed TVM-FFI env stream detection for GPU tensors in tuple (!3444)

This release has been tested against the following packages:

  • FlashAttention: main (0251105)
  • Quack: main (60d8808)
  • FlashInfer: main (109d44f)
  • cuDNN-Frontend: deveop (25b3d51)
  • Pytorch: main (cf30153)
  • TensorRT-LLM: main (1cef02e)

CUTLASS Operator API

  • Operator API features and functionality:
    • Dense and blockscaled GEMMs in Operator API have preliminary Rubin support. These are provided as a preview and may need additional performance tuning.

      Updated GEMMs include:

      • Dense GEMMs: FP8xFP8
      • Blockscaled GEMM: {MXFP8}x{MXFP4, MXFP8} and {MXFP4, NVFP4}x{MXFP4, NVFP4} (including support for the new UE5M3 scale factor dtype for NVFP4).

      These kernels utilize the below new features in Rubin: - Higher SMEM (328KB) and TMEM capacity (288KB) - B-buffer reuse - Enhanced mixed precision throughput

    • Operators can now be ranked by their estimated performance when nvMatmulHeuristics is available. See tutorial here

      NOTE: This currently only supports Blackwell kernels as nvMatmulHeuristics does not yet support Rubin.

    • Standalone kernel implementations are now exposed through cutlass.kernels, in addition to those exposed through the Operator interface in cutlass.operators. This allows kernels to be called directly without looking them up first.

    • Custom Epilogue fusions now support partial (per-row or per-column) reductions.

    • IndexPtrGroupedGemmArguments is now used to represent Grouped GEMM with contiguous-offset/index-pointers. Existing GroupedGemmArguments is deprecated and will be removed in a future release.

C++

  • Added initial Rubin support (SM107) with CuTe C++ building blocks:
    • Rubin Tensor Core MMA instructions and corresponding CuTe MMA traits.
  • CuTe examples that demonstrate the use of Rubin SM107 Tensor Core instructions:
    • Dense FP8 GEMM.
    • Block-scaled FP8 GEMM.
    • Mixed-precision block-scaled FP8/FP4 GEMM.
    • Block-scaled FP4 GEMM.
  • Adjusted shared-memory and tensor-memory capacity handling for Rubin SM107:
    • Set the SM107 shared-memory capacity to 327 KiB and added launch support for oversized shared-memory configurations.
    • Set the SM107 TMEM capacity to 576 columns per SM, updated the CuTe 1SM and 2SM TMEM allocators for Rubin's exclusive allocation path.
  • Enabled the existing SM100-compatible GEMM and convolution for the

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C++cppcudadeep-learningdeep-learning-library

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言