NVlabs/CuTe

Reference implementation and examples of the CuTe Layout representation and algebra.

它解决了什么问题

PyCuTe 提供了 NVIDIA CUTLASS 3.x 中使用的分层布局与张量代数的纯 Python 参考实现。它使开发者能够在无需 GPU 的情况下学习复杂的代数、原型化新的数据转换,并为 C++ 和 DSL 实现生成测试向量。

它如何工作

其核心是将 Layout 定义为一个函数,该函数使用 Shape(定义域)和 Stride(映射逻辑)将坐标映射到偏移量。它实现了一套代数操作来操作这些布局,包括:

  • 合并 (Coalesce):将布局简化为最少的模式数。
  • 组合 (Composition):通过另一个布局索引一个布局。
  • 补集 (Complement):识别缺失的模式以填充上域。
  • 逻辑除法/乘法 (Logical Divide/Product):处理模式的分块和重复。
  • 逆变换/零空间 (Inversion/Nullspace):分析和反转映射。

它还支持 F2(XOR-swizzle)步长,以帮助可视化和管理共享内存 bank 冲突。一个轻量级的 Tensor 层将这些布局与 Accessor 配对,提供数据模型。

适用人群

  • 使用 CUTLASS 3.x 或 CuTe DSL 的开发者。
  • 原型化 GPU 张量操作和内存布局的工程师。
  • 研究分层布局代数的研究人员。

特色亮点

  • 与 GPU 无关:在普通 Python(3.10+)中运行,无需硬件要求。
  • 可视化工具:包含用于将布局渲染为 ASCII 表格、彩色 SVG 或 TikZ/PDF 的实用工具。
  • 全面的代数实现:实现了 CuTe 白皮书中描述的完整布局代数。
  • 支持 swizzle:专门处理 XOR-swizzling 以可视化 bank 冲突。

相关

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