news 2026/3/23 10:25:49

井通 CUTLASS 01章:静看 cutlass 之 01 记 目录结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
井通 CUTLASS 01章:静看 cutlass 之 01 记 目录结构

不运行、不编译,阅读目标是希望实际找到项目的组织方式等。

1. 下载源码

git clone https://github.com/NVIDIA/cutlass.git

2. CUTLASS 目录结构详细解析

CUTLASS的结构体现了层次化设计现代GPU编程范式,这里将按重要性层级解析每个目录的作用。

2.1. 核心层级

include/cutlass/- 核心实现库

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核心(新一代抽象层)

include/cute/ ├── algorithm/ # 核心算法(GEMM、COPY等) ├── atom/ # 原子操作抽象 ├── arch/ # 架构特性(独立于cutlass/arch) ├── container/ # 容器抽象(Tensor、Array等) ├── numeric/ # 数值操作 └── util/ # 工具函数

关键作用:CuTe是CUTLASS 3.0的核心,提供更简洁的张量操作抽象。

2.2. 工具链(开发与优化)

tools/- 核心工具

tools/ ├── library/ # 🏗️ 库生成器(最重要!) │ ├── src/ # 源码生成逻辑 │ └── include/ # 生成库的头文件 ├── profiler/ # 📊 性能分析器 │ ├── src/ # 分析器实现 │ └── include/ # 分析接口定义 └── util/ # 通用工具 ├── scripts/ # 构建脚本 └── include/cutlass/util/reference/ # 参考实现 ├── host/ # CPU参考实现(验证用) └── device/ # GPU参考实现

tools/library/特别重要:这是CUTLASS的"编译器",将高级描述转换为优化CUDA代码。

2.3. 测试与验证

test/- 完整测试套件

test/ ├── unit/ # 单元测试(覆盖所有模块) │ ├── gemm/ # GEMM测试(按架构分层) │ │ └── device/ # 设备级测试 │ │ ├── sm100_*/ # Hopper架构测试 │ │ └── sm120_*/ # Blackwell架构测试 │ ├── conv/ # 卷积测试 │ ├── layout/ # 布局测试 │ ├── epilogue/ # 后处理测试 │ └── cute/ # CuTe组件测试 ├── examples/ # 示例测试 └── python/ # Python绑定测试

特点:按GPU架构(SM版本)严格分层测试,确保每代硬件兼容性。

🐍Python生态

python/- Python接口与DSL

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.4. 示例与教学

examples/- 丰富示例代码

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.5. 媒体与文档

media/- 可视化资源

media/ ├── images/ # 架构图、数据流图 └── docs/ # 文档图片 ├── cpp/ # C++文档资源 └── pythonDSL/ # Python DSL文档

docs/- 文档系统

docs/ └── search/ # 文档搜索索引

2.6. 构建系统

cmake/- CMake构建配置

cmake/ # CMake模块和配置

2.7. 关键目录深度解析

1. 架构演进体现

test/unit/gemm/device/ ├── sm100_*/ # Hopper (SM90) - FP8, Tensor Memory Accelerator ├── sm120_*/ # Blackwell (SM100) - 新稀疏格式 └── ... # 历史架构支持

体现:CUTLASS严格跟踪NVIDIA硬件演进,每代架构都有专门优化。

2. Python代码生成系统

python/cutlass_cppgen/backend/evt/ ├── passes/ # 编译器Passes(优化转换) ├── ir/ # 中间表示(类似LLVM IR) ├── frontend/ # 前端(Python到IR) └── backend/ # 后端(IR到CUTLASS C++)

作用:这是CUTLASS的"编译器",将高级Python描述编译为优化内核。

3. 分布式计算支持

include/cutlass/experimental/distributed/ ├── schedules/ # 分布式调度策略 ├── kernel/ # 分布式内核 └── device/ # 分布式设备接口

体现:CUTLASS正在向多GPU/集群计算扩展。

4. CuTe DSL生态系统

examples/python/CuTeDSL/ ├── notebooks/ # 交互式学习 ├── blackwell/ # 最新架构示例 ├── hopper/ # Hopper示例 └── jax/ # 与JAX集成

趋势:CuTe DSL正成为新一代GPU编程抽象。

2.8. 核心设计模式

分层架构

用户接口层 (examples/) ← 最上层 ↓ Python DSL层 (python/) ← 高级抽象 ↓ C++模板库 (include/cutlass/) ← 核心实现 ↓ 工具链 (tools/) ← 代码生成与优化 ↓ 测试验证 (test/) ← 质量保证

硬件抽象栈

应用逻辑 (GEMM/Conv算法) ↓ 计算抽象 (CuTe DSL) ↓ 线程层次 (Thread/Warp/Threadblock) ↓ 硬件指令 (Tensor Core/MMA) ↓ 物理硬件 (SM架构)

2.9. 使用建议

新手入门路径

  1. 从examples开始00_basic_gemm01_cutlass_utilities

  2. 理解核心概念:研究include/cutlass/gemm/device/

  3. 使用Python接口:尝试python/cutlass_library

  4. 学习CuTe:查看examples/python/CuTeDSL/notebooks/

开发者扩展路径

  1. 添加新操作:在include/cutlass/相应模块添加

  2. 支持新硬件:在include/cutlass/arch/添加架构特性

  3. 优化性能:使用tools/profiler/分析并调整

  4. 集成到框架:参考tools/util/中的PyTorch/TensorFlow集成

研究者探索路径

  1. 新算法研究include/cutlass/experimental/

  2. DSL开发python/CuTeDSL/include/cute/

  3. 分布式计算include/cutlass/experimental/distributed/

  4. 稀疏计算:查看稀疏GEMM示例(如examples/15_ampere_sparse_tensorop_gemm/

2.10. 发展趋势

从目录结构可以看出CUTLASS的演进方向:

  1. CuTe DSL主导:新代码越来越多使用CuTe抽象

  2. Python优先:Python接口日益完善

  3. 硬件跟进:及时支持最新NVIDIA架构

  4. 领域扩展:从GEMM扩展到注意力、MoE等AI算子

2.11. 总结要点

  1. include/- 核心实现,理解层次化设计

  2. tools/library/- 代码生成器,CUTLASS的"编译器"

  3. python/cutlass_cppgen/- Python到C++的桥梁

  4. test/unit/- 按架构分层的完整测试

  5. examples/- 从基础到高级的学习路径

  6. include/cute/- 新一代编程抽象

这个结构体现了CUTLASS作为生产级高性能计算库的严谨性,同时通过Python/CuTe提供研究友好的抽象层,平衡了性能与易用性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/21 21:22:12

transformer(下)

接下来是decoderdecoder其实有两种,接下来介绍的是autoregressive的decoder以语音辨识为例子,机器收到一段声音讯号作为输入到encoder,此时输出就是一排vector,接下来就是decoder的运作,产生语音辨识的结果首先先给他一…

作者头像 李华
网站建设 2026/3/15 17:38:01

【期货量化策略】期货量化交易策略趋势跟踪(Python量化)

一、前言 趋势跟踪是量化交易中最经典的策略类型。通过识别和跟踪市场趋势,可以在趋势行情中获得稳定收益。本文将介绍各种趋势跟踪策略的实现方法。 本文将介绍: 趋势跟踪基本原理移动平均策略突破策略动量策略趋势确认方法 二、为什么选择天勤量化…

作者头像 李华
网站建设 2026/3/15 17:37:55

AI Agent部署架构对比与选择:一篇搞定,建议收藏

AI Agent 的部署架构没有万能解法,选择对了能事半功倍,选择错了则可能付出高昂的性能或成本代价。不同架构会直接影响性能表现、成本结构、延迟体验和适用场景。目前主流的四种部署模式包括批量部署、流式部署、实时部署和边缘部署。 1.批量部署 Agent 以…

作者头像 李华