千万组随机测试对齐硬件,AMD 三代矩阵核给出比特级模型

Accurate Models of AMD Matrix Cores

Faizan A Khattak, Mantas Mikaitis, Carlo J. Graziani

cs.AR, cs.MS

2026-09-14

在 MI100、MI210、MI300 上探测 Matrix Core 的未文档化数值行为,写成 MATLAB 模型并用最多两千万组随机向量验证到比特一致,再量化与 NVIDIA Tensor Core 的应用级误差差。

这篇在解决什么

GPU 上的矩阵乘加单元不遵守 IEEE 754。累加器多宽、怎么舍入、次正规数留不留、中间溢怎么处理,NVIDIA 和 AMD 不同,同一家的相邻代际也不同。软件层调不齐跨卡结果,厂商又不公开内部数值行为,算出来对不上时很难判断是算法写错还是硬件在截位。

此前 Hickmann、Fasi、Li 等人用针对性测试向量拆过 NVIDIA Tensor Core 的累加精度;Xie 等人 2025 年也报过 AMD,但没公开可复现的测试向量,论文正文和配套 MMA-Sim 仓库还对不齐。Leeds 大学与 Argonne 国家实验室要的是带推导的特征探测,加上能跟真机比特对齐的软件模型。

方法

硬件覆盖 CDNA 1/2/3:MI100、MI210/250、MI300A/300X。对每种输入格式(fp32、fp16、bf16,CDNA 3 再加 tf19 与 fp8)设计测试向量,分别打舍入模式、一次多加几项乘积(FMA size)、对齐附加位、次正规数、无穷与 NaN。

针对测试覆盖不了特征空间之外的行为。做法是迭代 refinement:按当前特征建 MATLAB 模型,用随机向量跟 GPU 逐比特比对,对不上就补特征、改模型,直到对齐。随机采样两套。一套把指数与尾数分开均匀抽,并单独覆盖次正规区间;另一套按比特独立伯努利抽样,抽到无穷就重抽指数。Inf/NaN 另测,不混进这套随机集。

结果

三代内部结构差得很开。

CDNA 1 的 fp32 路径是顺序融合乘加:先把累加项 C 和第一项乘积加起来,再一项项加下去。fp16 一次多加 4 个乘积,bf16 一次 2 个,乘积按全精度保留,累加相当于正确舍入,最后用 round-to-nearest, ties-to-even 收到 fp32。次正规数输入输出都支持。正负无穷相加得到带负号的 NaN。

CDNA 2 的 fp32 与上一代相同。fp16/bf16 改成两两配对再加,组大小通常为 4(部分 bf16 指令是 2),乘积先收到 fp32。次正规数在每次规范化后冲成零。

CDNA 3 更绕。fp16/bf16 的 FMA 块是 8,先对齐乘积(多 1 位对齐位,超出截断),C 后加;C=0 时指数按 −126 处理,NVIDIA 那边同等情况下会把 C 丢掉。对齐时 C 的尾数向下舍入到 24 个小数位,乘积和向下舍入到 32 位,归一化后再向下舍入,最后 RNE 到 fp32。tf19(指令名 XF32)把尾数截到 10 位,FMA 块为 4。fp8 的 FMA 块是 16,奇偶下标乘积分开累加再加 C。

这套细节和 Xie 等人论文里写的「31 位」对不上,但和他们 GitHub 仓库一致。模型 refinement 四轮之后,fp16/bf16/tf32 各 10⁷ 组、binary8 共 2×10⁷ 组指数-尾数采样,零 mismatch。贝叶斯上界在 ε=10⁻⁶ 时约 1.38×10⁻⁶。CDNA 1/2 在两套采样下都是零 mismatch。10⁶ 组在 MATLAB 侧大约 13 分钟,GPU 侧 1 到 2 分钟。

架构fp16 FMA 块累加方式次正规数最终舍入
CDNA 1 (MI100)4全精度 / 正确舍入支持RNE
CDNA 2 (MI210)4(两两配对)先收到 fp32冲掉RNE
CDNA 3 (MI300)8乘积先加、C 后加支持RNE
NVIDIA H100/B20016早加 C有限RTZ

应用上,用多字表示在低精度矩阵核上仿真高精度 GEMM:AMD 三代误差接近,NVIDIA B200 因最终 RTZ,相对误差随内维 n 增大更明显。在宽带阵列处理的顺序矩阵对角化里,把主导 GEMM 换成各架构模型,主特征值相对双精度参考有可见但很小的差;MI210 偏差更大,论文归因于顺序 FMA 且不支持次正规数。fp8 在这个例子上偏差大到被认为不合适。

为什么重要

训练和推理几乎都走这些矩阵核。跨卡对不齐、混合精度仿真对不上硬件,很多时候不是实现写错,是单元根本不是 IEEE 加法器。这份模型和测试向量可以在 MATLAB、GNU Octave 以及经 Oct2Py 的 Python 里按架构仿真,改单个特征做数值实验,不必占一张 MI300。对做混合精度数值分析、可复现科学计算的人,这是能直接用的工具。

它补的是文档空白,不是新算法。CDNA 4 还没测。

局限与存疑

随机测试再大也盖不住输入空间,上界只对所用采样分布成立。Inf/NaN 是另测的。MATLAB 侧偏慢,作者打算把后端迁到 C。

顺序矩阵对角化那段论文自己说「结果不是结论性的」:换一张多项式矩阵,误差传播方向可能反过来。多字 GEMM 的图是相对误差曲线,正文没有给出与 B200 在某一 n 上的单个百分比。

Xie 等人论文与仓库不一致这件事,以仓库为准更合理,但第三方仍缺少一份双方对齐的公开勘误。

术语

原文与代码

社区讨论

相关论文

全部论文解读