news 2026/6/10 12:33:27

井通 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/9 21:27:08

【期货量化AI】期货量化交易策略深度学习应用(Python量化)

一、前言 深度学习在量化交易中的应用越来越广泛。通过深度学习模型,可以捕捉复杂的非线性关系,提高策略的预测能力。本文将介绍如何将深度学习应用于期货量化交易。 本文将介绍: 深度学习在量化交易中的应用LSTM模型应用CNN模型应用注意力…

作者头像 李华
网站建设 2026/6/10 1:47:44

【期货量化进阶】期货量化交易策略高频交易技巧(Python量化)

一、前言 高频交易通过快速执行大量交易获取微小价差收益。虽然对个人投资者来说完全的高频交易较难实现,但学习高频交易技巧可以提高策略执行效率。本文将介绍高频交易的核心技巧。 本文将介绍: 高频交易基本原理订单簿分析微观结构分析执行算法延迟…

作者头像 李华
网站建设 2026/6/6 18:29:47

救命神器 8个降AI率网站深度测评与推荐:专科生必看!

在当前的学术写作环境中,AI生成内容(AIGC)已经成为许多学生不得不面对的现实。无论是论文、报告还是课程作业,如何有效降低AI痕迹、避免查重率过高,成为了专科生们亟需解决的问题。而随着技术的发展,越来越…

作者头像 李华
网站建设 2026/5/22 19:04:28

多模态大模型效率提升:Token压缩技术详解与实战指南

近年来多模态大模型在视觉感知,长视频问答等方面涌现出了强劲的性能,但是这种跨模态融合也带来了巨大的计算成本。高分辨率图像和长视频会产生成千上万个视觉 token ,带来极高的显存占用和延迟,限制了模型的可扩展性和本地部署。 …

作者头像 李华
网站建设 2026/5/28 14:24:57

市场用行动投票:招商林屿缦岛首开售罄背后的价值逻辑

2026年春天,招商林屿缦岛用一份“首开售罄”的答卷,回应了市场对品质居住的所有期待。203套房源在开盘当日即告售罄,这不仅是一个项目的成功,更是市场理性选择的一次集中体现。当喧嚣褪去,价值回归,我们有必…

作者头像 李华
网站建设 2026/6/9 20:16:02

干货合集:AI论文平台,千笔 VS 万方智搜AI,本科生必备!

随着人工智能技术的迅猛发展,AI辅助写作工具已经逐步渗透到高校学术写作场景中,成为本科生、研究生完成毕业论文不可或缺的得力助手。越来越多的学生开始借助这些工具提升写作效率、降低论文压力。然而,面对市场上琳琅满目的AI写作平台&#…

作者头像 李华