跳到主要内容

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)
MI100xGMI 3.0~23 GB/s3 条链路 (3 个邻居)~138 GB/s
MI200 (2-Die 封装)xGMI 3.0~23 GB/sDie 间 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 的统一内存,两者殊途同归。

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/IBNVSwitch (内) + IB (间)
集合通信库RCCLNCCL
统一内存是 (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 NVLinkMI300X 胜单卡显存;H100 SXM 8 卡集群胜 NVLink 聚合带宽