README
🚀 GPU 编程读书会
🎯 目标
通过动手实践、小组讨论和具体实现,从基础概念出发,深入理解 GPU 编程,亲手编写 CUDA Kernel,掌握现代 AI 和科学计算背后的加速原理。
✅ 前置要求
为了更好地参与学习,你需要具备以下基础: 💻 Python & C++:熟悉基本语法及内存操作
📐 线性代数:了解向量和矩阵乘法(点积、行列变换等)
🧠 核心概念
我们将拆解 GPU 的执行模型,并理解其如何映射到实际计算任务中:
- Kernels(核函数) – 你在 GPU 上运行的代码
- Threads(线程) – 最小的执行单元
- Blocks(线程块) – 线程的集合
- Grids(网格) – 线程块的集合
- Warps(线程束) – 32 个线程组成的调度单元,性能优化的关键
此外,我们还将学习不同类型的内存(全局、共享、局部)和 CPU 与 GPU 之间的数据传输模式。
📚 学习资料
CUDA 入门课程(第 1–5 章)
- Infatoshi 的 YouTube 教学 https://www.youtube.com/watch?v=86FAWCzIe_4
- 对应代码示例和 Notebook https://github.com/Infatoshi/cuda-course/
- NVIDIA 官方博客:更简单的 CUDA 入门 https://developer.nvidia.com/blog/even-easier-introduction-cuda/
🛠️ 实践项目
在读书会期间,我们将一起阅读代码、动手实现并调试优化。计划中的项目包括: Hello CUDA World
编写并运行你的第一个 CUDA kernel
通过打印输出理解线程层级结构
向量加法(Vector Add)
利用多个线程并行计算
与 CPU 版本对比性能差异
矩阵乘法(Matrix Multiplication)
用全局内存实现基础的 dense matmul
逐步优化:引入 tiling 和共享内存
进阶:探索 warp-level 优化策略
✨ 学习成果
完成本读书会后,你将能够: 建立清晰的 GPU 编程心智模型
从零编写简单的 CUDA 核函数
学会优化内存访问和线程利用率
为进一步学习 Triton、Cutlass 等库做好准备,甚至可以为 PyTorch/JAX 等框架编写自定义算子
cuda-samples/Samples/0_Introduction/matrixMul/matrixMul.cu at master · NVIDIA/cuda-samples 我看 nv 官方的我也懵 https://github.com/NVIDIA/cuda-samples/blob/master/Samples/0_Introduction/matrixMul/matrixMul.cu
https://developer.nvidia.com/blog/using-shared-memory-cuda-cc/ 那我看这个。
nunchaku/src/kernels at main · mit-han-lab/nunchaku 我觉得 看懂这个 kernel 就直接专家了 https://github.com/mit-han-lab/nunchaku/tree/main/src/kernels https://hanlab.mit.edu/
想要预习的同学看这几个链接就好了
https://github.com/KevinCheung2259/CUDA-Lession2/tree/main/cuda-learning https://segmentfault.com/a/1190000007533157 https://leetgpu.com/challenges/monte-carlo-integration https://www.youtube.com/watch?v=oQT7IC0x254
https://segmentfault.com/a/1190000007533157
https://dev.to/drxven/megakernel-compiling-llms-for-low-latency-inference-130c https://github.com/mirage-project/mirage https://ericdarve.github.io/