NVIDIA/cutlass

CUDA Templates and Python DSLs for High-Performance Linear Algebra

解决的问题

CUTLASS 提供了一组模块化的抽象,用于在 NVIDIA GPU 上实现高性能矩阵-矩阵乘法(GEMM)及相关线性代数计算。它通过将并行化层次结构和数据移动分解为可重用的软件组件,解决了编写高度优化的 CUDA 内核的复杂性,使开发者无需从零开始编写,即可实现接近理论最优吞吐量的性能。

工作原理

CUTLASS 使用 C++ 模板抽象和一个名为 CuTe 的核心库来管理线程和数据的分层多维布局。它支持通过自定义分块大小、数据类型和算法策略进行特化和调优。最近,它引入了 CUTLASS DSL(从 CuTe DSL 开始),提供了原生 Python 接口来编写高性能 CUDA 内核,从而减少编译时间并降低对深层 C++ 专业知识的需求,同时保持高性能。

适用人群

专为需要在 NVIDIA GPU 上实现优化线性代数操作的性能工程师、研究人员和学生设计,适用于从使用低级 C++ 到偏好基于 Python 的原型开发工作流的各类用户。

主要亮点

  • 广泛的硬件支持:支持从 Volta 到 Blackwell 和 Rubin 的 NVIDIA 架构。
  • 丰富的数据类型支持:支持多种精度,包括 FP64、FP32、TF32、FP16、BF16、FP8、FP4 以及窄整数类型。
  • CuTe 库:一个专门用于通过布局和张量描述和操作线程与数据张量的系统。
  • Python DSL:与深度学习框架集成的原生 Python 接口,用于编写 CUDA 内核,加速开发周期。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目