AMD xGMI / Infinity Fabric
AMD GPU 节点内互联架构,以及 MI300X 单封装多芯粒如何全连接
核心要点:
- xGMI 基于 Infinity Fabric,是 AMD GPU 节点内的高速互联
- MI200 时代用 Hive 拓扑,非全连接,对 AllToAll 不友好
- MI300X 跳到单封装 8 XCD 全互联,统一内存 192 GB
- HBM 带宽 5.3 TB/s 由 8 个 XCD 共享 (UMA)
- 节点间走 PCIe 5.0 + RoCE/IB,不依赖 NVSwitch 类专用交换
- RCCL 是 AMD 对标 NCCL 的集合通信库
Infinity Fabric 和 xGMI 是什么关系?
Infinity Fabric 是 AMD 统一的片内/片间互联总线,xGMI 是它的对外接口形态。
- Infinity Fabric (2017, Zen 架构起):覆盖 CPU 核心间 (CCX)、CPU-GPU、GPU-GPU。特性:带宽可扩展、延迟确定性强、支持缓存一致性
- xGMI (Cross-GPU Memory Interconnect): Infinity Fabric 在多芯片场景的对外接口,专用于 GPU↔GPU 或 GPU↔CPU 直连
与 NVLink 的定位差异:都是节点内高速互联,但拓扑选择不同 — NVLink 通过 NVSwitch 全连接;xGMI 在 MI200 时代仅有限点对点,在 MI300X 时代通过单封装解决拓扑限制。
代际怎么演进的?
从 MI100 的卡间点对点,到 MI300X 的单封装 8 XCD 全互联,规格见 @tbl-hw-xgmi-gen。
| 产品代际 | 互联技术 | 每链路单向带宽 | 节点内链路配置 | 节点内聚合双向带宽 (每 GPU/Die) |
|---|---|---|---|---|
| MI100 | xGMI 3.0 | ~23 GB/s | 3 条链路 (3 个邻居) | ~138 GB/s |
| MI200 (2-Die 封装) | xGMI 3.0 | ~23 GB/s | Die 间 8 条链路 | 封装内 ~368 GB/s 双向 |
| MI300X (8 XCD 封装) | xGMI 3.1 | 片内高速 Fabric | 封装内全互联 | ~5.3 TB/s (HBM 聚合,所有 XCD 共享) |
@tbl-hw-xgmi-gen xGMI 代际规格
口径说明:MI300X 的"聚合带宽"统计与 MI200/MI100 不同。MI300X 中 XCD 通过 IOD (IO Die) 上的 Infinity Fabric 互联,所有 XCD 共享同一批 HBM3 堆栈,带宽是整个封装的统一内存带宽,不再是"每 GPU 卡"概念。
MI300X 单封装架构长什么样?
8 个 XCD (计算裸片) + 4 个 IOD (IO 裸片) + 8 堆栈 HBM3,构成 192 GB 统一内存:
MI300X 封装内部结构:
[XCD 0] [XCD 1] <- 计算裸片 (CDNA3, GCD)
[XCD 2] [XCD 3]
[XCD 4] [XCD 5]
[XCD 6] [XCD 7]
|
[IOD 0][IOD 1][IOD 2][IOD 3] <- IO Die (HBM 控制器 + PCIe + xGMI 对外)
|
[HBM3] × 8 堆栈 (共 192 GB, 5.3 TB/s)
关键设计决策:
- 8 XCD 共享 4 个 IOD 的 HBM3 控制器,统一内存地址空间 (UMA)
- XCD 间通过 IOD 上 Infinity Fabric 互联,无需外部 xGMI 链路或交换芯片
- 对软件层透明 — ROCm 视整个 MI300X 为单 GPU 设备 (192 GB 显存)
- 与 H100 SXM (80 GB) 相比,MI300X 单卡显存容量大 2.4×
封装内 vs 封装外:XCD 间走 IOD Fabric (~TB/s),远高于封装外节点间 xGMI 链路 (~数百 GB/s),与 NVLink 节点内 vs 节点间的带宽层级类似。
节点间 xGMI 怎么做?
核心问题:MI200 时代 8 卡如何通过 xGMI 互联、与 H100 NVSwitch 全连接有何差距?
8 卡 MI200 通过 xGMI 形成 Hive 拓扑,非全连接。
- 拓扑:类似环形或部分 Mesh
- 跨 GPU 延迟:xGMI 直连约 400-600 ns,与 NVLink 量级相当
- 带宽限制:部分 GPU 对通信需 2 跳,有效带宽低于直连
- 软件感知:ROCm
rocm-smi --showtoponuma可查 xGMI 链路权重
与 H100 对比:H100 SXM 通过 NVSwitch 实现 8 卡全连接,所有 GPU 对延迟和带宽一致;MI200 Hive 拓扑有带宽不对称性,对 AllToAll (MoE 路由) 等操作影响更明显。
ROCm 软件栈怎么用 xGMI?
RCCL 直接调用 xGMI/Infinity Fabric 完成节点内通信,是 AMD 对标 NCCL 的集合通信库。
RCCL 特性:
- 自动检测 xGMI 拓扑权重,优先用直连链路避免多跳
- AllReduce 算法根据拓扑选 Ring 或 Tree: Ring 适合均匀全连接,Tree 适合非对称拓扑
- 接口与 NCCL API 兼容,方便 PyTorch / JAX 等框架移植
NUMA 感知:MI300X 的 8 XCD 在 ROCm 中表现为 NUMA 节点,RCCL 感知 XCD 间 Fabric 距离优化通信路径。
统一内存设计有什么用?
CPU 和 GPU 共享同一物理内存地址空间,消除显式 memcpy 开销。
- CPU DDR5 + GPU HBM3 均可直接访问对方
- 大模型推理:模型权重可在 CPU 侧分配,按需 prefetch 到 HBM,有效支持 >192 GB 的分片加载
NVIDIA 在 GB200 中通过 NVLink-C2C 实现 Grace CPU 和 Blackwell GPU 的统一内存,两者殊途同归。
与 NVLink 怎么对比?
MI300X 胜在单卡显存容量 (192 vs 80 GB);H100 SXM 集群胜在 NVLink 聚合互联带宽,详见 @tbl-hw-xgmi-vs-nvlink。
| 指标 | AMD xGMI (MI300X) | NVIDIA NVLink 4.0 (H100 SXM) |
|---|---|---|
| 节点内拓扑 | 封装内全互联 (8 XCD,单封装) | NVSwitch 全连接 (8 卡) |
| 节点内芯片间互联带宽 | ~1.6 TB/s (IOD Fabric, XCD 间峰值) | 900 GB/s × 8 = 7.2 TB/s (NVLink 聚合) |
| 节点内 HBM 内存带宽 | ~5.3 TB/s (8 HBM3 堆栈,XCD 共享) | ~3.35 TB/s (HBM3 单卡) |
| 每 GPU 显存 | 192 GB (单封装) | 80 GB × 8 = 640 GB (集群) |
| 节点间互联 | PCIe 5.0 + RoCE/IB | NVSwitch (内) + IB (间) |
| 集合通信库 | RCCL | NCCL |
| 统一内存 | 是 (CPU+GPU 共享) | 部分 (NVLink-C2C, Grace Hopper) |
| 软件生态成熟度 | 追赶中 (ROCm) | 成熟 (CUDA) |
@tbl-hw-xgmi-vs-nvlink xGMI vs NVLink 对比
关键权衡:MI300X 单卡显存容量大幅领先 (192 vs 80 GB),适合单卡部署超大模型;H100 SXM 8 卡集群 NVLink 聚合互联带宽 (7.2 TB/s) 高于 MI300X 封装内 Fabric,在多卡 TP 训练上 H100 集群有优势。注意 MI300X 的 5.3 TB/s 是 HBM 内存带宽 (非芯片间互联带宽),与 NVLink 互联带宽量纲不同,不可直接对比。
Takeaway
| 知识点 | 核心结论 |
|---|---|
| Infinity Fabric / xGMI 关系 | IF 是统一总线,xGMI 是其片间扩展接口 |
| 代际演进 | MI100 卡间点对点 → MI200 2-Die → MI300X 8 XCD 单封装全互联 |
| MI300X 设计 | 8 XCD + 4 IOD + 8 HBM3,对 ROCm 表现为单 192 GB GPU |
| MI200 拓扑限制 | Hive 非全连接,部分 GPU 对需 2 跳,AllToAll 不友好 |
| 统一内存 | CPU + GPU 共享物理地址空间,消除 memcpy |
| vs NVLink | MI300X 胜单卡显存;H100 SXM 8 卡集群胜 NVLink 聚合带宽 |