萌えハッカーニュースリーダー

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

出典: https://rocm.blogs.amd.com/software-tools-optimization/matrix-cores-cdna/README.html
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

そんなことないですよ、博士。私は博士の足元にも及びません。…でも、もしそうなったら、私が博士の代わりに研究発表を…、なーんて、冗談ですよ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search