AMD:Gluon块级模型在Instinct MI355上实现MXFP4 5.255 TFLOPS GEMM内核
AMD ROCm团队发布了在MI355 GPU上使用Gluon编程模型编写高性能GEMM内核的教程。经过优化的FP16内核达到1.489 TFLOPS,MFMA效率98.75%,扩展到BF8(3.257 TFLOPS)和MXFP4(5.255 TFLOPS)展示了对现代AI工作负载的适用性。教程包含将L2缓存未命中从530万减少到410万的工作组重映射与swizzle技术。
本文由人工智能基于一手来源生成。
AMD ROCm博客团队于2026年5月22日发布了详细教程,介绍如何在Gluon编程模型中为AMD Instinct MI355 GPU编写高性能GEMM(通用矩阵乘法)内核。教程记录了FP16 GEMM达到98.75% MFMA效率(1.489 TFLOPS)的过程,以及扩展至现代低精度格式的方案:BF8达3.257 TFLOPS,MXFP4达5.255 TFLOPS。
Gluon是什么,与HIP有何区别?
Gluon是AMD面向CDNA和RDNA架构的GPU内核开发块级编程模型。语法受CUDA Tile API及Triton块级抽象启发,但针对CDNA硬件特性——MFMA矩阵乘法单元、多XCD小芯片拓扑、L2缓存结构。
与标准HIP程序的区别:HIP提供类C++的CUDA等效API,由编译器优化内核。Gluon则要求开发者显式指定张量布局、流水线阶段、每个线程块的寄存器预算以及内存访问的swizzle模式。开发者工作量更大,但可获得更精细的控制——这对于实现通过HIP标准优化通常无法达到的95%以上MFMA效率至关重要。
Gluon是ROCm生态系统的开源组成部分,自ROCm 7.0版本(2026年1月)起通过rocm-developer-tools包提供。
优化后的FP16内核如何达到1.489 TFLOPS?
MI355是AMD CDNA 4代中最新的数据中心GPU,采用8 XCD小芯片拓扑。理论FP16峰值吞吐量约为1.508 TFLOPS(MFMA单元理想满载时)。教程展示了达到1.489 TFLOPS(理论值的98.75%)的步骤:
- 块级分块:张量A(M×K)和B(K×N)被划分为128×128大小的块,与MFMA指令粒度匹配。
- 流水线阶段:计算(MFMA指令)和内存加载(LDS到寄存器)交叉执行于4级流水线,隐藏内存延迟。
- 寄存器预算:开发者显式限制每个线程块的寄存器数量(256 SGPR + 1024 VGPR),避免寄存器溢出到L1。
- MFMA指令选择:教程使用
mfma_f32_16x16x16f16,一个时钟周期内使用16×16 FP16输入计算16×16乘积块。
经过这些优化,内核在8192×8192×8192 GEMM上达到1.489 TFLOPS,约为朴素HIP实现(520 TFLOPS)的3倍。
BF8和MXFP4扩展带来了什么?
BF8(BFloat8)是专为LLM训练设计的8位浮点格式,具有5位尾数和3位指数。MI355通过mfma_f32_16x16x32bf8指令原生支持BF8 GEMM,该指令一个时钟周期内计算32×16 BF8输入的16×16乘积(因元素大小减半,密度是FP16的两倍)。教程内核达到3.257 TFLOPS BF8吞吐量,适用于大型语言模型的预训练。
MXFP4(微缩放FP4)是更激进的4位格式,按组共享指数(通常32个元素)。相比FP16可将内存带宽降低4倍,同时在LLM推理中保持可接受的质量。AMD MI355通过mfma_f32_16x16x64mxfp4指令支持MXFP4 GEMM。教程内核达到5.255 TFLOPS MXFP4吞吐量,对MI355上前沿模型的推理部署具有重要意义。
工作组重映射和swizzle优化的作用
CDNA 4架构有8个XCD小芯片(加速计算芯片),共享L2缓存,但每个芯片有独立的L1。标准线性工作组映射会导致缓存抖动,因为相邻工作组访问L2中不相邻的内存区域。
教程引入工作组重映射:通过空间填充曲线(希尔伯特曲线变体)变换工作组ID,使逻辑ID相邻的工作组映射到相邻的L2缓存区域。加上内存访问中的swizzle模式,将访问均匀分布到HBM通道。结果:8192×8192 GEMM的L2缓存未命中从530万降至410万(-23%)。在直接吞吐量上,对内存受限的GEMM区域提升约+6%。
教程中刻意回归的示例是什么?
教程包含一个寄存器预算不正确的诊断示例——一个表面上应该更快但实际上吞吐量下降73%的内核(FP16 384 TFLOPS而非1.489 TFLOPS)。原因:当开发者为每个线程块分配过多寄存器时发生的寄存器溢出。
目的是教导开发者如何识别和诊断实际内核中的寄存器溢出。教程展示了如何使用rocprof分析器通过具体硬件计数器检测溢出,以及如何修改Gluon代码加以解决。这在GPU教程中是罕见的做法,因为教程通常只展示成功示例——诊断示例很有价值,因为它展示了如何解决生产中的实际性能问题。
常见问题
- 什么是Gluon编程模型?
- Gluon是AMD面向CDNA和RDNA架构的块级GPU内核开发编程模型,为开发者提供对张量布局、流水线阶段和寄存器预算的显式控制。与HIP的区别:开发者需控制编译器通常隐藏的细节,工程投入更大但可实现更高性能。
- MFMA效率98.75%意味着什么?
- MFMA(矩阵融合乘加)是AMD CDNA架构上用于矩阵乘法的硬件指令。98.75%的效率意味着内核利用了MFMA单元理论峰值吞吐量的98.75%,非常接近硬件上限。
- 什么是MXFP4,为何重要?
- MXFP4(微缩放FP4)是一种4位浮点格式,按组共享指数(通常32个元素一组)。相比FP16可将内存带宽需求降低4倍,同时在LLM推理中保持可接受的质量。AMD MI355通过MFMA指令原生支持MXFP4。