AMDのMatrix CoreはIEEE 754に従わない――CDNA 1/2/3の数値挙動を完全モデル化

Accurate Models of AMD Matrix Cores

AMDのGPUに搭載されたMatrix Coreは、IEEE 754浮動小数点標準に準拠しておらず、ベンダーやアーキテクチャごとにアキュムレータ幅、丸め、正規化点、中間アンダーフロー/オーバーフロー、非正規数の扱いが異なる。そのため、デバイス間での小行列乗算結果の再現性はソフトウェアでは保証できない。本研究ではCDNA 1、CDNA 2、CDNA 3の3アーキテクチャを対象に、各入力形式の数値特性を狙ったテストベクトルを設計し、MATLABベースのモデルを構築。1000万組のランダム入力でビットレベル一致を検証した。さらに、AMDとNVIDIAのテンソルコア間のアプリケーション精度差を定量化する実例も示す。

最近のGPUで利用可能な行列乗算器は、IEEE 754浮動小数点標準に準拠していない。
  1. erichocean

    もしあなたがこの記事の著者なら、Apple SiliconのSME2コアとIntelサーバープロセッサのAMXコアについても続報を書いてほしい。

  2. peter_d_sherman

    >「行列乗算器の機能はベンダー間および同一ベンダー内のアーキテクチャ間で異なる[…]その結果、小さな行列乗算結果のデバイス間での再現性[の差異]は不可能であり、ソフトウェア制御によって達成することもできない。行列乗算器の実装詳細は文書化されていないため、計算結果の不一致を解釈するのは困難である。」

    推測だが(確信はないが)、異なるベンダーのアーキテクチャ(および同一ベンダーのアーキテクチャの製品世代)間での行列乗算における小さく微妙な違いが、ローカルLLMを明示的にテストされたものとは異なるアーキテクチャや異なるスタック(例えばROCm対CUDA)で実行しようとした際のソフトウェアクラッシュのかなりの部分を引き起こしているのだろう。

    そうなると、これは将来にとってかなり重大な問題を示しており、基本的に次のように言える:

    すべての将来のAIアクセラレータベンダー(matmulを実装する回路を持つGPU、CPU、NPU、ICメーカー)が準拠すべき標準的な行列乗算仕様(ちょうど浮動小数点演算におけるIEEE-754のようなもの)が必要であり、それによってあるベンダーのmatmulが別のベンダーのmatmulと正確かつ厳密に互換になるようにすべきである。

    ハードウェアベンダーはもちろん、速度、電力効率、特定のシリコン上のmatmulエンジンの数、並列化の最適化などの点で自由に競争できるが、基本的なmatmul操作はベンダー間で正確かつ厳密に互換であるべきだ[…]

この日のほかの記事

2026-09-16