news 2026/6/15 18:53:26

井通 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/6/15 17:34:40

Qlib量化投资实战教程:视频精讲+可运行源码+PDF文档|11章系统进阶课,理论直达实操

温馨提示:文末有联系方式为什么选择这套Qlib量化投资系统教程 本教程专为希望深入掌握Qlib框架的量化爱好者与从业者设计,覆盖从环境配置、数据、特征工程、模型训练到回测评估的全链路流程,拒绝碎片化学习。11章体系化课程结构 课程共分11个…

作者头像 李华
网站建设 2026/6/15 14:12:50

ops-cv计算机视觉算子库深度解读

ops-cv计算机视觉算子库深度解读:AIGC视觉任务的加速引擎 本文基于CANN开源社区的ops-cv仓库进行技术解读 CANN组织链接:https://atomgit.com/cann仓库链接:https://atomgit.com/cann/ops-cv 前言 随着AIGC(生成式人工智能&am…

作者头像 李华
网站建设 2026/6/15 14:18:53

计算机毕业设计springboot动物园管理系统 基于SpringBoot的野生动物园智慧服务平台设计与实现 SpringBoot框架下的城市动物园数字化运营系统开发

计算机毕业设计springboot动物园管理系统7ij5fe16 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着城市公共服务数字化转型的深入推进,传统动物园面临着信息孤岛…

作者头像 李华
网站建设 2026/6/15 14:10:28

【期货量化策略】期货量化交易策略统计套利(Python量化)

一、前言 统计套利是基于统计模型的套利策略,通过寻找价格关系的统计规律进行套利。本文将介绍统计套利的实现方法。 本文将介绍: 统计套利基本原理协整分析配对交易多品种统计套利风险控制 二、为什么选择天勤量化(TqSdk) T…

作者头像 李华
网站建设 2026/6/15 18:50:36

智慧光能追踪辅助系统

智慧光能追踪辅助系统的设计与实现 第一章 设计背景与核心目标 太阳能作为清洁可再生能源,在能源转型中占据重要地位,但传统光伏组件多采用固定安装方式,仅能在特定时段捕获直射光,光能利用率不足30%,且受昼夜交替、季…

作者头像 李华
网站建设 2026/6/15 15:17:06

智慧城市交通系统的设计与实现

智慧城市交通系统的设计与实现 第一章 设计背景与核心目标 城市化进程加速导致交通流量激增,传统交通系统存在信号配时僵化、信息互通不畅、管控缺乏精准性等问题,引发拥堵加剧、出行效率低、环境污染等连锁反应。智慧城市交通系统依托物联网、大数据、…

作者头像 李华