CUDA MODE 资源流
这里收集了与CUDA相关的材料(书籍、论文、博客文章、YouTube视频、推文、实现等)。我们还收集了有关性能优化和内核开发的高级工具的信息,如Triton和torch.compile()
...总之是一切能让GPU飞起来的东西。
你知道我们应该添加的好资源吗?请参阅如何贡献。
讲座/阅读小组直播课程
你可以在我们Discord服务器的频道列表(侧边栏)的Events选项中找到即将举行的讲座列表。
每周讲座的录像会发布在我们的YouTube频道上。各个讲座的材料(代码、幻灯片)可以在lectures仓库中找到。
CUDA入门
- CUDA C和C++简易入门
- 更简单的CUDA入门
- CUDA工具包文档
- 基本术语:线程块、线程束、流式多处理器:维基:线程块,CUDA之旅
- GPU性能背景用户指南
- OLCF NVIDIA CUDA培训系列,每节课的演示文稿底部可以找到讲座录像;练习
- GTC 2022 - CUDA:新特性及展望 - Stephen Jones
- 介绍视频:编写在GPU上快速运行的代码
进阶接触
论文、案例研究
- CUDA内核融合案例研究:在NVIDIA Hopper架构上使用CUTLASS库实现FlashAttention-2
- 如何优化CUDA矩阵乘法内核以达到cuBLAS级性能:工作日志
- 高性能矩阵乘法剖析
书籍
- 大规模并行处理器编程:实践方法
- CUDA示例:通用GPU编程入门;代码
- CUDA手册
- 着色器之书 引导您穿越片段着色器抽象复杂的世界(不是cuda但与GPU相关)
- HPC艺术 4本关于HPC的书籍,不特别涉及GPU,但lessons广泛适用
CUDA课程
- HetSys:使用GPU和其他加速器的异构计算系统编程
- 异构并行编程课 (YouTube播放列表) 伊利诺伊大学Wen-mei Hwu教授
- "大规模并行处理器编程:实践方法"官方YouTube频道,课程播放列表:应用并行编程
- 并行计算机编程;涵盖CUDA和CPU并行。使用开放课程版本,你甚至可以提交自己的解决方案进行测试和基准测试。
CUDA大师
Tri Dao
- x:@tri_dao,gh:tridao
- Dao-AILab/flash-attention,论文
- state-spaces/mamba,论文:Mamba:具有选择性状态空间的线性时间序列建模,最小实现:mamba-minimal
Tim Dettmers
Sasha Rush
- x:@srush_nlp,gh:srush
- Sasha Rush的GPU谜题,dshah3的CUDA C++版本和讲解视频
- Mamba:艰难之路,代码:srush/annotated-mamba
实践
PyTorch性能优化
- 使用PyTorch加速生成式AI:Segment Anything,快速版
- 使用PyTorch加速生成式AI II:GPT,快速版
- 速度,Python:二选一。CUDA图如何实现深度学习的快速Python代码
- Meta的生产环境PyTorch模型性能调试
PyTorch内部机制与调试
- TorchDynamo深度解析
- PyTorch编译器故障排除
- PyTorch内部机制
- PyTorch 2内部机制
- 理解GPU内存:1:可视化所有随时间变化的分配,2:查找和移除引用循环
- 使用快照调试内存:使用快照调试PyTorch内存使用
- CUDA缓存分配器:https://zdevito.github.io/2022/08/04/cuda-caching-allocator.html
- 跟踪分析器:面向大众的PyTorch跟踪分析
- 整体跟踪分析(HTA),gh:facebookresearch/HolisticTraceAnalysis
代码/库
基础知识
- Triton编译器教程
- CUDA C++编程指南
- PyTorch:自定义C++和CUDA扩展,代码:pytorch/extension-cpp
- PyTorch C++ API
- pybind11文档
- NVIDIA Tensor Core编程
- GPU编程:何时、为什么以及如何?
- GPU计算原理 | GTC 2021(比2022版本更基础)
- CUDA编程原理 | GTC 2022
- CUDA内核优化 第1部分 第2部分
- PTX和ISA编程指南(V8.3)
- 编译器资源管理器:查看PTX:除以256 -> 右移8位示例
性能分析
- Nsight Compute 性能分析指南
- mcarilli/nsight.sh - 用于PyTorch脚本的常用Nsight Systems性能分析命令
- 使用Nsight Systems进行GPU应用性能分析
Python GPU计算
- PyTorch
- Trtion,GitHub: openai/triton
- numba @cuda.jit
- Apache TVM
- JAX Pallas
- CuPy 兼容NumPy的GPU计算
- NVidia Fuser
- Codon @gpu.kernel,GitHub: exaloop/codon
- Mojo(Modular商业MAX平台的一部分)
- NVIDIA Python绑定:CUDA Python(调用NVRTC编译内核、内存分配、复制、启动内核等),cuDNN前端(FE) API,CUTLASS Python接口
高级主题、研究、编译器
- TACO:张量代数编译器,GitHub: tensor-compiler/taco
- Mosaic编译器 用于稀疏和密集张量代数的C++ DSL(基于TACO构建),论文,演示
新闻
技术博客文章
- 协作组:灵活的CUDA线程编程(2017年10月4日)
- 机器学习编译器和优化器的友好介绍(2021年9月7日)
硬件架构
CUDA-MODE社区项目
环形注意力
- 请参阅我们的ring-attention仓库
并行扫描
- GPU Gems:使用CUDA进行并行前缀和(扫描),PDF版本(2007),实现:Stack Overflow,更好的实现:mattdean1/cuda
- 使用Tensor Core单元加速归约和扫描
- Thrust:前缀和,参考:扫描变体
- CUB,cccl的一部分:NVIDIA/cccl/tree/main/cub
- SAM算法:高阶和基于元组的大规模并行前缀和(仅限非商业用途)
- CUB算法:具有解耦回溯的单程并行前缀扫描
- 组实验:johnryan465/pscan,andreaskoepf/pscan_kernel
Triton内核/示例
- 使用Triton实现自定义内核以实现更快QLoRA训练的
unsloth
- 相对位置注意力的自定义实现(链接)
- Tri Dao的Flash Attention的Triton实现:flash_attn_triton.py
- YouTube播放列表:Triton大会2023
- 为不同LLM使用不同Triton内核的LightLLM
如何贡献
要分享有趣的CUDA相关链接,请为此文件创建一个拉取请求。参见GitHub文档中的编辑文件。
或者在CUDA MODE的Discord服务器上联系我们:https://discord.gg/cudamode