设为首页
收藏本站
切换到窄版
地模论坛
BBS
登录
立即注册
地模论坛
»
地模论坛
›
高性能计算相关
›
高性能计算
›
深度长文:“深入NVIDIA GPU:高性能矩阵乘法(matmul) ...
返回列表
发布新帖
查看:
29
|
回复:
0
深度长文:“深入NVIDIA GPU:高性能矩阵乘法(matmul)内核剖析”
Bosch
Bosch
当前离线
积分
54
10
主题
7
回帖
54
积分
注册会员
注册会员, 积分 54, 距离下一级还需 146 积分
注册会员, 积分 54, 距离下一级还需 146 积分
积分
54
发消息
发表于 2025-9-30 10:46:56
|
查看全部
|
阅读模式
转自微博用户@蚁工厂
————————————————————————————
深度长文:“深入NVIDIA GPU:高性能矩阵乘法(matmul)内核剖析”
网页链接
作者是前微软和DeepMind软件/机器学习工程师Aleksa Gordić.
下面是作者写的推荐语:
如果你想深入了解如何在CUDA中编写最顶尖的(state-of-the-art)矩阵乘法内核,请继续读下去。
(请记住,matmul 是Transformer模型在训练和推理过程中执行的唯一且最重要的操作。NVIDIA绝大多数的算力都消耗在这上面。效率上每提升1%,就能节省下相当于好几座核反应堆的能源
)
我再次发现,我低估了写这篇文章所需的工作量。这简直又是一本小册子了(笑)。足足有47张图!
我在这篇文章中涵盖了以下内容:
1️⃣GPU架构的基础知识,重点是内存层次结构。我为你建立了关于GMEM、SMEM和L1/L2缓存的心智模型,并将其与CUDA编程模型联系起来。在此过程中,我们还探讨了GPU的“光速”(理论性能上限)以及它如何受到功耗的限制——让硬件的真实情况融入到我们的模型中。
2️⃣PTX/SASS(GPU汇编),以及如何引导编译器生成我们真正想要的代码(比如,循环展开了吗?我们用上像 LDG.128 这样的向量化加载指令了吗?等等)。我为一个简单的 matmul 内核,极其详尽地注释了一个PTX/SASS示例。即使你是编译器新手,也应该会觉得这部分很有用。
(我其实在两个编译器里都发现了不少效率低下的地方——真有趣!)
3️⃣许多核心概念,例如分块/波次量化(tile/wave quantization)、占用率(occupancy)、指令级并行(ILP)、Roofline模型等。同时,还帮助你建立对一些基本等价关系的直觉:比如点积可以看作是部分外积的和,以及为什么方形的分块(tile)是实现高算术强度的理想形状等。
4️⃣Warp Tiling(线程束平铺)方法——在假设你不能使用Tensor Cores、TMA、异步内存指令和bf16数据类型的前提下,这是一种近乎SOTA的技术。它仅仅依靠CUDA Cores、寄存器和共享内存,就将GPU的性能发挥到极致。
5️⃣最后,我们进入了Hopper(H100)架构的世界:TMA(张量内存加速器)、Swizzling(地址交错技术)、Tensor Cores和wgmma指令、异步加载/存储流水线、像希尔伯特曲线这样的调度策略、利用TMA多播的集群(Clusters)、更快的PTX屏障(barriers)等等。
和往常一样,文章里有大量的示例和丰富的图解。这是我第一次看到 warp tiling 内核时,能脱口而出“哦,我完全懂了”的时刻。我只是需要把我脑海中的图像变成一张真正的图片。
几年前,我深受Si_Boehm 的一篇关于 matmul 工作原理的精彩博客的启发,但我也发现其中存在一些错误和不清晰的解释,而且内容也有些过时了。在pranjalssh 的杰出工作(他为H100构建了SOTA内核)和我自己的研究基础上,我完成了这篇文章。
回复
举报
返回列表
发布新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
地模论坛
© 2001-2025
Discuz! Team
. Powered by
Discuz!
W1.5
京ICP备14024088号
关灯
在本版发帖
返回顶部
快速回复
返回顶部
返回列表