AI・機械学習
AMD GFX1250 LLVMコミットから読み解く
Scrying the AMD GFX1250 LLVM Tea Leaves (chipsandcheese.com)
要約
AMDは次世代データセンター向けアクセラレータMI400シリーズを発表予定ですが、本記事ではLLVMコミットから明らかになるGFX1250(MI455X)のアーキテクチャを分析します。GFX1250はRDNA4に似たWGP構造を持ちつつ、Wave32モード専用、1024 VGPR、統合されたWGPキャッシュなどの特徴を持ち、特に機械学習ワークロードに最適化されています。
全文翻訳
AMDは数日中に、Advancing AIイベントでブランド初のMI400シリーズデータセンターアクセラレータを発表しますが、そのイベントに先立ち、LLVMコミットという茶葉を読み解いて、この次世代AMDアクセラレータについて何がわかるかを試みるのは楽しいだろうと考えました。
LLVMは現在、コードネームGFX1250およびGFX1251というAMDの2つの新しいアクセラレータの予備的なサポートを含んでいます。
GFX1250はMI455Xと呼ばれる機械学習市場向けのアクセラレータチップであり、Heliosラックを駆動するものになります。一方、GFX1251はHPC市場向けで、MI430Xという名称で、AMDの予測ではネイティブ倍精度演算で200 TFLOPs超を達成する見込みです。
今回はGFX1250に焦点を当て、GFX1251は別の機会に譲ります。
コンシューマー向けアーキテクチャ、前世代のCDNAアクセラレータ、そしてある程度はNvidiaのBlackwellと比較します。
興味深い点として、これらのアクセラレータがAPUではないとわかっていますが、LLVMではAPUとしてリストされています。
RDNA4との類似点
コンシューマー向けアーキテクチャとの最大の類似点は、2つのSIMD32アレイのペア2組で構成されるWGP(Workgroup Processor)が存在することですが、GCNやCDNAにあったように、CUあたり4つのSIMDが存在します。この一見矛盾する点は、ソフトウェアが2つのCUをWGP内で分離する必要がなくなったためであり、AMDはこれらの用語を相互に使い分けているようです。
この「変更」は、最初に見えるほど構造的なものではなく、ハードウェアに存在するものではない可能性もあります。キャッシュ階層の変更により、WGP全体で共有されるベクトルL0キャッシュが存在するため、コンパイラにとって区別は無意味になっています。
GFX1250は、Wave64モードとWave32モードの両方で実行できるRDNAとは異なり、Wave32モードのみで動作します。以前のCDNA GPUはWave64モードでしか実行できなかったため、新しいアクセラレータにポートする際のパフォーマンスエンジニアリングの観点から奇妙な点が見られる可能性があり、多くのカーネルは新しいアーキテクチャのために再評価する必要があります。
また、GFX1250はSIMDあたり20ウェーブを実行できるようです。これはRDNA4の4つよりも多いです。
これらの特徴のいずれかがAMDのGPUの方向性を示すものかどうかはわかりませんが、個人的には、将来のAMD GPU世代はWave32に固定され、現在の「WGP」は過去のものになる兆候だと推測しますが、それはすぐに起こることではないでしょう。
RDNA4と同様に、以前のCDNAで特徴的だった「MFMA」ではなく、「WMMA」サポートが追加されました。GFX1250の機械学習機能の大部分はここから生まれており、後で詳しく見ていきます。
RDNA4で大きく宣伝されていた動的なVGPR割り当て機能が欠けているのは、私にとっては少し奇妙です。なぜなら、個々のベクトルや行列ではなく、テンソル全体を扱うため、レジスタプレッシャーがはるかに高い機械学習ワークロードにとっては、さらに重要になるだろうと想像するからです。モードスイッチはまだありますが、新しいレジスタを割り当てる命令はノップとして文書化されています。
(C)DNAにおける変化
GFX125Xで見つかった最大の変更点の1つは、SIMD内の各ウェーブがレジスタファイルから最大1024個のVector General Purpose Register(VGPR)にアクセスできるようになったことです。これは、最大256個のVGPRと、行列ユニットのみが使用できる256個のAccumulation VGPRに分割割り当てされ、一度に単一ウェーブに最大512個のレジスタが割り当てられていた以前のCDNA世代からの大幅な改善です。
これは、RDNAシリーズのGPUのレジスタ割り当て動作よりもさらに大きな改善です。RDNAは単一ウェーブに最大256個のレジスタしか割り当てできず、割り当ての分割はありません。これは、将来のGPU IPの一部となる可能性のある主要なアップデートですが、すぐに実現すると賭けることはできません。この機能がInstinctラインに限定され続けるのか、それとも単一ウェーブに最大1024個のレジスタを割り当てられるこの機能がRadeonラインナップにも登場するのか、私たちはただ待つしかありません。
ウェーブごとの最大アドレス指定可能なローカルメモリ(LDS)は320kBとなり、CDNA4の2倍であり、RDNAの64kBをはるかに上回ります。しかし、実際のLDSはさらに大きくなる可能性があります。GFX125Xの大きな変更点は、LDSとベクトルL0キャッシュをAMDがWGPキャッシュ(WGP$)と呼ぶものに統合したことです。nVidiaとIntelは長い間、キャッシュと共有メモリの両方に単一の構造を持っていましたが、AMDはキャッシュとLDSが分割されているという点で異質なベンダーでした。GFX1250は現在、コンパイラやプログラマが要求するものに応じて異なる割り当てに分割できる、単一の448KB構造を持っています。
GFX1250は、CDNA2以降と同様に、SIMD内の単一レーンが一度に2つのfp32演算を処理できるパケット化されたfp32演算を依然としてサポートしています。これは実質的に、パケット化された命令を使用する場合、RDNAの2倍のベクトル幅を持つことを意味します。
また、CDNAから継承した、より多数で強力なSDMAユニットも備えています。
グラフィックスサポート
nVidiaとIntelにはアクセラレータにいくらかの痕跡的なグラフィックスハードウェアが残っていますが、GFX125xはこの点ではそれらの製品と少し異なります。
エクスポート命令がないため、ラスタライザもありません(CDNAと同様)。
画像(テクスチャ)命令がありません(CDNAと同様)。
BVH(レイトレーシング)命令がありません(CDNAと同様)。
ピクセルシェーダーで頂点データにアクセスして補間するために使用されるベクトルパラメータ補間命令がありません(CDNAと同様)。
MTBUF(型付きバッファ)命令はサポートされていません(CDNAおよびRDNA3とは異なり)。
MUBUF(型なしバッファ)命令はサポートされていません(CDNAおよびRDNAとは異なり)。
LDSパラメータとパラメータ直接ロードがありません(CDNAと同様)。
GFX125xは、以前のCDNAアーキテクチャよりもさらにピュアなコンピュートアクセラレータとなっており、グラフィックス機能はほぼすべて削除されています。これにより、ダイスペースが少し節約され、誰も必要としない機能が削除されるため、非常に理にかなっています。
テンソル演算
MI455Xのヘッドライン機能はそのAI能力であり、テンソルユニットがそれを支えています。これは、AMDがRDNA4のシンプルなプログラミングモデルとCDNA4の高いパフォーマンスおよび能力を組み合わせた、両者の良いところを合わせた状況のようです。
RDNA4では、WMMA演算はM = N = K = 16(行列は16x16)ですが、4ビット演算ではK = 32(引数は16x32または32x16で、16x16に累積)です。
GFX1250はM = N = 16を維持しますが、KはCDNA4と同じになります。K = 64ビットおよび32ビット浮動小数点要素の場合は4、16ビット浮動小数点要素の場合は32、8ビット固定小数点の場合は64、8ビット浮動小数点要素の場合は128です。興味深いことに、i4演算はK=32でRDNA4レベルにとどまっており、MX浮動小数点演算の採用により、大規模AI推論シナリオではあまり人気のあるデータ形式ではなくなっています。
RDNA4とは異なり、WMMAのスパースバージョンは、Kを同じに保つことで、密なバージョンよりも命令あたりの作業量が少ないようです。
RDNA4はWMMAのために以下の行列フォーマットをサポートしています。
CDNA4はMFMAのために以下のフォーマットをサポートしています。
GFX1250は、fp64がGFX1251に限定されていると思われるものを除き、CDNA4およびRDNA4で見つかるすべてのデータ型をサポートしているようです。これには、以前はCDNA4のみで利用可能だったOCP MXスタイルのスケーリングのサポートも含まれます。
さらに、RNDA4に既に存在するものを補完するために、LDS内のサブマトリックスを転置できる新しい命令があります。これらのfp4/fp6バージョンには独自のフィーチャーフラグがあり、これらがコンシューマーGPUに登場する兆候であるか、単なる偶然である可能性があります。
HIPは…CUDA互換性がある?
クラスター
これは、nVidiaがHopperアーキテクチャで導入した「スレッドブロッククラスター」のAMD版のようです。クラスターを特定のシェーダーエンジンにスケジュールできるようで、将来のグラフィックスハードウェアでも利用可能な機能となるようです。
加えて