AVX-512 のハードウェア的な実装と性能について

Ryohei Nishimura
axinc
Published in
Jan 31, 2023

AVX-512 対応を将来の ailia SDK のリリースに向けて実装中ですが、性能を引き出すにあたって理解すべきハードウェア的な実装についての話を記事にします。

ailia meets AVX512

AVX-512 は x86 アーキテクチャの 512 ビット幅の SIMD 命令セットで、細かいことは英語版 Wikipedia の記事を参照していただくとして、従来の 256 ビット幅の AVX2 に比べてレジスタ長が倍になっているのが最大の特徴と言えます。それでは、レジスタ長が倍ならば理論性能も倍かと期待しますが、そう簡単な話ではありません。

まずは Intel の CPU について話をしますが、 Skylake / Sunny Cove / Golden Cove マイクロアーキテクチャの基本構成は、 256 ビットの FMA 演算器が 2 基と、 512 ビットの FMA 演算器が 1 基というもので、 AVX2 の理論性能は 256 ビット × 2 に対して、 AVX-512 は 256 ビットの FMA 演算器を束ねて 512 ビット扱いにすることで、 512 ビット × 2 と理論性能が倍増する設計になっています。

マイクロアーキテクチャの構成はこうなのですが、実際の CPU 製品においては、 Xeon の上位モデル(具体的なモデルは Intel の製品情報を参照)以外の製品の 512 ビット FMA 演算器は無効化されています。この無効化の結果、 AVX2 の理論性能が 256 ビット × 2 に対して、 AVX-512 の理論性能も 256 ビット × 2 の束の分で、つまりイコールだということになります。

理論性能が同じならば、実性能はどうか、という話になりますが、 Intel の CPU の周波数は、 256 ビット幅レジスタを使うと落ち、 512 ビット幅レジスタを使うとさらに大きく低下するという設計になっています。ここから Turbo Boost で周波数にボーナスが乗り、 Turbo Boost 込みの最高周波数は変わらないようですが、実運用では AVX-512 の 512 ビット幅レジスタ使用時の周波数は非使用時に比べて低下するとみて良いでしょう。

最近発表された、 AVX-512 対応の AMD のマイクロアーキテクチャ「Zen 4」だとどうなるか、ですが、こちらは 256 ビット × 2 の FMA 演算器のみの設計で、上位モデルであろうとも AVX-512 の理論性能は AVX2 と同じになります。ただし、 SIMD レジスタを使うことに伴う周波数低下はないとされていますので、 AVX-512 を使って却って性能が悪化するというケースは稀になるでしょう。

ここまではあくまでも理論性能の話で、実際には使える命令の種類も増えますので、同一のロジックをより効率の良い形で組むことで性能向上につながるケースもあると思います。ただ、現行の CPU 製品では、何も考えずに性能が伸びるほど甘い実装になっていない点には注意が必要だと思います。

ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。

--

--