不运行、不编译,阅读目标是希望实际找到项目的组织方式等。
1. 下载源码
bash
git clone https://github.com/NVIDIA/cutlass.git

2. CUTLASS 目录结构详细解析
CUTLASS的结构体现了层次化设计和现代GPU编程范式,这里将按重要性层级解析每个目录的作用。
2.1. 核心层级
include/cutlass/ - 核心实现库
bash
include/cutlass/
├── arch/ # GPU架构抽象层
│ ├── sm*.h # 具体架构特性(SM60/70/80/90...)
│ └── *.h # 硬件指令抽象(Tensor Core, MMA等)
├── gemm/ # GEMM实现核心(矩阵乘法)
│ ├── device/ # 设备级接口(用户直接调用)
│ ├── kernel/ # 内核级实现(完整CUDA kernel)
│ ├── threadblock/ # 线程块级组件(共享内存优化)
│ ├── warp/ # Warp级组件(Tensor Core利用)
│ ├── collective/ # Collective操作(集群/多GPU)
│ └── epilogue/ # 后处理(融合激活函数、偏置等)
├── conv/ # 卷积实现(类似GEMM结构)
├── layout/ # 数据布局定义(内存排布策略)
├── transform/ # 数据变换操作(重排、转置等)
├── pipeline/ # 流水线优化(异步、预取)
├── reduction/ # 归约操作(sum、max等)
└── epilogue/ # 独立后处理模块
include/cute/ - CuTe核心(新一代抽象层)
bash
include/cute/
├── algorithm/ # 核心算法(GEMM、COPY等)
├── atom/ # 原子操作抽象
├── arch/ # 架构特性(独立于cutlass/arch)
├── container/ # 容器抽象(Tensor、Array等)
├── numeric/ # 数值操作
└── util/ # 工具函数
关键作用:CuTe是CUTLASS 3.0的核心,提供更简洁的张量操作抽象。
2.2. 工具链(开发与优化)
tools/ - 核心工具
bash
tools/
├── library/ # 库生成器(最重要!)
│ ├── src/ # 源码生成逻辑
│ └── include/ # 生成库的头文件
├── profiler/ # 性能分析器
│ ├── src/ # 分析器实现
│ └── include/ # 分析接口定义
└── util/ # 通用工具
├── scripts/ # 构建脚本
└── include/cutlass/util/reference/ # 参考实现
├── host/ # CPU参考实现(验证用)
└── device/ # GPU参考实现
tools/library/ 特别重要:这是CUTLASS的"编译器",将高级描述转换为优化CUDA代码。
2.3. 测试与验证
test/ - 完整测试套件
bash
test/
├── unit/ # 单元测试(覆盖所有模块)
│ ├── gemm/ # GEMM测试(按架构分层)
│ │ └── device/ # 设备级测试
│ │ ├── sm100_*/ # Hopper架构测试
│ │ └── sm120_*/ # Blackwell架构测试
│ ├── conv/ # 卷积测试
│ ├── layout/ # 布局测试
│ ├── epilogue/ # 后处理测试
│ └── cute/ # CuTe组件测试
├── examples/ # 示例测试
└── python/ # Python绑定测试
特点:按GPU架构(SM版本)严格分层测试,确保每代硬件兼容性。
2.4. Python生态
python/ - Python接口与DSL
bash
python/
├── cutlass_library/ # Python库接口
├── cutlass_cppgen/ # C++代码生成器(重要!)
│ ├── backend/ # 后端代码生成
│ │ └── evt/ # EVT(Epilogue Visitor Trees)系统
│ ├── emit/ # 代码发射器
│ └── op/ # 操作定义
├── pycute/ # CuTe的Python绑定
├── CuTeDSL/ # CuTe DSL实现
└── docs/ # Python文档
关键组件:
-
cutlass_cppgen/:允许Python定义操作,自动生成CUTLASS C++代码 -
evt/:Epilogue Visitor Trees,高级后处理融合系统
2.5. 示例与教学
examples/ - 丰富示例代码
bash
examples/
├── 00_basic_gemm/ # 基础GEMM(入门必看)
├── 01_cutlass_utilities/ # 工具使用
├── 70_blackwell_gemm/ # Blackwell架构GEMM
├── 77_blackwell_fmha/ # 注意力机制实现
├── 88_hopper_fmha/ # Hopper架构注意力
├── 40_cutlass_py/ # Python接口示例
└── python/ # Python示例
└── CuTeDSL/ # CuTe DSL示例
├── notebooks/ # Jupyter笔记本
└── blackwell/ # Blackwell架构示例
学习路径:编号越小越基础,大编号对应新架构/高级特性。
2.6. 媒体与文档
media/ - 可视化资源
bash
media/
├── images/ # 架构图、数据流图
└── docs/ # 文档图片
├── cpp/ # C++文档资源
└── pythonDSL/ # Python DSL文档
docs/ - 文档系统
bash
docs/
└── search/ # 文档搜索索引
2.7. 构建系统
cmake/ - CMake构建配置
bash
cmake/ # CMake模块和配置
2.8. 关键目录深度解析
1. 架构演进体现
bash
test/unit/gemm/device/
├── sm100_*/ # Hopper (SM90) - FP8, Tensor Memory Accelerator
├── sm120_*/ # Blackwell (SM100) - 新稀疏格式
└── ... # 历史架构支持
体现:CUTLASS严格跟踪NVIDIA硬件演进,每代架构都有专门优化。
2. Python代码生成系统
bash
python/cutlass_cppgen/backend/evt/
├── passes/ # 编译器Passes(优化转换)
├── ir/ # 中间表示(类似LLVM IR)
├── frontend/ # 前端(Python到IR)
└── backend/ # 后端(IR到CUTLASS C++)
作用:这是CUTLASS的"编译器",将高级Python描述编译为优化内核。
3. 分布式计算支持
bash
include/cutlass/experimental/distributed/
├── schedules/ # 分布式调度策略
├── kernel/ # 分布式内核
└── device/ # 分布式设备接口
体现:CUTLASS正在向多GPU/集群计算扩展。
4. CuTe DSL生态系统
bash
examples/python/CuTeDSL/
├── notebooks/ # 交互式学习
├── blackwell/ # 最新架构示例
├── hopper/ # Hopper示例
└── jax/ # 与JAX集成
趋势:CuTe DSL正成为新一代GPU编程抽象。
2.9. 核心设计模式
分层架构
bash
用户接口层 (examples/) ← 最上层
↓
Python DSL层 (python/) ← 高级抽象
↓
C++模板库 (include/cutlass/) ← 核心实现
↓
工具链 (tools/) ← 代码生成与优化
↓
测试验证 (test/) ← 质量保证
硬件抽象栈
bash
应用逻辑 (GEMM/Conv算法)
↓
计算抽象 (CuTe DSL)
↓
线程层次 (Thread/Warp/Threadblock)
↓
硬件指令 (Tensor Core/MMA)
↓
物理硬件 (SM架构)
2.10. 使用建议
新手入门路径
-
从examples开始 :
00_basic_gemm→01_cutlass_utilities -
理解核心概念 :研究
include/cutlass/gemm/device/ -
使用Python接口 :尝试
python/cutlass_library -
学习CuTe :查看
examples/python/CuTeDSL/notebooks/
开发者扩展路径
-
添加新操作 :在
include/cutlass/相应模块添加 -
支持新硬件 :在
include/cutlass/arch/添加架构特性 -
优化性能 :使用
tools/profiler/分析并调整 -
集成到框架 :参考
tools/util/中的PyTorch/TensorFlow集成
研究者探索路径
-
新算法研究 :
include/cutlass/experimental/ -
DSL开发 :
python/CuTeDSL/和include/cute/ -
分布式计算 :
include/cutlass/experimental/distributed/ -
稀疏计算 :查看稀疏GEMM示例(如
examples/15_ampere_sparse_tensorop_gemm/)
2.11. 发展趋势
从目录结构可以看出CUTLASS的演进方向:
-
CuTe DSL主导:新代码越来越多使用CuTe抽象
-
Python优先:Python接口日益完善
-
硬件跟进:及时支持最新NVIDIA架构
-
领域扩展:从GEMM扩展到注意力、MoE等AI算子
2.12. 总结要点
-
include/- 核心实现,理解层次化设计 -
tools/library/- 代码生成器,CUTLASS的"编译器" -
python/cutlass_cppgen/- Python到C++的桥梁 -
test/unit/- 按架构分层的完整测试 -
examples/- 从基础到高级的学习路径 -
include/cute/- 新一代编程抽象
这个结构体现了CUTLASS作为生产级高性能计算库 的严谨性,同时通过Python/CuTe提供研究友好的抽象层,平衡了性能与易用性。