MI300XROCM QUICK REFQR-942

AMD · INSTINCT · CDNA3 · 8 XCD + 4 IOD · OAM

MI300X· 数字速查

CUDA 算子 / 框架工程师的 AMD 侧对照视角 · 括号内为相对 ×H200 倍数

MAIN READOUT · 主显示屏 DISP · 01
HBM3 容量 · CAPACITY 192GB H200 141GB · ×1.36 · 8×24GB 堆叠
HBM 带宽 · BANDWIDTH 5.3TB/s ×1.10 H200 · HBM3(非 3e)
CU 数量 · CU COUNT 304 8 XCD × 38 · 单 CU ≈ ½ SM 吞吐
BF16 算力 · DENSE 1,307TFLOPS ×1.32 H200 · 官方口径即 dense
MALL · 全片共享缓存 256MB memory-side · 4×64MB(≈ H200 L2 ×5)
目标 / 架构 942 gfx942 · CDNA3 · wave64 · ROCm/HIP
RDY · 口径 MI300X OAM 750W · 官方峰值即 DENSE(2:4 另列) · ×H200 为整量比值 · 延迟为第三方实测
SCALE 1:1 · CDNA3 · 8 XCD + 4 IOD · 192 GB
00

CUDA ↔ ROCm 术语对照

TERMINOLOGY MAP · FOR CUDA ENGINEERS

本页以下全部使用 AMD 原生术语;这张表是两套词汇的 Rosetta 石。量级直觉:1 个 CU ≈ ½ 个 SM 的通用算力,但 CU 数量是 SM 的 2.3 倍;1 wave = 2 warp

CUDA (NVIDIA)ROCm (AMD · CDNA3)注解
SMCU(Compute Unit)MI300X 304 CU vs H200 132 SM;单 CU 64 lane
Warp(32 线程)Wavefront / wave(64 线程,固定wave32 是 RDNA 特性,gfx942 没有
Thread blockWorkgroup(≤16 waves = 1024 线程)__syncthreads 在 HIP 里同名
Thread block cluster / DSMEM— 无对应CDNA3 无集群层,跨 CU 共享靠 L2/global
Shared memoryLDS(Local Data Share,64 KB/CU)与 L1 分离,不是合池
L1 cachevL1(32 KB/CU,向量数据缓存)+ 16KB 标量 sL1(只读/uniform 路径)[3]
Register fileVGPR(512/wave 上限)+ SGPR(分离)向量/标量分家 + AccVGPR 专属矩阵核
Tensor Core / wgmma·tcgen05Matrix Core / MFMA(同步指令)无异步 MMA;靠 wave 并行 + ILP 隐藏
cp.asyncGLOBAL/BUFFER_LOAD … LDS=1(直达 LDS)每线程小粒度,无 bulk 引擎
TMA— 无等价没有 bulk-DMA / 描述符引擎
mbarrier—(workgroup barrier / 计数器)异步完成靠 LGKM/VM 计数器
Occupancy(warps/SM)Occupancy(waves/CU,≤32)限制维度不同:见 §2 折叠舱
cc 9.0 / sm_90gfx942(LLVM target)ROCm 6+ / hipcc
PTXGCN ISA(AMDGPU 汇编)v_mfma / v_global_load …
Nsight Computerocprofiler-compute(Omniperf)计数器体系对应 SIMT 章节命名不同
01

整机级

ACCELERATOR-LEVEL · FULL-DEVICE SPEC
指标MI300X OAM相对 H200 · 刻度 0–4×直觉注解
核心规模
发布年份2023.12(Advancing AI)H200 · 2023.11(SC23)相隔 1 个月同期对位;两者均 2024 起规模交付
架构 / 封装CDNA3 · 8 XCD + 4 IODHopper · 单 GH100chiplet:XCD 5nm + IOD 6nm,3.5D 封装[1]
工艺 / 晶体管N5+N6 · 153B4N · 80B良率优先的拆 die 路线
CU 数量304(8 XCD × 38)×2.30每 XCD 造 40 开 38;单 CU ≈ ½ SM[1]
流处理器(FP32 lane)19,456 (64/CU)×1.15vs H200 16,896 CUDA core
Matrix Cores1,216 (4/CU)×2.30vs 528 Tensor Core;MFMA 见 §5
FP64(vector)81.7 TFLOPS×2.40AMD 传统强项;HPC 口径看这行[1]
存储与带宽
HBM 容量192 GB HBM3×1.368×24GB 堆叠;单卡塞大模型的意义[1]
HBM 带宽5.3 TB/s (5325 GB/s)×1.108192-bit @5.2Gbps/pin;HBM3 非 3e
L2(每 XCD 内)32 MB(4 MB × 8 XCD)×0.64XCD 内一致;跨 XCD 走 fabric
MALL(Infinity Cache)256 MB(4 IOD × 64MB)≈ L2 ×5.1memory-side、全片共享、不存脏数据[1]
频率 / 功耗 / 互联
峰值引擎频率2.1 GHz×1.15官方峰值均按 2.1GHz 推[1];1 cyc ≈ 0.48 ns
TDP750 W×1.07OAM 被动散热
Infinity Fabric(scale-up)896 GB/s(7×128 GB/s 链路)×1.00vs NVLink4 900;8 卡全互联[1]
PCIeGen5 · 128 GB/s单 x16;其余 7 链路给 fabric
目标 / 软件栈gfx942 · ROCm 6+cc 9.0 · CUDAhipcc 近源码兼容迁移
02

单 CU 级

PER-CU RESOURCES · GFX942 VS CC 9.0 SM
资源MI300X CU (gfx942)H200 SM (cc 9.0)直觉注解
SIMD 组织4 SIMD × 16-lane4 分区 × 32-laneCU 每 cycle 吐 64 lane;SM 128
Matrix Cores4(MFMA,挂 VALU 发射)4 Tensor CoreMFMA 可与 VALU 指令同发射[1]
VGPR 文件512 KB/CU(128KB×4 SIMD)256 KB RF×2;矩阵累加另有 AccVGPR
VGPR / wave 上限512 = 256 常规 + 256 AccVGPR255 regs/threadAccVGPR 专属矩阵核,可从 memory 直载[2]
VGPR 分配粒度8 个/步(8 dword 组)8(warp 级)向上取整到 8 的倍数
SGPR16–102/wave · 16 粒度— 无分离地址/循环变量走标量域,省 VGPR
LDS(≈smem)64 KB228 KB×0.28——tiling 预算紧得多
LDS 分配粒度512 B 块128 B按 workgroup 分配
vL1(≈L1)32 KB(128B line)合池内 28–228KBCDNA3 L1 与 LDS 分离
每 CU 并发 wave32(8/SIMD × 4)= 2,048 线程64 warps = 2,048 线程满占用线程数恰好相同[2]
Workgroup 上限16 waves = 1,024 线程1,024 线程同;但 64 线程粒度(1 wave)
每 CU 最大 workgroup 数无官方数字第三方32 blocksGCN 传统 16,未见 CDNA3 官方值[6]
OCCUPANCY 速算 · wave 槽位四约束

AMD occupancy 的单位是 wave(不是线程)。每 CU 并发 wave 数 = 四个约束的最小值[2]

# V = 每 wave 的 VGPR 数(8 对齐);每 SIMD 文件 32768 VGPR
waves_per_simd = floor(32768 / (ceil64(V) * 64))
waves_cu = min( 32,                         # ① wave 槽位(8/SIMD×4)
                 4 * waves_per_simd,        # ② VGPR 文件
                 lds_waves,                      # ③ LDS:64KB / 每 WG 占用
                 sgpr_waves )                    # ④ SGPR 文件
# 例:V=64  → 32768/(64*64)=8/SIMD → 32 waves → 100% 占用
#     V=128 → 4/SIMD → 16 waves → 1024 线程 → 50%
#     V=256 → 2/SIMD → 8 waves → 25%(AccVGPR 另算)

与 CUDA 最大的心智差异:寄存器按 wave 整体申请(64 线程 × V),且标量/向量分家——把地址和循环归纳变量放进 SGPR、uniform 分支用标量域,等效「免费的」VGPR 优化。GCN 时代传下来的 wave occupancy 纪律在 CDNA3 全部适用。

03

CDNA3 架构图

MICROARCHITECTURE SCHEMATIC · 8 XCD + 4 IOD
FIG. 03 · 设备线框原理图
8 × XCD(GPU 计算 chiplet · N5 · 每颗 38 CU + 4MB L2) XCD 0–1 38 CU ×2 · L2 4MB/颗 XCD 2–3 同构 · GPC 类比 XCD 4–5 L2 仅 XCD 内一致 XCD 6–7 每 XCD 40 造开 38 INFINITY FABRIC ★(封装内 · XCD↔IOD 2.1TB/s 口径见脚注 [6]) IOD 0 · MALL 64MB memory-side · 不存脏数据 IOD 1 · MALL 64MB HBM 控制器在此 IOD 2 · MALL 64MB 4×64MB = 256MB 全片 IOD 3 · MALL 64MB N6 工艺 HBM3 · 192 GB · 5.3 TB/s · 8 堆叠 ×24GB(8192-bit) global memory · ~380–410 ns/访(~800 cyc,第三方实测) ×1.36 容量 / ×1.10 带宽 vs H200 单 CU 内部结构(4 SIMD · 64 lane/cyc) 4× SIMD16 · 每 SIMD 8 wave 槽 · sL1 16KB 4× Matrix Core · MFMA(挂 VALU 发射) VGPR 512KB(128KB×4)+ AccVGPR ★ LDS 64KB(成对 SIMD 共享双端口) vL1 32KB · global load 可直达 LDS 编程层级(自底向上) Work-item(64/wave) → Wavefront(64 · 固定) → Workgroup(≤16 waves · 单 CU) → Grid 无 cluster / DSMEM 层 ★(vs Hopper) 异步靠什么 无 TMA / mbarrier:LOAD→LDS 直达 + 32 wave/CU 并发 + MFMA 与 VALU 同发射
HBM(实心) 片上存储(MALL / VGPR / LDS) XCD / CU 计算单元 CDNA3 关键路径(Fabric / MFMA / AccVGPR) 数据通路 / 标注引线

FIG. 03 — CDNA3 BLOCK DIAGRAM · XCD ×8 → INFINITY FABRIC → IOD/MALL ×4 → HBM

04

存储层级

MEMORY HIERARCHY · CAPACITY × BANDWIDTH
层级容量(每 CU / 全片)带宽 / 延迟(第三方实测)谁管理 / 注解
VGPR(+ AccVGPR)512 KB/CU · 156 MB/片无公开延迟数据[6]编译器分配;occupancy 主约束
LDS(≈smem)64 KB/CU · 19 MB/片~28.7 ns(~60 cyc)[4]程序员显式;512B 分配粒度
vL1(≈L1)32 KB/CU~62 ns(~130 cyc)[4]128B line;relaxed 一致性
L2(XCD 内)4 MB/XCD · 32 MB/片~104 ns(~219 cyc)[4]XCD 内硬件一致;聚合读 34.4TB/s[1]
MALL(全片共享)256 MB(4×64MB)~218 ns(~458 cyc)[3][4]memory-side;≈ H200 L2 的角色但大 5×
HBM3(global)192 GB5.3 TB/s · ~378–412 ns(~800 cyc)[3]TLB miss 惩罚 ~47ns:64MB 处延迟跳变[4]

延迟全部为第三方实测、方法各异(cycles 按 2.1GHz 换算)— 见页脚脚注 [3] [4] [6]

05

精度算力对照

PRECISION × THROUGHPUT · TFLOPS

单位 TFLOPS(INT8 为 TOPS)。MI300X 官方峰值即 dense;2:4 sparse(SMFMAC 指令)在 datasheet 另列一列[1]。roofline 用 dense。

DENSE · 主读数(官方口径)SPARSE · 副读数(2:4 SMFMAC,非基准)

精度MI300X DENSEMI300X SPARSE H200 DENSEH200 SPARSE×H200 (dense)
FP64(vector)81.734×2.40
FP64 Matrix(MFMA)163.467×2.44
FP32(vector)163.467×2.44
TF32 Matrix653.71,307.4494989×1.32
BF16 Matrix1,307.42,614.99901,979×1.32
FP16 Matrix1,307.42,614.99901,979×1.32
FP8 Matrix(含 BF8)2,614.95,229.81,9793,958×1.32
INT8 Matrix2,614.95,229.81,9793,958×1.32
FP4 / FP6— 无B200 独有(9 PF FP4)
NOTE · 三条口径红线

① dense 是官方主数字:与 NVIDIA 页的「sparse 主数字」相反,跨厂对比时先统一到 dense。② 2:4 稀疏 MI300X 是有的(SMFMAC 指令族,INT8/FP8/FP16/BF16/TF32)[1]——「AMD 无结构化稀疏」是 MI200 时代的过时结论。③ 无 FP4/FP6:对标 B200 的 9 PF NVFP4 是代际差(CDNA3 vs Blackwell),不是同代对比对象。

06

关键延迟

LATENCY CROSS-SECTION · 第三方实测 @2.1 GHZ

AMD 从未发布官方延迟数字,本节全部来自公开微基准[3][4](两文方法不同:cycles 为标量 pointer-chase、ns 为向量路径,比值量级互相印证)。1 cyc ≈ 0.476 ns。

访问类型~cycles~ns来源 / 注解
VGPR~1~0.5无公开实测估算;依赖链 ~4cyc 量级同 GPU
LDS(无 bank conflict)~60~28.7pointer-chase 实测(H100 对照 16.7ns)[4]
vL1(global 命中)~130~62单线程 load 实测[4]
L2(XCD 内命中)~219~104XCD 内一致;跨 XCD 另算[4]
MALL(Infinity Cache 命中)~458~218memory-side;NPS4 最多再降 1.42×[3]
HBM(global miss)~800~378–412大数组实测(TLB 干净后)[3]
TLB miss 惩罚~99~47.164MB 工作集处延迟跳变(~16K 项 TLB)[4]
全局 atomic(跨 CU)~245–426~116–202高值 ≈ 跨 XCD 往返[4]

实测方法与可信度说明 — 见页脚脚注 [3] [4] [6]

CAUTION · 延迟直觉锚点(量级)
HBM ~800 cyc
×1 · 13 等分
LDS ~60 cyc
×13 ≈ 1 次 HBM
VGPR ~1 cyc
×800 ≈ 1 次 HBM

MI300X 的层级是干净的翻倍链:L2(~220) → MALL(~460) → HBM(~800),每级约 2×。一次 HBM ≈ 13 次 LDS。两个 AMD 特有陷阱:LDS 延迟(~60cyc)是 H200 smem(~30cyc)的 2 倍——tiling 收益打折,tiling 深度要重算;64MB 处的 TLB 跳变——工作集跨过 64MB 界限时延迟阶跃,分块策略要避开。

07

Roofline 临界点

ROOFLINE RIDGE POINT · FLOP/BYTE
RIDGE POINT · 脊点 = 峰值算力 ÷ HBM 带宽
ridge [FLOP/byte] = Peak_TFLOPS(dense) ÷ 5.3 TB/s

ridge 是硬件常数、AI 是算子变量;AI > ridge → compute-bound,AI < ridge → memory-bound。MI300X 算力 ×1.32 但带宽只 ×1.10,ridge 全面高于 H200 ~20%——同算子更容易落在 memory-bound 侧。

精度 (dense)峰值临界 ridge (FLOP/byte)vs H200 · 典型 kernel 归属
FP8 Matrix2,614.9 T~493H200 ~412 → 更难 compute-bound
FP16 / BF16 Matrix1,307.4 T~247H200 ~206;GEMM / attention 达标
TF32 Matrix653.7 T~123H200 ~103;大 GEMM 达标
FP32(vector)163.4 T~31H200 ~14——FP32 kernel 更易 compute-bound
FP64 Matrix163.4 T~31H200 ~14;HPC 双精度显著友好
FP64(vector)81.7 T~15H200 ~7;不稀疏、不依赖 TC 的 FP64 强

实操:rocprofiler-compute(Omniperf)取 achieved AI 对照 ridge。迁移注意:NVIDIA 上 memory-bound 的 FP32 elementwise 到 MI300X 可能翻成 compute-bound(ridge 14→31);反过来 LDS 延迟 ×2 又会拖 tile 复用重的算子——别照搬 H200 的调参结论,两台仪器的甜点区不同。

08

CDNA3 关键特性

FEATURE MODULES × 5 · OPERATOR OPTIMIZATION

五大算子优化特性,每张卡 = 定义 + 关键数字 + 极简 snippet。点 [详情→] 看机制 / 完整示例 / 陷阱

★ 特性 1 / 封装

Chiplet · 8 XCD + 4 IOD

153B 晶体管 · N5 计算片 + N6 IO 片 · 3.5D

GPU 拆成 8 颗计算 chiplet + 4 颗 IO chiplet。L2 只在 XCD 内一致(4MB/颗),全片共享靠 256MB memory-side MALL——局部性行为与单片 GPU 完全不同。

// XCD 归属软件不可控;观测靠 rocprof:
//   L2 hit vs MALL hit 比例 = XCD 局部性
// workgroup 尽量自包含(数据在本地
// L2 命中),跨 XCD 共享走 MALL
XCD 亲和 / MALL 行为 / 调优 →
★ 特性 2 / 计算

MFMA · Matrix Core

4/CU · 1307 TFLOPS BF16 dense · 2:4 稀疏 ×2

AMD 的矩阵指令族(≈wgmma 的角色但同步执行)。累加器在 AccVGPR(可从 memory 直载),FP64 也有 MFMA 路径(163T——NVIDIA 的 2.4×)。形状:16×16×16 / 32×32×8(BF16)。

// HIP 内联汇编,一个 wave 发一条:
asm("v_mfma_f32_16x16x16_f16 "
    "v[0:15], v[0:7], v[8:15], v[0:15]");
// D/A/B 都在 VGPR/AccVGPR,同步语义
形状表 / AccVGPR / 陷阱 →
★ 特性 3 / 调度

Wave64 · VGPR/SGPR 分家

wave=64 线程固定 · 32 wave/CU · VGPR 512/wave

CDNA 的 wave 是 64 线程且不可选。寄存器分向量(VGPR)与标量(SGPR)两个文件——地址/循环变量放 SGPR 等于省 VGPR;occupancy 按 wave 槽位算,公式与 CUDA 不同。

// occupancy:V 个 VGPR/wave →
waves = min(32, 4*floor(32768/(V*64)), lds, sgpr)
// V=64 → 32 waves(100%); V=128 → 16(50%)
槽位公式 / 标量化技巧 →
★ 特性 4 / 互联

Infinity Fabric · 8 卡全互联

7×128 GB/s = 896 GB/s · 无交换机直连

每卡 7 条链路与其余 7 卡全互联(无 NVSwitch 式交换机)。896 GB/s 对标 NVLink4 的 900;192GB×8=1.5TB 单机显存是 MI300X 集群的卖点。ROCm 通信走 RCCL。

// RCCL 与 NCCL API 同构(hip 替换):
ncclAllReduce(buf, buf, n, ncclBfloat16,
              ncclSum, comm, stream);
// 8 卡 xgmi 全互联:P2P 直达不走 host
拓扑 / 带宽账 / 陷阱 →
★ 特性 5 / 搬运

异步通路 · 无 TMA 的世界

LOAD→LDS 直达 · AccVGPR 直载 · 无 bulk 引擎

CDNA3 没有 TMA/bulk-DMA:异步靠 GLOBAL/BUFFER_LOAD 的 LDS=1 直达位、AccVGPR 从 memory 直载,以及最根本的——32 wave/CU 的并行度本身。写惯 Hopper 的要换思路。

// 每线程 1 dword 直达 LDS(≈cp.async):
asm("global_load_lds_dword v[2:3], v[0:1], off");
// 等待靠 LGKM 计数器,非 mbarrier
asm("s_waitcnt lgkmcnt(0)");
指令族 / 隐藏策略 / 陷阱 →
AUXRESERVED · 预留扩展位