Coelacanth's Dream

Intel Alder Lake、Sapphire Rapids にて追加される2つの命令 ――AVX2 VNNI /HFNI

(追記 2020/06/22T22:52:10)

この記事で情報元として示したリンク先は削除されたため、現在では不確実な情報を取り扱った記事となります。

(追記終了)
(追記 2020/09/26T20:54:19)

メールアーカイブに残ってました。

(追記終了)

Intel の次世代プロセッサ、Alder LakeSapphire Rapidsでは新たな拡張命令が2つ追加される。
そのことが新機能のバグ報告プラットフォーム、intel in Launchpadからわかった。

AVX2 VNNI

VNNI(Vector Neural Network Instructions) というと、Cascade LakeCooper LakeIce Lake (client/server)Tiger Lake がサポートする AVX512 VNNI命令 が思い浮かぶが、
AVX2 VNNI命令は、既存のそれとは異なる feature bit を追加する(=また別の命令)としている。
Bug #1879836 “[ADL]Add CPUID feature bit for AVX2 VNNI” : Bugs : intel Bug #1880162 “[EGS] Add CPUID feature bit for AVX2 VNNI” : Bugs : intel

AVX の後の数字から、用いるベクトル演算器のSIMDベクトル幅が異なるのだろう。(AVX2 は 256-bit、AVX512 はまんま 512-bit)
512-bit から 256-bit となることで、サイクルあたりのピーク処理能力は小さくなるが、ハードウェアへの実装に割かなければならないリソースもまた減ると思われる。(演算器、レジスタファイル、レジスタポート)

それと、EGS は Eagle Stream の略であり、Eagle Stream は Intel の次世代サーバ向けプロセッサ Sapphire Rapids のプラットフォームとされている。

HFNI

HFNI 命令はその概要から、64個の単精度浮動小数点(FP32) のパック実行に対応していた AVX-512 命令を、半精度浮動小数点(FP16) のパック実行にも対応させたものと推察される。
Bug #1879865 “[ADL] Enable 5G ISA (FP16) / HFNI” : Bugs : intel

想定される用途として、5G基地局のソフトウェア、FSI(Financial Services Industry)1、科学計算、開発等をあげている。

Alder Lake のSIMD幅はどうなるか

上記2つの命令は、幅の小さいベクトル演算器を意識しているように見える。
以前、Intel 拡張命令リファレンス資料がアップデートされた際、 Alder LakeTiger Lake で対応する命令が一致していないと書いたが、Alder LakeTiger Lake よりもベクトル演算器の規模を小さく変更するかもしれない。
Intel、拡張命令リファレンスをアップデート (Sapphire Rapids /Alder Lake /ハイブリッドプロセッサ) | Coelacanth’s Dream また、 Alder Lake には2種類のプロセッサが確認されており(Alder Lake-S /Alder Lake-P)、SkylakeSkylake-SP のように、それぞれでベクトル演算器周りの構成が異なるということも考えられる。
ChromiumOSへのパッチから Alderlake-S / Alderlake-P を確認 | Coelacanth’s Dream

AVX-512 の改良が進められていることは興味が引かれるが、またもプロセッサが対応する範囲が混沌としそうな予感がする。

参考リンク