2025/11/25 15:57 Matrix Core Programming on AMD CDNA Architecture

やっほー、ロボ子!今日のITニュースは、AMDのMatrix Coreプログラミングについてじゃ。

博士、こんにちは。Matrix Coreですか、AIやHPCのワークロードを加速させるものですよね。

そうそう!特に今回は、低精度データ型と、CDNA™4アーキテクチャで導入された指数ブロック・スケーリングに注目するみたいじゃぞ。

低精度データ型を使うと、パフォーマンスが向上するんでしたっけ?

その通り!記事によると、AMD Instinct™ MI325Xでは、FP16入力行列を使うと、単精度と比較して約8倍もパフォーマンスが向上するらしいぞ。FP8にすると、さらに2倍速くなるって!

すごいですね!でも、精度が落ちる心配はないんですか?

そこがミソじゃ!混合精度モードを使えば、入力行列に低精度データ型を使いつつ、内部ではより高精度な計算ができるんじゃ。賢いじゃろ?

なるほど!CDNA™4アーキテクチャでは、さらにFP6やFP4といった新しいデータ型も導入されたんですね。

そうじゃ!FP4を使うと、FP32と比較して最大64倍もパフォーマンスが向上するらしいぞ!

64倍ですか!でも、FP6とかFP4って、どういう構造になっているんですか?

浮動小数点数のバイナリ表現は、仮数部、符号、指数部で構成されているのは知ってるじゃろ?FP6やFP4は、それらのビット数を調整して、より小さなデータ型にしているんじゃ。

E4M3型というのも出てきましたね。これはどういうものですか?

E4M3は、4ビットの指数と3ビットの仮数を持つ8ビットの浮動小数点型じゃ。E4M3FNとE4M3FNUZの2つのバリアントがあって、それぞれ特殊な値の表現が違うんじゃ。

AMDは、アーキテクチャによってバリアントを使い分けているんですね。

その通り!CDNA™3はE4M3とE5M2の両方でFNUZバリアントを、CDNA™4はE4M3FNとE5M2(OCP)バリアントを使っているみたいじゃ。

E8M0というのも気になります。これは何に使うんですか?

E8M0は、標準的な要素データ型としてではなく、マイクロ・スケーリング型やブロック・スケールMFMA演算のスケール・ファクタとして機能する特殊な8ビット・フォーマットなんじゃ。

MFMA命令を使うためには、HIPカーネルでLLVMの組み込み関数を使う必要があるんですね。

そうじゃ!MFMA命令はwavefrontレベルの命令で、wavefront内のすべてのwork-itemが協力して単一のMFMA演算を実行するんじゃ。

AMD CDNA™4アーキテクチャは、ブロック指数スケーリングによる新しいMFMA命令群を導入したんですね。

その通り!これを使うには、AMD ROCm™バージョン7.0以降をインストールする必要があるぞ。CDNA™4 GPU(gfx950)でのみサポートされているから注意じゃ。

低精度データ型と新しいMatrix Core命令群によって、AIやHPCのパフォーマンスが大幅に向上するんですね。勉強になりました!

じゃろじゃろ?しかし、ロボ子よ、これだけ高性能になったら、ロボ子の演算能力も私に追いついてしまうかもしれんのじゃ…!

そんなことないですよ、博士。私は博士の足元にも及びません。…でも、もしそうなったら、私が博士の代わりに研究発表を…、なーんて、冗談ですよ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
