🟢 🔧 硬件 发布于: · 3 分钟阅读 ·

AMD详解MI355X的占用率数学:高占用率并非峰值吞吐量的必要条件

编辑插图:AMD CDNA4 MI355X GPU占用率数学与内核代码优化

AMD ROCm团队发布了CDNA4架构GPU占用率手动计算技术指南。核心发现:MI355X上的矩阵密集型内核在仅12%占用率时即可达到峰值吞吐量——对于来自CUDA生态系统的从业者而言,这是一个反直觉的结果。

🤖

本文由人工智能基于一手来源生成。

AMD ROCm团队发布了一份关于CDNA4架构(具体针对MI355X加速器)GPU占用率计算的深度技术指南。该文档面向优化推理或训练自定义内核的GPU内核工程师,并带来了一个对来自NVIDIA CUDA生态系统从业者而言直接违反直觉的发现。

什么是占用率,为何要手动计算?

GPU占用率衡量可用资源中被wavefront(CUDA术语中称为warp)实际填充的比例。高占用率长期以来被视为高吞吐量的先决条件——更多活跃wavefront意味着更多隐藏内存访问延迟的机会。

指南作者持不同观点:占用率完全可以从已知的硬件限制和内核消耗的资源中推导出来,因此应该从第一原理来理解,而非将其视为性能分析工具中的不透明指标。目标是培养能在运行内核前就预测占用率的工程师。

四个限制因素与CDNA4架构

MI355X由256个计算单元组成,分布于8个XCD芯片,主频2.4 GHz。每个CU包含4个SIMD单元,每个SIMD有64个lane,各自拥有私有寄存器堆。

指南识别了决定占用率上限的四种资源:

向量寄存器(VGPR) — 在CDNA4上,每个lane的寄存器堆为512个条目,寄存器在普通寄存器和累加器寄存器间共享。这与CDNA3存在重要区别,在CDNA3上累加器寄存器(AccVGPR)是独立的资源池——AMD强调,从上一代迁移知识的工程师必须更新这一假设。

标量寄存器(SGPR) — 每个SIMD单元约800个,用于wavefront内所有lane共享的统一值。

本地共享内存(LDS) — 从CDNA3的64 KB增至CDNA4的每计算单元160 KB

工作组槽位 — 每个CU可同时活跃工作组数量的硬件限制。

反直觉发现:低占用率,峰值吞吐量

指南的核心发现直接与CUDA优化经验中的直觉相悖。AMD针对MXFP8运算的微基准测试——MI355X在此可达约5 PFLOP/s — 显示具有高指令级并行度(ILP=8)的内核在仅12%占用率下维持4.82 PFLOP/s。这一数值超过了ILP=2内核在96%占用率下所能达到的任何性能。

原因在于:CDNA4上的矩阵单元速度足够快,只需少量活跃wavefront即可使流水线饱和。当内核通过ILP而非wavefront并行性成功隐藏延迟时,高占用率不仅不必要——由于寄存器堆的限制,高占用率往往是不可能的,且不会带来任何收益。

MXFP8 GEMM示例:同一内核,两代硬件

指南包含一个具体示例:一个使用256线程tile、消耗128个VGPR和32 KB LDS的MXFP8 GEMM内核。

CDNA3(64 KB LDS)上:该内核受LDS限制,达到25%占用率 — 每个CU只能同时活跃两个这样的内核,因为它们共同耗尽了LDS资源。

CDNA4(160 KB LDS)上:同一内核不再受LDS限制。现在瓶颈变成了寄存器,占用率上升至50% — 每个CU可以有四个实例同时运行。相同的源代码,不同的限制因素,占用率翻倍。

背景:AMD缩小与CUDA的文档差距

本指南是AMD更广泛努力的一部分——改善ROCm软件文档,降低从NVIDIA生态系统迁移工程师的门槛。CUDA在深度技术文档方面拥有数十年的积累优势——资源限制及其对占用率影响的细节已在NVIDIA架构中有充分记录,而对于AMD GPU,这些信息此前需要通过实验性研究或查阅内部代码才能获得。

此类从第一原理出发的指南正是为了填补这一空白:知道需要什么的工程师现在可以分析性地推导占用率,无需运行内核,从而加速AMD基础设施上生产AI模型的迭代优化周期。

常见问题

为何MI355X上的矩阵密集型内核在低占用率时能达到峰值吞吐量?
CDNA4上的矩阵单元速度足够快,即使只有少量活跃wavefront也能使流水线饱和。微基准测试显示,ILP=8时在仅12%占用率下维持4.82 PFLOP/s——超过ILP=2在96%占用率时的性能。
MI355X上有哪四个占用率限制因素?
四个限制因素是:向量寄存器(VGPR,每lane 512个条目,在普通寄存器和累加器寄存器间共享)、标量寄存器(SGPR,每SIMD约800个)、本地共享内存(LDS,每计算单元160 KB)以及工作组槽位数量。
MI355X在LDS方面与CDNA3有何不同?
CDNA4 MI355X将LDS从CDNA3的64 KB增至每计算单元160 KB。在CDNA3上受LDS限制、占用率为25%的同一个MXFP8 GEMM内核,在CDNA4上达到50%占用率,因为现在瓶颈变成了寄存器。