gau-nernst/learn-cuda

Learn CUDA with PyTorch

解决的问题

本仓库为使用 PyTorch 的用户提供了编写高性能 CUDA 内核的结构化学习路径。它通过提供常见 AI 相关操作的实用示例,弥合了高级 PyTorch 代码与低级 GPU 硬件加速之间的差距。

工作原理

该项目由一系列逐步进阶的示例(01 到 09)组成,实现了基本的 GPU 操作。这些示例涵盖从简单的向量加法到针对特定 GPU 架构(SM80、SM100、SM120)优化的复杂操作,如 Flash Attention 和矩阵乘法。同时,还包含使用 Nsight Compute、PyTorch 分析器和 Perfetto 等性能分析工具优化内核性能的指导。

适用人群

希望学习如何编写自定义 CUDA 内核以优化 PyTorch 模型的开发者和研究人员,以及对 NVIDIA GPU 底层硬件架构感兴趣的用户。

主要亮点

  • 架构特定优化:涵盖不同 SM 版本及 CDNA3 的矩阵乘法示例。
  • 面向 AI 的基础操作:实现 Softmax、Flash Attention 和行/块缩放矩阵乘法。
  • 硬件深度解析:详细解释 GPU 内存层次结构(全局内存、L2、共享内存和寄存器)以及 SIMT 执行模型。
  • 性能分析工具包:提供使用 ncucompute-sanitizer 进行调试和性能调优的实用指南。

相关

  • 项目
  • 项目
  • 项目
  • 项目