AMD Instinct MI250 微架构深度解析:CDNA 2 双 GCD 设计与 ROCm 生态实践
【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build
本篇文章基于 ROCm 开源仓库中的官方微架构文档,系统讲解 AMD Instinct MI250 所采用的 CDNA 2 架构:从单个 Graphics Compute Die(GCD)的内部构成、计算单元与矩阵核心,到双 GCD 的 OAM 封装、节点级互联拓扑,并延伸至 ROCm 生态中与之对应的 LLVM target(gfx90a)、性能计数器与 CU 掩码配置等实战细节。读完本文,你将理解 MI250 的硬件规模如何换算为峰值算力,并掌握在 ROCm 环境下识别、配置与剖析该平台的关键依据。
CDNA 2 架构总览:面向 HPC 与 AI 的计算微架构
AMD Instinct MI250 GPU 的微架构基于AMD CDNA 2 架构。CDNA 2 专门面向计算类应用设计——包括高性能计算(HPC)、人工智能(AI)与机器学习(ML),覆盖从单台服务器到全球最大规模百亿亿次级(exascale)超级计算机的部署场景。整个系统架构围绕极致可扩展性与计算性能展开,其核心设计单位不再是传统意义上的"整颗 GPU",而是被称为 GCD 的计算裸片。
在 ROCm 兼容性矩阵(docs/compatibility/include/system-instinct.rst)中,MI250、MI250X 与 MI210 同属CDNA 2架构,LLVM 编译目标统一为gfx90a;而在 GPU 规格表 中,MI250 与 MI250X 的差异主要体现在启用的计算单元数量上(详见下文)。这一"一架构多型号"的布局,使 gfx90a 成为 MI200 系列在 ROCm 工具链中的统一代号。
单个 GCD 的内部结构
下图展示了 CDNA 2 架构中单个 GCD的构成。每个 GCD 是系统中的一个独立 GPU 设备,其内部组织可以概括为三个层次:顶/底部的 AMD Infinity Fabric 接口、左右两侧的 HBM 内存控制器,以及中央的计算单元阵列。
AMD Instinct MI250 单个 GCD 结构图
Infinity Fabric 接口与片上互联
在 GCD 的顶部与底部各有一个 AMD Infinity Fabric 控制器,用于将 GPU 裸片连接到节点内的其他系统级组件(详见"节点级架构"一节)。两个控制器各自可以驱动4 条 AMD Infinity Fabric 链路,其中底部控制器有一条链路可配置为 PCIe 链路。GPU 之间的每一条 Infinity Fabric 链路最高可运行在25 GT/sec,对应 16 位宽链路的峰值传输带宽为50 GB/sec(每个事务传输两个字节)。这一互联能力是后续双 GCD 封装与多卡 P2P 通信的物理基础。
HBM2e 内存控制器与带宽
在 GCD 的左右两侧,内存控制器将HBM2e 高带宽内存模块挂接到 GCD 上。MI250 采用 HBM2e 显存,每个 GCD 的峰值内存带宽高达 1.6 TB/sec,两个 GCD 聚合后理论峰值带宽为3.2 TB/sec。对于 HPC 与 AI 负载而言,如此高的内存带宽是保证矩阵运算与大规模数据搬运不"喂不饱"计算单元的关键。
计算单元(CU)与 SIMD 执行引擎
GCD 的中央区域由计算单元(Compute Unit,CU)阵列构成:
- MI250 每个 GCD 拥有 104 个激活的计算单元(GPU 规格表中对应 208 CUs / 104 per GCD;MI250X 则启用 110 个/GCD,共 220 个,见 gpu-specs.rst);
- 每个 CU 进一步划分为4 个 SIMD 单元,每条 SIMD 指令可处理16 个数据元素(以 FP64 数据类型计);
- 这使得单个 CU 每个时钟周期能够处理64 个工作项——即一个完整的wavefront(波前),峰值时钟频率1.7 GHz。
由此可推导出单 GCD 的向量指令 FP64 理论峰值:104 CUs × 128 FLOPs/clock/CU × 1.7 GHz ≈22.6 TFLOPS,两个 GCD 合计45.3 TFLOPS。
矩阵核心(Matrix Cores)
CDNA 2 的 CU 内还包含专门面向矩阵运算(如矩阵-矩阵乘法)的专用执行单元,即矩阵核心(Matrix Cores,MFMA 单元)。与向量指令相比,矩阵核心在同等时钟下可处理更多数据元素:FP64 矩阵指令的峰值性能达到90.5 TFLOPS(双 GCD 聚合)。在 HIP 编程模型中,这些单元通过 MFMA(Matrix Fused Multiply-Add)指令驱动,是 AI 推理与训练负载的主要算力来源(可参考 设备硬件术语表 中对 Matrix cores 与 AccVGPR 的定义)。
各数据类型峰值性能一览
下表汇总了 AMD Instinct MI250 OAM(OCP 开放加速器模块)两个 GCD 在不同数据类型与执行单元下的聚合峰值性能。中间列表示单个计算单元在每时钟周期退役一条 SIMD(或矩阵)指令时处理的数据元素个数;第三列为整个 OAM 模块的理论峰值 TFLOPS。
| 计算类型 / 数据类型 | FLOPS/CLOCK/CU | 峰值 TFLOPS |
|---|---|---|
| Matrix FP64 | 256 | 90.5 |
| Vector FP64 | 128 | 45.3 |
| Matrix FP32 | 256 | 90.5 |
| Packed FP32 | 256 | 90.5 |
| Vector FP32 | 128 | 45.3 |
| Matrix FP16 | 1024 | 362.1 |
| Matrix BF16 | 1024 | 362.1 |
| Matrix INT8 | 1024 | 362.1 |
值得注意的两点:
- 矩阵与向量的差距:同一数据类型下,矩阵指令的峰值是向量指令的 2~8 倍(FP64 为 2 倍,FP16/BF16/INT8 为 8 倍),这正是 MFMA 单元的价值所在;
- FP16/BF16/INT8 的突出地位:1024 FLOPS/clock/CU 的吞吐使 MI250 在 AI 工作负载(训练与推理)中具备超过 360 TFLOPS 的理论算力,符合 CDNA 2"面向 AI/ML 强化"的设计定位——这一点在后续 MI300 系列文档 中也有印证:CDNA 3 的矩阵核心在 FP16/BF16 上较 MI250X 再提升约 3 倍,且新增 FP8 支持。
此外,OAM 整体聚合的理论峰值内存带宽为3.2 TB/sec(每 GCD 1.6 TB/sec),与上表中的算力数据共同构成评估 MI250 平台算力密度的基础。
双 GCD 封装:一个 OAM 里的两个 GPU 设备
下图展示了 MI250 OAM 封装的模块框图。一个 OAM 封装内包含两个 GCD,而每一个 GCD 都构成系统中的一个独立 GPU 设备——这是 MI250 在软件层面最容易被误解的一点:一块物理卡上其实存在两个可独立寻址与调度的 GPU。
AMD Instinct MI250 双 GCD 架构图
封装内的两个 GCD 通过4 条 AMD Infinity Fabric 链路相连,每条链路理论峰值速率 25 GT/sec,因此两个 GCD 之间的峰值传输带宽为200 GB/sec,双向合计400 GB/sec。这一极高的片内互联带宽保证了跨 GCD 数据交换(例如经由 ROCm/HIP 的 peer-to-peer 访问)的开销被控制在极低水平,是双 GCD 架构能够被当作"准单卡"使用的关键。
从软件角度,每个 GCD 拥有独立的 HBM2e 栈、L2 缓存与命令处理器,ROCm 驱动会将其枚举为独立的设备;跨 GCD 的协同依赖 XGMI/Infinity Fabric 的 P2P 能力(见下节)。
节点级架构:PCIe 与 XGMI 的互联拓扑
下图展示了基于 AMD Instinct MI250 的典型节点级架构:双路 3rd Generation AMD EPYC 处理器 + 4 块 MI250 GPU。
AMD Instinct MI250 与第三代 AMD EPYC 处理器的节点级框图
主机连接:PCIe Gen 4 x16
MI250 OAM 通过PCIe Gen 4 x16链路(图中黄色连线)挂接到主机系统。关键细节包括:
- 每个 GCD 拥有独立的 PCIe x16 链路通向主机;
- 视服务器平台而定,GCD 可直接连接到 AMD EPYC 处理器,或通过可选的 PCIe Switch间接连接——后者可以释放更多 PCIe 通道供网络接口卡与存储设备使用;
- 需要特别留意:部分平台可能只提供 x8 接口给 GCD,这会显著降低可用的主机到 GPU 带宽,选型与性能评估时应予以确认。
GPU 间互联:Infinity Fabric P2P 网络
在 OAM 及其 GCD 之间,一个对等(Peer-to-Peer,P2P)网络允许 GPU 裸片之间通过 AMD Infinity Fabric 链路(图中黑色、绿色与红色连线)直接交换数据,无需经过主机内存。这些 16 位宽链路各自连接到 MI250 OAM 中的某一个 GPU 裸片,以 25 GT/sec 运行,对应每条链路 50 GB/sec 的理论峰值传输速率(双向 100 GB/sec)。
特别地,GCD 对 2 与 6、GCD 0 与 4之间通过两条 XGMI 链路连接(图中加粗红色连线表示),可获得更高的双向带宽,用于承载通信量较大的负载。
与 CDNA 3 的定位对比
作为参考,CDNA 3(MI300 系列)改用了更先进的封装:以 XCD 为构建块,一颗 MI300X 最多集成 8 个 XCD、共 304 个 CU,相比 MI250X 的 220 个 CU 提升约 40%,并引入 HBM3 与 Infinity Cache(见 MI300 系列微架构文档)。理解 MI250 的 GCD 架构,有助于横向对比两代设计在"裸片规模 vs 算力密度"上的取舍。
ROCm 生态中的 MI250:编译目标、性能计数器与配置
MI250 的微架构知识在 ROCm 使用中直接对应三类可操作的层面。
LLVM 编译目标:gfx90a
MI200 系列(MI250/MI250X/MI210)在 ROCm 兼容性矩阵中的 LLVM target 为gfx90a(见 system-instinct.rst)。在 仓库的构建工具 中,默认 GPU 架构列表也包含gfx90a:xnack-与gfx90a:xnack+两种变体(xnack 对应可重放原子操作的硬件支持),编译 ROCm 组件时可通过ENABLE_GPU_ARCH环境变量覆盖该列表。这意味着针对 MI250 的 HIP 内核编译,通常应指定--offload-arch=gfx90a或其带 xnack 后缀的精确变体,才能获得正确的指令集与驱动支持。
性能计数器与剖析
MI250 属于 MI300 与 MI200 系列性能计数器文档 所覆盖的硬件范围。该文档列出了可用的硬件计数器类别:
- 命令处理器计数器(command processor)
- 图形寄存器总线管理器计数器(GRBM)
- 着色器处理器输入计数器(SPI)
- 计算单元计数器(指令混合、矩阵 FMA 操作、层级、波前、LDS 等)
- L1 指令缓存(L1i)与标量 L1 数据缓存(L1d)计数器
- 向量 L1 缓存子系统计数器(纹理寻址单元、纹理数据单元、每管道纹理缓存、纹理缓存仲裁器)
- L2 缓存访问计数器
利用这些计数器可以计算向量内存延迟、LDS 延迟、L2 命中率、VALUBusy、MemUnitBusy等派生指标,从而定位内核的访存瓶颈或 ALU 利用率问题。MI200 系列专属计数器(如TCP_TCP_LATENCY、TCP_TCC_*_REQ_LATENCY)还能直接测量 vL1D 与 L2 的请求延迟。在 ROCm 中可通过 ROCprofiler-SDK 访问这些计数器(详见该文档)。
限制计算单元数量:CU Mask 配置
由于 MI250 GCD 存在未激活的 CU(104 个激活 / 设计更多),且 ROCm 允许在运行时按需启用或禁用指定 CU以隔离负载、复现问题或适配特殊工作负载。相关机制记录在 设置计算单元数量的文档 中:
ROC_GLOBAL_CU_MASK:在 HIP 或 OpenCL 运行时创建的队列上设置 CU 掩码;HSA_CU_MASK:在驱动层更底层的队列创建时设置掩码,同时作用于被剖析的队列。
其语法示例为GPU_list:CU_list,例如0,2-4,7:0-15,32-47或0,2-4,7:0x337F,多个 GPU 设置用分号分隔。注意 GPU 索引是在ROCR_VISIBLE_DEVICES重排之后取值,且这些变量仅影响 ROCm 软件,不影响图形应用。
系统级优化入口
针对 MI250 的平台级调优(NUMA、PCIe 拓扑、P2P 配置等)可参考 AMD GPU 系统优化指南 中列出的 MI250/MI250X 条目;更多 CDNA 架构背景可回溯 GPU 架构文档索引 中的 CDNA 2(MI200 系列)章节,该索引同时汇总了 ISA 参考与性能计数器文档的入口。
总结
AMD Instinct MI250 的 CDNA 2 微架构可以概括为"以 GCD 为基本单位的双裸片计算封装":
- 单 GCD:104 个激活 CU(MI250X 为 110 个),每 CU 4 个 SIMD + 矩阵核心,HBM2e 提供 1.6 TB/s 带宽,FP64 向量峰值 22.6 TFLOPS;
- 双 GCD OAM:通过 4 条 25 GT/s Infinity Fabric 链路互联(200 GB/s 单向 / 400 GB/s 双向),整卡聚合 FP64 向量 45.3 TFLOPS、矩阵 90.5 TFLOPS、FP16/BF16/INT8 矩阵 362.1 TFLOPS,聚合内存带宽 3.2 TB/s;
- 节点互联:每 GCD 独立 PCIe Gen 4 x16 上连主机,GCD 间通过 XGMI/Infinity Fabric 构建 P2P 网络,GCD 对 2/6 与 0/4 使用双 XGMI 链路增强带宽。
在 ROCm 生态中,MI250 对应统一的 gfx90a 编译目标,其硬件计数器、CU 掩码机制与系统优化指南均已沉淀在本文引用的仓库文档中,可作为内核调优、平台选型与算力评估的权威依据。
【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考