AMDがMI355XのGPU占有率の計算を解説:高い占有率がピークスループットの条件ではない
AMD ROCmチームがCDNA4アーキテクチャ向けのGPU占有率を手動で計算するための技術ガイドを公開した。重要な発見:MI355X上のマトリクス依存カーネルはたった12%の占有率でピークスループットを達成する――CUDAエコシステム出身の実務者にとって直感に反する結果だ。
この記事はAIにより一次情報源から生成されました。
AMD ROCmチームは、CDNA4アーキテクチャ、具体的にはMI355Xアクセラレータ向けのGPU占有率計算に関する包括的な技術ガイドを公開した。このテキストは本番推論またはトレーニング向けのカスタムカーネルを最適化するGPUカーネルエンジニアを対象としており、NVIDIA CUDAエコシステム出身の実務者にとって直接直感に反する発見をもたらす。
占有率とは何か、なぜ手動で計算するのか?
GPUの占有率は、ウェーブフロント(CUDAの用語ではワープ)によってアクティブに埋められている利用可能なリソースの割合を測定する。高い占有率は長らく高いスループットの前提条件と見なされてきた――より多くのアクティブなウェーブフロントは、メモリアクセスのレイテンシを隠す機会を多く意味する。
ガイドの著者たちは異なる立場を取る:占有率は既知のハードウェア制約とカーネルが消費するリソースから完全に導出可能であるため、プロファイリングツールからの不透明なメトリクスとして扱うのではなく、ファーストプリンシプルから理解すべきだ。目標はカーネルを実行する前に占有率を予測できるエンジニアを育成することだ。
4つのリミッターとCDNA4アーキテクチャ
MI355Xは256のCompute Unitが8つのXCDチップに分散され、クロック速度は2.4 GHzだ。各CUには64レーンの4つのSIMDユニットが含まれ、それぞれプライベートなレジスタファイルを持つ。
ガイドは占有率の上限を決定する4つのリソースを特定している。
ベクターレジスタ(VGPR) ―― CDNA4のレジスタファイルはレーンあたり512エントリで、レジスタは通常レジスタとアキュムレータレジスタで共有されている。これはアキュムレータレジスタ(AccVGPR)が別のプールだったCDNA3との重要な違いだ――AMDは前世代からの知識を転用しているエンジニアはこの前提を更新する必要があると強調している。
スカラーレジスタ(SGPR) ―― SIMDユニットあたり約800で、ウェーブフロント全体で一様な値に使用される。
ローカルデータ共有(LDS) ―― CDNA3の64 KBからCDNA4では Compute Unitあたり160 KBに増加した。
ワークグループスロット ―― CUあたりの同時アクティブワークグループ数のハードウェア制限。
直感に反する発見:低い占有率でピークスループット
ガイドの中心的な発見はCUDA最適化の経験からの直感に直接反するものだ。MI355Xが約5 PFLOP/sを達成するMXFP8演算のAMDマイクロベンチマークは、高い命令レベル並列性(ILP=8)を持つカーネルがわずか12%の占有率でも4.82 PFLOP/sを維持することを示している。これは96%の占有率でのILP=2カーネルが達成するすべてをも上回る。
理由:CDNA4のマトリクスユニットは少数のアクティブなウェーブフロントでパイプラインを飽和させるほど高速だ。カーネルがウェーブフロント並列性ではなくIPLを通じてレイテンシを隠すことに成功した場合、高い占有率は不必要なだけでなく、レジスタファイルの制約により不可能になることさえある。そしてそれが何の利益ももたらさない。
MXFP8 GEMMの例:同じカーネル、2世代
ガイドには具体的な例が含まれている。128 VGPRと32 KB LDSを消費する256スレッドタイルを持つMXFP8 GEMMカーネルだ。
64 KB LDSを持つCDNA3では:カーネルはLDS制限で25%の占有率を達成する――LDSを共に使い果たすため、同時にアクティブにできるのはCUあたり2つのカーネルだけだ。
160 KB LDSを持つCDNA4では:同じカーネルはもはやLDS制限ではない。現在はレジスタ制限で、占有率は**50%**に上昇する――CUあたり4インスタンス。同じソースコード、異なるリミッター、2倍高い占有率だ。
文脈:AMDがCUDAとのドキュメントのギャップを縮める
このガイドはROCmソフトウェアのドキュメントを改善し、NVIDIAエコシステムからの移行エンジニアの障壁を下げるAMDの幅広い取り組みの一部だ。CUDAは数十年間、技術ドキュメントの深さで優位に立ってきた――リソース制限と占有率への影響に関するこのような詳細はNVIDIAアーキテクチャでは十分に文書化されていたが、AMD GPUでは実験的な調査や内部コードへの洞察が必要だった。
このようなファーストプリンシプルのガイドはまさにそのギャップを狙っている。何を探しているかを知っているエンジニアが今、カーネルを実行せずに分析的に占有率を導出できるようになり、AMD インフラ上での本番AIモデルの最適化の反復サイクルを加速させる。
よくある質問
- なぜマトリクス依存カーネルはMI355X上で低い占有率でピークスループットを達成できるのですか?
- CDNA4のマトリクスユニットは少数のアクティブなウェーブフロントでもパイプラインを飽和させるほど速い。マイクロベンチマークではILP=8が96%の占有率でのILP=2よりも高い4.82 PFLOP/sをわずか12%の占有率で維持することを示している。
- MI355X上の占有率の4つのリミッターは何ですか?
- 4つのリミッターは:ベクターレジスタ(VGPR、レーンあたり512エントリ、通常レジスタとアキュムレータレジスタで共有)、スカラーレジスタ(SGPR、SIMDあたり約800)、ローカルデータ共有(LDS、Compute Unitあたり160 KB)、ワークグループの空きスロット数だ。
- MI355XはLDSの点でCDNA3とどう違いますか?
- CDNA4 MI355XはLDSをCDNA3の64 KBからCompute Unitあたり160 KBに増加させている。CDNA3では25%の占有率でLDS制限だった同じMXFP8 GEMMカーネルが、CDNA4では現在レジスタ制限になっているため50%の占有率を達成できる。