shizhengLi/cuda-triton-learning

CUDA & Triton Learning Project: Flash Attention 实现探索

Python

43

47 commits

updated Aug 14, 2025

See the code

README

CUDA & Triton Learning: Flash Attention 与高性能算子实现

本项目致力于深入学习高性能 GPU 算子的设计与实现,以 Flash Attention 为核心案例,通过分析多种实现方式来掌握 CUDA 并行编程和 Triton 算子开发技能。

项目特色

  • 理论与实践结合:从数学原理到工程实现的完整学习路径
  • 多框架对比:Python、Triton、CUDA、CuTLASS 四种实现方式的深度分析
  • 前沿技术探索:集成 DeepSeek FlashMLA 等业界最新高性能实现
  • 系统性学习:专门的 CuTLASS 3.x 学习模块
  • 生产级实践:从算法到产品的完整工程思维

🗂️ 项目结构

cuda-triton-learning/
├── 📚 docs/                          # 详细学习文档
│   ├── flash_attention_study/        # Flash Attention 算法深度学习
│   │   ├── 01_theory.md              # 理论原理详解
│   │   ├── 02_v1_vs_v2.md            # 版本对比分析
│   │   ├── 03_implementation.md      # 多实现深度分析
│   │   └── 04_optimization.md       # 优化指南
│   │
│   ├── flashmla_study/               # FlashMLA 生产级实现
│   │   ├── 01_flashmla_overview.md   # DeepSeek FlashMLA 深度解析
│   │   └── README.md                 # FlashMLA 学习指南
│   │
│   ├── cutlass_study/                # CuTLASS 3.x 高性能编程
│   │   ├── 01_introduction.md        # CuTLASS 入门指南
│   │   ├── 02_programming_basics.md  # CuTe 编程基础
│   │   └── README.md                 # CuTLASS 学习指南
│   │
│   └── learning_plan.md              # 11周学习计划
│
├── 💻 代码实践/                        # 动手实践代码
│   ├── cuda_basics/                  # CUDA 编程基础
│   │   ├── 01_hello_cuda.cu         # CUDA 入门
│   │   ├── 02_vector_add.cu         # 向量加法
│   │   ├── 03_matrix_multiply.cu     # 矩阵乘法与共享内存
│   │   ├── 04_parallel_reduction.cu  # 并行规约算法
│   │   └── 05_stream_overlap.cu     # 流重叠优化
│   │
│   ├── triton_basics/                # Triton 编程基础
│   │   ├── 01_vector_add.py         # Triton 向量加法
│   │   └── 02_matrix_multiply.py     # Triton 矩阵乘法
│   │
│   ├── cutlass_basics/               # CuTLASS 编程实践
│   │   ├── 01_gemm_basic.cu         # CuTLASS 基础 GEMM
│   │   ├── 02_cute_tensor.cu        # CuTe 张量操作
│   │   └── Makefile                 # 编译配置
│   │
│   └── flash_attention/              # Flash Attention 实现
│       ├── naive/                    # 朴素实现
│       ├── flash_v1/                 # Flash Attention v1
│       └── flash_v2/                 # Flash Attention v2 (Triton)
│
├── 🔬 参考项目/                        # 高价值参考实现
│   ├── tiny-flash-attention/         # 教育性多语言实现 (submodule)
│   │   ├── flash_attention_py/       # Python + Triton 实现
│   │   ├── flash_attention_cuda/     # CUDA 实现
│   │   └── flash_attention_cutlass/  # CuTLASS 实现
│   │
│   └── FlashMLA/                     # DeepSeek 生产级实现 (submodule)
│       ├── csrc/                     # CUDA C++ + CuTLASS 核心
│       ├── flash_mla/                # Python 接口
│       └── benchmark/                # 性能测试
│
├── 🧪 实验工具/                        # 辅助工具
│   ├── benchmarks/                   # 性能测试
│   ├── utils/                        # 工具函数
│   └── requirements.txt              # Python 依赖
│
└── 📋 配置文件/                        # 项目配置
    ├── setup.md                      # 环境配置指南
    └── README.md                     # 本文件

🎯 学习路径

🔰 基础路径 (新手友好)

适合:CUDA/GPU 编程初学者

Week 1-2: CUDA 基础
├── cuda_basics/ 示例学习
├── docs/learning_plan.md 前4周内容
└── 实践:基础 CUDA 程序

Week 3-4: Flash Attention 理论
├── docs/flash_attention_study/01_theory.md
├── flash_attention/naive/ 实现
└── 实践:朴素 Attention 实现

Week 5-6: Triton 入门
├── triton_basics/ 示例
├── flash_attention/flash_v2/ Triton 实现
└── 实践:Triton Flash Attention

🔥 进阶路径 (技术深入)

适合:有 CUDA 基础的开发者

Week 1-3: Flash Attention 全景
├── docs/flash_attention_study/ 完整学习
├── tiny-flash-attention/ 多实现对比
└── 实践:性能对比分析

Week 4-6: CuTLASS 深度学习
├── docs/cutlass_study/ 系统学习
├── cutlass_basics/ 实践编程
└── 实践:自定义 GEMM 实现

Week 7-8: FlashMLA 生产实践
├── docs/flashmla_study/ 深度解析
├── FlashMLA/ 源码分析
└── 实践:性能优化实验

🚀 专家路径 (前沿技术)

适合:GPU 高性能计算专家

并行学习:
├── FlashMLA 源码深度分析
├── CuTLASS 3.x 高级特性
├── Hopper 架构优化技术
└── 自定义算子开发实践

项目目标:
├── 实现生产级 Attention 变体
├── 优化现有算子实现
├── 贡献开源项目
└── 发表技术博客

🚀 快速开始

环境配置

# 1. 克隆项目
git clone <your-repo-url>
cd cuda-triton-learning

# 2. 初始化子模块
git submodule update --init --recursive

# 3. 配置 Python 环境
conda create -n flash_attention python=3.8
conda activate flash_attention
pip install -r requirements.txt

# 4. 验证 CUDA 环境
nvcc --version  # 需要 CUDA 11.0+
nvidia-smi      # 检查 GPU

验证安装

# 测试 CUDA 基础
cd cuda_basics
nvcc 01_hello_cuda.cu -o hello_cuda && ./hello_cuda

# 测试 Triton
cd ../triton_basics
python 01_vector_add.py

# 测试 tiny-flash-attention
cd ../tiny-flash-attention/flash_attention_py
make

# 测试 FlashMLA (需要 Hopper GPU)
cd ../../FlashMLA
python tests/test_flash_mla.py

🔬 核心参考项目

🎓 tiny-flash-attention

教育导向的多语言实现

价值:

  • Python:算法原理理解的最佳起点
  • Triton:高性能 GPU 编程入门
  • CUDA:底层优化实践
  • CuTLASS:模板化高性能计算

学习重点:

# 从简单到复杂的学习路径
tiny-flash-attention/
├── flash_attention_py/     # 从这里开始
├── flash_attention_triton/ # 然后学习 Triton
├── flash_attention_cuda/   # 深入 CUDA 优化
└── flash_attention_cutlass/ # 最后掌握 CuTLASS

🚀 FlashMLA

DeepSeek 的生产级 MLA 实现

价值:

  • 极致性能:H800 SXM5 上 660 TFLOPS
  • Hopper 优化:最新 GPU 架构深度利用
  • 工程实践:生产环境的完整考量
  • 技术前沿:MLA 架构的最佳实现

学习重点:

// 生产级代码的工程实践
FlashMLA/
├── csrc/kernels/        # 核心 Kernel 实现
├── csrc/cutlass/        # CuTLASS 3.x 应用
├── flash_mla/           # Python 接口设计
└── benchmark/           # 性能测试体系

📊 技术对比分析

实现方式对比

实现方式学习难度性能水平工程价值推荐指数
Python (Naive)⭐⭐⭐⭐⭐⭐⭐⭐⭐
Triton⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
CUDA⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
CuTLASS⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
FlashMLA⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

学习价值分析

技术方向核心价值应用场景职业发展
Flash Attention 算法理论基础研究开发算法工程师
Triton 编程高效开发快速原型AI 系统工程师
CUDA 优化深度控制极致性能GPU 编程专家
CuTLASS 工程生产级质量大规模部署高性能计算专家
FlashMLA 实践前沿技术商业应用技术领导者

🛠️ 实践项目推荐

Level 1: 基础实验

# 项目 1: Flash Attention 性能对比
目标: 理解不同实现的性能特征
任务: 
- 实现朴素 Attention
- 使用 Triton 优化
- 对比分析性能差异
- 绘制性能曲线图

Level 2: 进阶开发

// 项目 2: 自定义 CUDA Kernel
目标: 掌握 CUDA 优化技术
任务:
- 实现 Flash Attention CUDA 版本
- 应用共享内存优化
- 使用 Tensor Core 加速
- 性能调优和分析

Level 3: 高级工程

// 项目 3: CuTLASS 算子开发
目标: 学习生产级开发
任务:
- 基于 CuTLASS 实现自定义算子
- 应用 CuTe 张量抽象
- 集成 TMA 内存加速
- 对标 FlashMLA 性能

Level 4: 前沿探索

// 项目 4: FlashMLA 扩展
目标: 推动技术边界
任务:
- 分析 FlashMLA 源码
- 实现新的 Attention 变体
- 优化特定应用场景
- 贡献开源社区

📚 学习资源

📖 核心文档

本项目提供三个专门的学习指南:

  1. Flash Attention 学习指南 - 算法理论和基础实现
  2. FlashMLA 学习指南 - 生产级实现和工程实践
  3. CuTLASS 学习指南 - 高性能编程框架

📄 技术论文

🔗 技术文档

🎯 学习成果验证

🥉 入门级 (1-2 月)

  • 理解 Flash Attention 的核心原理
  • 能够运行和修改基础示例
  • 掌握 CUDA 和 Triton 的基本概念
  • 完成性能对比实验

🥈 进阶级 (3-6 月)

  • 独立实现 Flash Attention CUDA 版本
  • 掌握 CuTLASS 编程基础
  • 理解 FlashMLA 的实现策略
  • 能够进行性能调优

🥇 专家级 (6+ 月)

  • 基于 CuTLASS 开发自定义算子
  • 深度理解 FlashMLA 的优化技术
  • 能够解决复杂的性能问题
  • 具备指导他人的能力

🤝 贡献指南

欢迎贡献

  1. 代码示例:更多实践性的代码示例和教程
  2. 性能分析:不同硬件平台的性能测试结果
  3. 文档完善:改进现有文档,添加新的学习材料
  4. 问题解答:帮助其他学习者解决技术问题

提交方式

# Fork 项目并创建新分支
git checkout -b feature/your-contribution

# 提交更改
git commit -m "Add: your contribution description"

# 创建 Pull Request
# 请详细描述您的贡献内容和价值

🏆 致谢

🎓 教育资源贡献者

🚀 技术创新贡献者

🔬 学术贡献者

  • Tri Dao 等人 - Flash Attention 的原创性算法贡献
  • OpenAI Triton 团队 - 推动 GPU 编程范式的革新
  • NVIDIA CuTLASS 团队 - 高性能计算模板库的开发

🌟 社区贡献者

  • 所有为本项目提供反馈、建议和贡献的开发者和研究者

🚀 开始您的高性能 GPU 编程学习之旅!

从基础概念到前沿实现,从算法理论到工程实践,本项目将帮助您系统掌握现代 GPU 计算的核心技术,成为高性能计算领域的专家。

选择您的学习路径,探索 GPU 计算的无限可能!

最后更新:2024年12月 - 完整项目结构,包含 FlashMLA 和 CuTLASS 专门模块

Contributors

shizhengLi

47 commits

shizhengLi/cuda-triton-learning

CUDA & Triton Learning Project: Flash Attention 实现探索

Python

43

47 commits

updated Aug 14, 2025

See the code

README

CUDA & Triton Learning: Flash Attention 与高性能算子实现

本项目致力于深入学习高性能 GPU 算子的设计与实现,以 Flash Attention 为核心案例,通过分析多种实现方式来掌握 CUDA 并行编程和 Triton 算子开发技能。

项目特色

  • 理论与实践结合:从数学原理到工程实现的完整学习路径
  • 多框架对比:Python、Triton、CUDA、CuTLASS 四种实现方式的深度分析
  • 前沿技术探索:集成 DeepSeek FlashMLA 等业界最新高性能实现
  • 系统性学习:专门的 CuTLASS 3.x 学习模块
  • 生产级实践:从算法到产品的完整工程思维

🗂️ 项目结构

cuda-triton-learning/
├── 📚 docs/                          # 详细学习文档
│   ├── flash_attention_study/        # Flash Attention 算法深度学习
│   │   ├── 01_theory.md              # 理论原理详解
│   │   ├── 02_v1_vs_v2.md            # 版本对比分析
│   │   ├── 03_implementation.md      # 多实现深度分析
│   │   └── 04_optimization.md       # 优化指南
│   │
│   ├── flashmla_study/               # FlashMLA 生产级实现
│   │   ├── 01_flashmla_overview.md   # DeepSeek FlashMLA 深度解析
│   │   └── README.md                 # FlashMLA 学习指南
│   │
│   ├── cutlass_study/                # CuTLASS 3.x 高性能编程
│   │   ├── 01_introduction.md        # CuTLASS 入门指南
│   │   ├── 02_programming_basics.md  # CuTe 编程基础
│   │   └── README.md                 # CuTLASS 学习指南
│   │
│   └── learning_plan.md              # 11周学习计划
│
├── 💻 代码实践/                        # 动手实践代码
│   ├── cuda_basics/                  # CUDA 编程基础
│   │   ├── 01_hello_cuda.cu         # CUDA 入门
│   │   ├── 02_vector_add.cu         # 向量加法
│   │   ├── 03_matrix_multiply.cu     # 矩阵乘法与共享内存
│   │   ├── 04_parallel_reduction.cu  # 并行规约算法
│   │   └── 05_stream_overlap.cu     # 流重叠优化
│   │
│   ├── triton_basics/                # Triton 编程基础
│   │   ├── 01_vector_add.py         # Triton 向量加法
│   │   └── 02_matrix_multiply.py     # Triton 矩阵乘法
│   │
│   ├── cutlass_basics/               # CuTLASS 编程实践
│   │   ├── 01_gemm_basic.cu         # CuTLASS 基础 GEMM
│   │   ├── 02_cute_tensor.cu        # CuTe 张量操作
│   │   └── Makefile                 # 编译配置
│   │
│   └── flash_attention/              # Flash Attention 实现
│       ├── naive/                    # 朴素实现
│       ├── flash_v1/                 # Flash Attention v1
│       └── flash_v2/                 # Flash Attention v2 (Triton)
│
├── 🔬 参考项目/                        # 高价值参考实现
│   ├── tiny-flash-attention/         # 教育性多语言实现 (submodule)
│   │   ├── flash_attention_py/       # Python + Triton 实现
│   │   ├── flash_attention_cuda/     # CUDA 实现
│   │   └── flash_attention_cutlass/  # CuTLASS 实现
│   │
│   └── FlashMLA/                     # DeepSeek 生产级实现 (submodule)
│       ├── csrc/                     # CUDA C++ + CuTLASS 核心
│       ├── flash_mla/                # Python 接口
│       └── benchmark/                # 性能测试
│
├── 🧪 实验工具/                        # 辅助工具
│   ├── benchmarks/                   # 性能测试
│   ├── utils/                        # 工具函数
│   └── requirements.txt              # Python 依赖
│
└── 📋 配置文件/                        # 项目配置
    ├── setup.md                      # 环境配置指南
    └── README.md                     # 本文件

🎯 学习路径

🔰 基础路径 (新手友好)

适合:CUDA/GPU 编程初学者

Week 1-2: CUDA 基础
├── cuda_basics/ 示例学习
├── docs/learning_plan.md 前4周内容
└── 实践:基础 CUDA 程序

Week 3-4: Flash Attention 理论
├── docs/flash_attention_study/01_theory.md
├── flash_attention/naive/ 实现
└── 实践:朴素 Attention 实现

Week 5-6: Triton 入门
├── triton_basics/ 示例
├── flash_attention/flash_v2/ Triton 实现
└── 实践:Triton Flash Attention

🔥 进阶路径 (技术深入)

适合:有 CUDA 基础的开发者

Week 1-3: Flash Attention 全景
├── docs/flash_attention_study/ 完整学习
├── tiny-flash-attention/ 多实现对比
└── 实践:性能对比分析

Week 4-6: CuTLASS 深度学习
├── docs/cutlass_study/ 系统学习
├── cutlass_basics/ 实践编程
└── 实践:自定义 GEMM 实现

Week 7-8: FlashMLA 生产实践
├── docs/flashmla_study/ 深度解析
├── FlashMLA/ 源码分析
└── 实践:性能优化实验

🚀 专家路径 (前沿技术)

适合:GPU 高性能计算专家

并行学习:
├── FlashMLA 源码深度分析
├── CuTLASS 3.x 高级特性
├── Hopper 架构优化技术
└── 自定义算子开发实践

项目目标:
├── 实现生产级 Attention 变体
├── 优化现有算子实现
├── 贡献开源项目
└── 发表技术博客

🚀 快速开始

环境配置

# 1. 克隆项目
git clone <your-repo-url>
cd cuda-triton-learning

# 2. 初始化子模块
git submodule update --init --recursive

# 3. 配置 Python 环境
conda create -n flash_attention python=3.8
conda activate flash_attention
pip install -r requirements.txt

# 4. 验证 CUDA 环境
nvcc --version  # 需要 CUDA 11.0+
nvidia-smi      # 检查 GPU

验证安装

# 测试 CUDA 基础
cd cuda_basics
nvcc 01_hello_cuda.cu -o hello_cuda && ./hello_cuda

# 测试 Triton
cd ../triton_basics
python 01_vector_add.py

# 测试 tiny-flash-attention
cd ../tiny-flash-attention/flash_attention_py
make

# 测试 FlashMLA (需要 Hopper GPU)
cd ../../FlashMLA
python tests/test_flash_mla.py

🔬 核心参考项目

🎓 tiny-flash-attention

教育导向的多语言实现

价值:

  • Python:算法原理理解的最佳起点
  • Triton:高性能 GPU 编程入门
  • CUDA:底层优化实践
  • CuTLASS:模板化高性能计算

学习重点:

# 从简单到复杂的学习路径
tiny-flash-attention/
├── flash_attention_py/     # 从这里开始
├── flash_attention_triton/ # 然后学习 Triton
├── flash_attention_cuda/   # 深入 CUDA 优化
└── flash_attention_cutlass/ # 最后掌握 CuTLASS

🚀 FlashMLA

DeepSeek 的生产级 MLA 实现

价值:

  • 极致性能:H800 SXM5 上 660 TFLOPS
  • Hopper 优化:最新 GPU 架构深度利用
  • 工程实践:生产环境的完整考量
  • 技术前沿:MLA 架构的最佳实现

学习重点:

// 生产级代码的工程实践
FlashMLA/
├── csrc/kernels/        # 核心 Kernel 实现
├── csrc/cutlass/        # CuTLASS 3.x 应用
├── flash_mla/           # Python 接口设计
└── benchmark/           # 性能测试体系

📊 技术对比分析

实现方式对比

实现方式学习难度性能水平工程价值推荐指数
Python (Naive)⭐⭐⭐⭐⭐⭐⭐⭐⭐
Triton⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
CUDA⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
CuTLASS⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
FlashMLA⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

学习价值分析

技术方向核心价值应用场景职业发展
Flash Attention 算法理论基础研究开发算法工程师
Triton 编程高效开发快速原型AI 系统工程师
CUDA 优化深度控制极致性能GPU 编程专家
CuTLASS 工程生产级质量大规模部署高性能计算专家
FlashMLA 实践前沿技术商业应用技术领导者

🛠️ 实践项目推荐

Level 1: 基础实验

# 项目 1: Flash Attention 性能对比
目标: 理解不同实现的性能特征
任务: 
- 实现朴素 Attention
- 使用 Triton 优化
- 对比分析性能差异
- 绘制性能曲线图

Level 2: 进阶开发

// 项目 2: 自定义 CUDA Kernel
目标: 掌握 CUDA 优化技术
任务:
- 实现 Flash Attention CUDA 版本
- 应用共享内存优化
- 使用 Tensor Core 加速
- 性能调优和分析

Level 3: 高级工程

// 项目 3: CuTLASS 算子开发
目标: 学习生产级开发
任务:
- 基于 CuTLASS 实现自定义算子
- 应用 CuTe 张量抽象
- 集成 TMA 内存加速
- 对标 FlashMLA 性能

Level 4: 前沿探索

// 项目 4: FlashMLA 扩展
目标: 推动技术边界
任务:
- 分析 FlashMLA 源码
- 实现新的 Attention 变体
- 优化特定应用场景
- 贡献开源社区

📚 学习资源

📖 核心文档

本项目提供三个专门的学习指南:

  1. Flash Attention 学习指南 - 算法理论和基础实现
  2. FlashMLA 学习指南 - 生产级实现和工程实践
  3. CuTLASS 学习指南 - 高性能编程框架

📄 技术论文

🔗 技术文档

🎯 学习成果验证

🥉 入门级 (1-2 月)

  • 理解 Flash Attention 的核心原理
  • 能够运行和修改基础示例
  • 掌握 CUDA 和 Triton 的基本概念
  • 完成性能对比实验

🥈 进阶级 (3-6 月)

  • 独立实现 Flash Attention CUDA 版本
  • 掌握 CuTLASS 编程基础
  • 理解 FlashMLA 的实现策略
  • 能够进行性能调优

🥇 专家级 (6+ 月)

  • 基于 CuTLASS 开发自定义算子
  • 深度理解 FlashMLA 的优化技术
  • 能够解决复杂的性能问题
  • 具备指导他人的能力

🤝 贡献指南

欢迎贡献

  1. 代码示例:更多实践性的代码示例和教程
  2. 性能分析:不同硬件平台的性能测试结果
  3. 文档完善:改进现有文档,添加新的学习材料
  4. 问题解答:帮助其他学习者解决技术问题

提交方式

# Fork 项目并创建新分支
git checkout -b feature/your-contribution

# 提交更改
git commit -m "Add: your contribution description"

# 创建 Pull Request
# 请详细描述您的贡献内容和价值

🏆 致谢

🎓 教育资源贡献者

🚀 技术创新贡献者

🔬 学术贡献者

  • Tri Dao 等人 - Flash Attention 的原创性算法贡献
  • OpenAI Triton 团队 - 推动 GPU 编程范式的革新
  • NVIDIA CuTLASS 团队 - 高性能计算模板库的开发

🌟 社区贡献者

  • 所有为本项目提供反馈、建议和贡献的开发者和研究者

🚀 开始您的高性能 GPU 编程学习之旅!

从基础概念到前沿实现,从算法理论到工程实践,本项目将帮助您系统掌握现代 GPU 计算的核心技术,成为高性能计算领域的专家。

选择您的学习路径,探索 GPU 计算的无限可能!

最后更新:2024年12月 - 完整项目结构,包含 FlashMLA 和 CuTLASS 专门模块

Contributors

shizhengLi

47 commits

Languages

Python

78.1%

Cuda

18.0%

C++

2.5%