AVX-512は、2013 年 7 月にIntelによって提案されたx86命令セット アーキテクチャ(ISA)用の256 ビットAdvanced Vector Extensions SIMD命令の 512 ビット拡張であり、2016 年の Intel Xeon Phi x200 (Knights Landing) で最初に実装され、[1]その後、いくつかのAMDおよびその他の Intel CPU に実装されました (以下のリストを参照)。AVX-512 は、個別に実装できる複数の拡張機能で構成されています。[2]このポリシーは、命令ブロック全体を実装するという従来の要件からの逸脱です。すべての AVX-512 実装では、コア拡張 AVX-512F (AVX-512 Foundation) のみが必要です。
ほとんどの 256 ビット命令を拡張するほかに、この拡張により、新しいデータ変換、スキャッター演算、順列などのさまざまな新しい演算が導入されます。[2] AVX レジスタの数は 16 から 32 に増加し、8 つの新しい「マスク レジスタ」が追加され、変数の選択と命令の結果のブレンドが可能になります。ベクター長 (VL) 拡張を備えた CPU (ほとんどの AVX-512 対応プロセッサに含まれています (§ AVX-512 を備えた CPU を参照)) では、これらの命令は 128 ビットおよび 256 ビットのベクター サイズでも使用できます。
AVX-512は、Intelがプロセッサに導入した最初の512ビットSIMD命令セットではありません。IntelのLarrabeeプロジェクトから派生した第1世代Xeon Phiコプロセッサで使用されていた以前の512ビットSIMD命令は類似していますが、バイナリ互換性はなく、ソース互換性は部分的にしかありません。[1]
AVX-512の後継は2023年7月に発表されたAVX10であり[3]、パフォーマンスコアと効率コアの両方で動作します。
命令セット
AVX-512 命令セットは、それぞれ独自の CPUID 機能ビットを持つ複数の個別のセットで構成されています。ただし、通常は、それらを実装するプロセッサの世代ごとにグループ化されます。
F、CD、ER、PF: Xeon Phi x200 (Knights Landing)および Xeon Gold/Platinum ( Skylake SP "Purley") で導入され、最後の 2 つ (ER と PF) は Knights Landing に固有です。
- AVX-512 Foundation (F) – EVEXコーディングスキームを使用して、 ほとんどの32ビットおよび64ビットベースのAVX命令を拡張し、512ビットレジスタ、演算マスク、パラメータブロードキャスト、組み込み丸めおよび例外制御をサポートします。Knights LandingおよびSkylake Xeonによって実装されています。
- AVX-512競合検出命令(CD) – より多くのループをベクトル化 できるようにする効率的な競合検出。Knights Landing [1]とSkylake Xによって実装されている。
- AVX-512指数および逆数命令 (ER) -指数および逆数演算は超越演算の実装を支援するために設計されており、Knights Landing [1]によって実装されました。
- AVX-512 プリフェッチ命令 (PF) – Knights Landing によって実装された新しいプリフェッチ機能[1]
VL、DQ、BW: Skylake X およびCannon Lakeで導入されました。
- AVX-512 ベクトル長拡張 (VL) – ほとんどの AVX-512 操作を拡張し、XMM (128 ビット) および YMM (256 ビット) レジスタでも操作できるようにします[4]
- AVX-512ダブルワードおよびクワッドワード命令(DQ) - 新しい32ビットおよび64ビットAVX-512命令を追加[4]
- AVX-512バイトおよびワード命令(BW) - AVX-512を拡張して8ビットおよび16ビットの整数演算をカバーする[4]
IFMA、VBMI:キャノンレイク で導入されました。[5]
- AVX-512 整数融合乗算加算(IFMA) – 52 ビット精度を使用した整数の融合乗算加算。
- AVX-512 ベクトル バイト操作命令 (VBMI) は、 AVX-512BW には存在しなかったベクトル バイト置換命令を追加します。
4VNNIW、4FMAPS:ナイツミル で導入されました。[6] [7]
- AVX-512 ベクトル ニューラル ネットワーク命令ワード可変精度 (4VNNIW) - ディープラーニング、拡張ワード、可変精度用ベクトル命令。
- AVX-512 融合乗算累積パック単精度 (4FMAPS) - ディープラーニング、浮動小数点、単精度のベクトル命令。
VPOPCNTDQ: ベクトルポピュレーションカウント命令。Knights MillとIce Lakeで導入されました。[8]
VNNI、VBMI2、BITALG: Ice Lakeで導入されました。[8]
- AVX-512 ベクトル ニューラル ネットワーク命令 (VNNI) – ディープラーニング用のベクトル命令。
- AVX-512 ベクトル バイト操作命令 2 (VBMI2) – シフトによるバイト/ワードのロード、ストア、連結。
- AVX-512 ビット アルゴリズム (BITALG) – VPOPCNTDQ を拡張するバイト/ワードビット操作命令。
VP2INTERSECT: Tiger Lake で導入されました。
- AVX-512 ベクトルペア交差からマスクレジスタのペアへ (VP2INTERSECT)。
GFNI、VPCLMULQDQ、VAES: Ice Lakeで導入されました。[8]
- これらは、AVX-512 の機能そのものではありません。AVX-512 と組み合わせることで、GFNI、PCLMULQDQ、AES 命令の EVEX エンコード バージョンが有効になります。
エンコーディングと機能
AVX と AVX2 で使用されるVEXプレフィックスは柔軟性があるものの、Intel が AVX-512 に追加したい機能に対応する余地がありませんでした。そのため、 EVEXという新しいプレフィックスが定義されました。
VEXと比較して、EVEXには以下の利点があります。[7]
- 32 個の 512 ビット レジスタを許可する拡張レジスタ エンコーディング。
- ほとんどの AVX-512 命令をマスクするための 8 つの新しい opmask レジスタを追加します。
- ブロードキャストを自動的に実行する新しいスカラー メモリ モードを追加します。
- 各命令に明示的な丸め制御の余地を追加します。
- 新しい圧縮変位メモリアドレッシング モードを追加します。
AVX-512 の拡張レジスタ、SIMD 幅ビット、および opmask レジスタは必須であり、すべて OS からのサポートが必要です。
SIMDモード
AVX-512 命令は、128/256 ビットの AVX/AVX2 命令とパフォーマンスの低下なく混在できるように設計されています。ただし、AVX-512VL 拡張により、128/256 ビット レジスタ XMM/YMM で AVX-512 命令を使用できるため、ほとんどの SSE および AVX/AVX2 命令には、オプマスクや追加レジスタなどの新機能にアクセスできる EVEX プレフィックスでエンコードされた新しい AVX-512 バージョンがあります。AVX-256 とは異なり、新しい命令には新しいニーモニックはありませんが、AVX と名前空間を共有しているため、ソース コードでは命令の VEX エンコード バージョンと EVEX エンコード バージョンの区別があいまいになっています。AVX-512F は 32 ビットと 64 ビットの値でのみ機能するため、バイトまたはワードで動作する SSE および AVX/AVX2 命令は、AVX-512BW 拡張 (バイトとワードのサポート) でのみ使用できます。[7]
拡張レジスタ
SIMDレジスタ ファイルの幅は256 ビットから 512 ビットに増加し、レジスタ ZMM0 ~ ZMM31 は 16 個から合計 32 個に拡張されます。これらのレジスタは、AVX 拡張の 256 ビット YMM レジスタ、ストリーミング SIMD拡張の 128 ビット XMM レジスタとしてアドレス指定できます。また、EVEX エンコード形式を使用する場合、従来の AVX および SSE 命令を拡張して、16 個の追加レジスタ XMM16 ~ XMM31 および YMM16 ~ YMM31 で動作させることができます。
Opmaskレジスタ
AVX-512 ベクター命令は、どの値を宛先に書き込むかを制御するために opmask レジスタを指定することができます。命令エンコーディングはこのフィールドに対して 0 ~ 7 をサポートしていますが、値 1 ~ 7 に対応するマスクとして使用できるのは、opmask レジスタ k1 ~ k7 (k0 ~ k7 のうち) のみです。一方、値 0 は、opmask レジスタが使用されていないことを示すために予約されています。つまり、ハードコードされた定数 ('k0' の代わりに) がマスクされていない操作を示すために使用されます。特別な opmask レジスタ 'k0' は、機能する有効なレジスタであり、opmask レジスタ操作命令で使用したり、宛先 opmask レジスタとして使用したりできます。[9]フラグは opmask の動作を制御します。これは、マスクによって選択されていないすべてをゼロにする "ゼロ" または選択されていないすべてをそのままにする "マージ" のいずれかです。マージの動作はブレンド命令と同じです。
opmask レジスタは通常 16 ビット幅ですが、AVX-512BW 拡張により最大 64 ビットにすることができます。[7]ただし、実際に使用されるビット数は、マスクされる命令のベクター タイプによって異なります。32 ビットのシングル フロートまたはダブル ワードの場合、512 ビット レジスタの 16 要素をマスクするために 16 ビットが使用されます。ダブル フロートおよびクアッド ワードの場合、最大 8 ビットのマスク ビットが使用されます。
opmask レジスタは、本来は要素幅を持たないいくつかのビット単位の命令が AVX-512 に追加された理由です。たとえば、ビット単位の AND、OR、または 128 ビット シャッフルは、ダブルワードとクアッドワードの両方のバリエーションで存在し、唯一の違いは最終的なマスクにあります。
新しいopmask命令
opmask レジスタには、レジスタを直接操作する新しいミニ拡張命令があります。AVX-512 の他の命令とは異なり、これらの命令はすべて VEX エンコードされています。初期の opmask 命令はすべて 16 ビット (ワード) バージョンです。AVX-512DQ では、8 つの 64 ビット値をマスクするニーズに合わせて 8 ビット (バイト) バージョンが追加され、AVX-512BW では、最大 64 個の 8 ビット値をマスクできるように 32 ビット (ダブル) および 64 ビット (クアッド) バージョンが追加されました。KORTEST および KTEST 命令は、マスク レジスタに基づいて x86 フラグを設定するために使用できます。これにより、非 SIMD x86 分岐および条件付き命令と一緒に使用できます。
AVX-512 基盤の新しい指示
AVX-512 命令の多くは、古い SSE または AVX 命令の EVEX バージョンにすぎません。ただし、新しい命令や、新しい AVX-512 バージョンに置き換えられた古い命令もいくつかあります。新しい命令または大幅に変更された命令を以下に示します。これらの基本命令には、AVX-512VL および AVX-512BW からの拡張機能も含まれます。これらの拡張機能は、新しい命令ではなく、これらの命令の新しいバージョンを追加するだけだからです。
マスクを使用してブレンドする
SSE4のブレンド命令には EVEX プレフィックスバージョンはありません。代わりに、AVX-512 には、マスク レジスタをセレクターとして使用する新しいブレンド命令セットがあります。以下の一般的な比較マスク命令と一緒に、これらを使用して、 XOPの VPCMOV に似た汎用 3 項演算または cmov を実装できます。
ブレンディングは EVEX エンコーディングの不可欠な部分であるため、これらの命令は基本的な移動命令と見なすこともできます。ゼロ化ブレンド モードを使用すると、これらの命令をマスキング命令として使用することもできます。
マスクと比較
AVX-512F には 4 つの新しい比較命令があります。XOP の同等の命令と同様に、即値フィールドを使用して 8 つの異なる比較から選択します。ただし、 XOPのインスピレーションとは異なり、結果はマスク レジスタに保存され、最初はダブルワードとクワッドワードの比較のみをサポートします。AVX-512BW 拡張では、バイト バージョンとワード バージョンが提供されます。命令には 2 つのマスク レジスタを指定できることに注意してください。1 つは書き込み用、もう 1 つは通常のマスクを宣言するためのものです。[7]
論理セットマスク
マスクを設定する最後の方法は、論理セット マスクを使用することです。これらの命令は AND または NAND のいずれかを実行し、結果値がゼロかゼロ以外かに基づいて宛先の opmask を設定します。比較命令と同様に、これらは 2 つの opmask レジスタ (1 つは宛先として、もう 1 つは通常の opmask) を使用することに注意してください。
圧縮と拡張
圧縮命令と展開命令は、同じ名前のAPL操作と一致します。これらの命令は、他の AVX-512 命令とは少し異なる方法で opmask を使用します。圧縮は、マスクでマークされた値のみを保存しますが、スキップしてマークされていない値のためのスペースを予約しないことで、圧縮された状態で保存します。展開は、マスクで指定された数の値をロードし、選択した位置に展開することで、逆の動作をします。
並べ替え
完全な 2 つの入力順列のために、新しい順列命令セットが追加されました。これらはすべて 3 つの引数、2 つのソース レジスタ、および 1 つのインデックスを受け取ります。結果は、最初のソース レジスタまたはインデックス レジスタのいずれかを上書きすることによって出力されます。AVX-512BW は命令を拡張して 16 ビット (ワード) バージョンも含め、AVX-512_VBMI 拡張は命令のバイト バージョンを定義します。
ビット単位の3値論理
追加された2つの新しい命令は、3つの入力間のすべての可能なビット演算を論理的に実装できます。これらは、3つのレジスタと8ビットの即値フィールドを入力として受け取ります。出力の各ビットは、入力内の対応する3つのビットを参照して、8ビットの即値の8つの位置の1つを選択することで生成されます。3ビットでは8つの組み合わせしかできないため、これにより、3つの入力に対するすべての可能なビット演算を実行できます。[7] これらは、AVX-512Fの唯一のビットベクトル命令です。2つのソースSSEおよびAVXビットベクトル命令AND、ANDN、OR、およびXORのEVEXバージョンが、AVX-512DQで追加されました。
ダブルワード バージョンとクワッドワード バージョンの違いは、opmask の適用のみです。
コンバージョン
多数の変換命令または移動命令が追加されました。これにより、SSE2 から使用できる変換命令のセットが完成します。
浮動小数点分解
AVX-512F のユニークな新機能の中には、浮動小数点値を分解し、特殊な浮動小数点値を処理する命令があります。これらのメソッドは完全に新しいため、スカラー バージョンも存在します。
浮動小数点演算
これは新しい浮動小数点法の2番目のセットであり、新しいスケーリングと逆数の近似計算、および平方根の逆数が含まれています。近似逆数命令は、相対誤差が最大で2 −14であることを保証します。[7]
放送
その他
セットごとの新しい指示
競合検出
AVX-512競合検出(AVX-512CD)の命令は、通常は安全にベクトル化できないループ内の要素の競合のないサブセットを効率的に計算できるように設計されています。[10]
指数関数と逆数
AVX-512指数および逆数(AVX-512ER)命令には、AVX-512ファンデーションの命令よりも正確な近似逆数命令が含まれており、相対誤差は最大2 −28です。また、相対誤差が最大2 −23である2つの新しい指数関数も含まれています。[7]
プリフェッチ
AVX-512 プリフェッチ (AVX-512PF) 命令には、 AVX2および AVX-512で導入された新しいスキャッターおよびギャザー機能用の新しいプリフェッチ操作が含まれています。T0プリフェッチはレベル 1 キャッシュへのプリフェッチを意味し、はT1レベル 2 キャッシュへのプリフェッチを意味します。
4FMAPSと4VNNIW
2 つの命令セットは、複数の処理の反復を実行します。これらは通常、Xeon Phi 製品にのみ搭載されています。
BW、DQ、VBMI
AVX-512DQ では、新しいダブルワードおよびクワッドワード命令が追加されます。AVX-512BW では、同じ命令のバイト バージョンとワード バージョンが追加され、AVX-512F ではダブルワード/クワッドワード命令のバイト バージョンとワード バージョンが追加されます。AVX-512BW ではワード形式のみを取得するいくつかの命令は、AVX-512_VBMI 拡張 (、、、) によってバイト形式を取得VPERMBします。
VPERMI2BVPERMT2BVPMULTISHIFTQB
マスク命令セットに 2 つの新しい命令が追加されました:KADDおよびKTEST(AVX-512DQ では B および W 形式、AVX-512BW では D および Q)。ワード形式のみだった残りのマスク命令は、AVX-512DQ ではバイト形式、AVX-512BW ではダブルワード/クワッドワード形式になりました。は、AVX-512BW によっておよびKUNPCKBWに拡張されました。
KUNPCKWDKUNPCKDQ
AVX-512DQ によって追加された命令の中には、AVX-512F では AVX-512 バージョンが提供されなかったいくつかの SSE および AVX 命令があり、その中には 2 つの入力ビット単位命令と整数抽出/挿入命令がすべて含まれています。
完全に新しい手順については以下で説明します。
浮動小数点命令
3 つの新しい浮動小数点演算が導入されました。これらは AVX-512 に新しく追加されただけでなく、パック/SIMD バージョンとスカラー バージョンの両方があります。
命令VFPCLASSは、浮動小数点値が 8 つの特殊な浮動小数点値のいずれかであるかどうかをテストします。8 つの値のどれが出力マスク レジスタのビットをトリガーするかは、即値フィールドによって制御されます。VRANGE命令は、即値フィールドの値に応じて最小または最大の演算を実行します。即値フィールドは、演算が絶対的に行われるかどうか、および符号の処理方法を個別に制御することもできます。VREDUCE命令は単一のソースを操作し、そのソース値の整数部分とその小数部の即値フィールドで指定されたビット数を減算します。
その他の指示
VBMI2
VPCOMPRESS と VPEXPAND をバイトおよびワードのバリアントで拡張します。シフト命令が新しく追加されました。
ベトナム
ベクトルニューラルネットワーク命令: [11] AVX512-VNNIは、以下に説明するEVEXコード命令を追加します。AVX-512Fでは、これらの命令は512ビットベクトルで動作でき、AVX-512VLではさらに128ビットおよび256ビットベクトルのサポートが追加されます。
後のAVX-VNNI拡張では、 128 ビットまたは 256 ビットのベクトルでのみ動作できるこれらの命令のVEXエンコーディングが追加されました。AVX-VNNI は AVX-512 スイートの一部ではなく、AVX-512F を必要とせず、独立して実装できます。
IFMA
整数融合乗算加算命令。AVX512-IFMA は、以下に説明するEVEXコード命令を追加します。
別のAVX-IFMA命令セット拡張は、これらの命令のVEXエンコーディングを定義します。この拡張は AVX-512 スイートの一部ではなく、独立して実装できます。
VPOPCNTDQ と BITALG
VP2インターセクト
GFNI
ガロア体新命令は暗号化に有用であり、[12] AES、 Camellia、SM4で使用されるようなRijndaelスタイルのSボックスを実装するために使用できる。[13]これらの命令は、ネットワークや信号処理におけるビット操作にも使用できる。[12]
GFNI はスタンドアロンの命令セット拡張であり、AVX または AVX-512 とは別に有効にできます。CPU によって AVX および AVX-512F のサポートが指定されているかどうかに応じて、GFNI サポートにより、128、256、または 512 ビットのベクターで動作するレガシー (SSE)、VEX、または EVEX コードの命令が有効になります。
VPCLMULQDQ
AVX-512F 付き VPCLMULQDQ は、EVEX エンコードされた 512 ビットのPCLMULQDQ命令を追加します。AVX-512VL 付きでは、EVEX エンコードされた 256 ビットおよび 128 ビット バージョンが追加されます。VPCLMULQDQ のみ (つまり、AVX512 以外の CPU) では、VEX エンコードされた 256 ビット バージョンのみが追加されます。(VEX エンコードされた 128 ビット バージョンが使用可能かどうかは、異なる CPUID ビット PCLMULQDQ および AVX で示されます。) 128 ビットより広い命令のバリエーションは、入力レジスタの各 128 ビット部分に対して同じ操作を実行しますが、異なる 128 ビット フィールドからクワッドワードを選択するようには拡張しません (imm8 オペランドの意味は同じです。128 ビット フィールドの下位または上位クワッドワードが選択されます)。
ヴァエス
VEX および EVEX でエンコードされたAES命令。128 ビットより広い命令のバリエーションは、入力レジスタの各 128 ビット部分に対して同じ操作を実行します。VEX バージョンは、AVX-512 サポートなしで使用できます。
BF16
Bfloat16数値を操作する AI アクセラレーション命令。
FP16
以前のF16C命令セットの拡張で、binary16浮動小数点数 (FP16、float16、または半精度浮動小数点数とも呼ばれる) の包括的なサポートが追加されました。新しい命令は、単精度および倍精度浮動小数点数で以前に使用できたほとんどの操作を実装し、新しい複素数命令と変換命令も導入しています。スカラーおよびパック演算がサポートされています。
単精度および倍精度形式の命令とは異なり、半精度オペランドは条件付きでゼロにフラッシュされることも(FTZ)、設定に基づいて条件付きでゼロとして扱われることも( DAZMXCSR )、ありません。非正規値は、FP16数値のダイナミックレンジ全体を活用できるように、ハードウェアによってフルスピードで処理されます。FP32およびFP64数値を作成する命令は、依然としてビットを尊重しますMXCSR.FTZ。[14]
算術命令
複雑な算術命令
近似相互指示
比較手順
変換手順
分解手順
移動指示
EVEXエンコード版のレガシー命令
AVX-512 搭載 CPU
- インテル
- ナイツランディング(Xeon Phi x200):[1] [15] AVX-512 F、CD、ER、PF
- ナイツミル(Xeon Phi x205):[8] AVX-512 F、CD、ER、PF、4FMAPS、4VNNIW、VPOPCNTDQ
- スカイレイクSP、スカイレイクX:[16] [17] [18] AVX-512 F、CD、VL、DQ、BW
- キャノンレイク:[8] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI
- カスケード レイク: AVX-512 F、CD、VL、DQ、BW、VNNI
- クーパーレイク: AVX-512 F、CD、VL、DQ、BW、VNNI、BF16
- アイスレイク、[8] ロケットレイク: [19] [20] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、VPOPCNTDQ、BITALG、VNNI、VPCLMULQDQ、GFNI、VAES
- Tiger Lake(PentiumとCeleronを除くが、一部のレビューアはAVX-512サポート付きのCeleron 6305のCPU-Zスクリーンショットを掲載している[21] [22]):[23] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、VPOPCNTDQ、BITALG、VNNI、VPCLMULQDQ、GFNI、VAES、VP2INTERSECT
- Alder Lake(Intelによる公式サポートは一度も行われておらず、新しいCPUでは完全に削除されている注1):[24] [25] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、VPOPCNTDQ、BITALG、VNNI、VPCLMULQDQ、GFNI、VAES、BF16、VP2INTERSECT、FP16
- Sapphire Rapids [26]以降のPコアのみのXeonプロセッサ: AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、VPOPCNTDQ、BITALG、VNNI、VPCLMULQDQ、GFNI、VAES、BF16、FP16
- ケンタウロステクノロジー
- 「CNS」コア(8c / 8t):[27] [28] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI
- アム
^注1 :IntelはAlder Lakeマイクロプロセッサで AVX-512ファミリの命令を公式にはサポートしていません。2022年初頭、IntelはAlder Lakeマイクロプロセッサのシリコン内でAVX-512を無効化(フューズオフ)し、顧客がAVX-512を有効にできないようにしました。 [35] BIOSとマイクロコードリビジョンのレガシーな組み合わせを備えた古いAlder LakeファミリCPUでは、AVX-512用のシリコンを含まないすべての効率コアを無効にすると、AVX-512ファミリの命令を実行することができました。 [36] [37] [24]
パフォーマンス
Intel Vectorization Advisor (バージョン 2017 以降) は、ネイティブ AVX-512 パフォーマンスとベクトルコード品質分析 (「Core」、Xeon、およびIntel Xeon Phiプロセッサ用) をサポートしています。従来のホットスポット プロファイル、アドバイザーの推奨事項、および Intel コンパイラ ベクトル化診断の「シームレスな」統合に加えて、アドバイザー調査分析では AVX-512 ISA メトリックと、散布、圧縮/展開、マスク使用率などの新しい AVX-512 固有の「特性」も提供されます。[38] [39]
一部のプロセッサ(主にIce Lake以前のIntel)では、AVX-512命令により、以前のものよりもさらに大きな周波数スロットリングが発生し、混合ワークロードでペナルティが発生することがあります。追加のダウンクロックは、512ビット幅のベクターによってトリガーされ、実行される命令の性質によって異なります。AVX-512の128ビットまたは256ビット部分(AVX-512VL)を使用すると、これはトリガーされません。その結果、gccとclangは、Intelターゲットに対して256ビットベクターの使用をデフォルトで優先します。[40] [41] [42]
C/ C++コンパイラーは、AVX-512を最も効果的に使用するために、ループの展開とパイプラインのストール防止を自動的に処理します。つまり、言語の組み込み関数を使用してAVX-512の使用を強制しようとするプログラマーは、ソースコードに明示的に記述されたループに遭遇したときに、コンパイラーによって生成されたコードと比較してパフォーマンスが低下することがあります。 [43]他のケースでは、C/C++コードでAVX-512組み込み関数を使用すると、単純に記述されたC/C++と比較してパフォーマンスが向上することがあります。[44]
受付
AVX-512アプリケーションの例は数多くあり、メディア処理、暗号化、ビデオゲーム[45] 、ニューラルネットワーク[46]、さらにはソートにAVX-512を採用しているOpenJDK [47]などがある。
2020年によく引用される発言で、リーナス・トーバルズは「AVX-512が苦痛の死を遂げ、インテルが魔法の命令を作って見栄えのよいベンチマークを作るのではなく、実際の問題を修正し始めることを望む」と述べている[48] 。彼はトランジスタ予算がコアの追加と整数性能に費やされることを望み、浮動小数点ベンチマークを「嫌っている」と述べている[49]。
Numentaは、その「高度にスパースな」[50]ニューラルネットワーク技術を売りにしており、同社のアルゴリズムはAVX-512を搭載したCPU上で実行されるため、GPUは不要だとしている。 [51]同社は、スパース進化トレーニング(SET)アルゴリズム[52]やフォーサイトプルーニング[ 53]などの技術により、同社のアルゴリズムがニューラルネットワークのサイズを縮小しながらも精度を維持しているため、A100に比べて10倍の高速化が実現したと主張している。
参照
- FMA 命令セット(FMA)
- XOP 命令セット(XOP)
- ARM 用スケーラブル ベクター拡張-非常に広いビット幅をサポートする新しいベクター命令セット ( VFPとNEONを補完) と、ハードウェアでサポートされる最大幅に自動的に適応できる単一のバイナリ コード。
参考文献
- Kusswurm, Daniel (2022). C++ とアセンブリ言語による最新の並列プログラミング: AVX、AVX2、AVX-512 を使用した X86 SIMD 開発。ニューヨーク、ニューヨーク: Apress Media LLC。ISBN 978-1-4842-7918-2. OCLC 1304243196.
- ^ abcdef James Reinders (2013 年 7 月 23 日). 「AVX-512 命令」. Intel . 2013 年8 月 20 日閲覧。
- ^ クスヴルム2022、223頁。
- ^ Bonshor, Gavin (2023-07-25). 「IntelがAVX10およびAPX命令セットを発表:ハイブリッドアーキテクチャ向けにAVX-512を統合」AnandTech . 2024-08-21閲覧。
- ^ abc James Reinders (2014 年 7 月 17 日). 「追加の AVX-512 命令」. Intel . 2014 年8 月 3 日閲覧。
- ^ Anton Shilov. 「PC 向け Intel 'Skylake' プロセッサは AVX-512 命令をサポートしない」Kitguru.net . 2015 年 3 月 17 日閲覧。
- ^ 「Intel がプロセッサにディープラーニング命令を追加」2016 年 10 月 14 日。
- ^ abcdefgh 「Intel アーキテクチャ命令セット拡張プログラミング リファレンス」(PDF)。Intel 。2014 年 1 月 29 日閲覧。
- ^ abcdef 「Intel アーキテクチャ命令セット拡張および将来の機能プログラミング リファレンス」。Intel 。2017 年 10 月 16 日閲覧。
- ^ 「インライン asm ドキュメントでは、k0 (X86 AVX-512) がゼロにハードワイヤードされていると誤って記載されています · 問題 #94977 · rust-lang/Rust」。GitHub。
- ^ 「AVX-512 アーキテクチャ/Demikhovsky ポスター」( PDF)。Intel 。2014 年2 月 25 日閲覧。
- ^ 「Intel® Deep Learning Boost」(PDF) . Intel . 2021年10月11日閲覧。
- ^ ab 「Galois Field New Instructions (GFNI) テクノロジー ガイド」。networkbuilders.intel.com。
- ^ Kivilinna, Jussi (2023年4月19日). 「camellia-simd-aesni」. GitHub .
新しいx86-64プロセッサは、Camellia s-boxをより簡単な方法で実装し、さらに優れたパフォーマンスを実現できるGalois Field New Instructions (GFNI)もサポートしています。
- ^ 「Intel® AVX512-FP16 アーキテクチャー仕様、2021 年 6 月、リビジョン 1.0、Ref. 347407-001US」(PDF)。Intel。2021 年 6 月 30 日。2021 年 7 月 4 日に閲覧。
- ^ 「Intel Xeon Phi プロセッサー製品概要」 。Intel。2016年10 月 12 日閲覧。
- ^ 「IntelがXシリーズ・プラットフォームを発表:最大18コア、36スレッド、価格は242ドルから2,000ドル」Ars Technica 2017年5月30日閲覧。
- ^ 「Intel Advanced Vector Extensions 2015/2016: GNU コンパイラ コレクションでのサポート」(PDF)。Gcc.gnu.org 。2016年 10 月 20 日閲覧。
- ^ Patrizio, Andy (2015年9月21日). 「Intelの2016年Xeonロードマップがリーク」. Itworld.org . 2016年10月21日時点のオリジナルよりアーカイブ。2016年10月20日閲覧。
- ^ 「Intel Core i9-11900K レビュー - 世界最速のゲーミングプロセッサー?」www.techpowerup.com . 2021年3月30日。
- ^ 「「gcc に rocketlake を追加する」コミット」gcc.gnu.org。
- ^ 「Intel Celeron 6305 プロセッサー (4M キャッシュ、1.80 GHz、IPU 付き) 製品仕様」ark.intel.com。 2020 年 10 月 18 日時点のオリジナルよりアーカイブ。 2020 年 11 月 10 日閲覧。
- ^ ラップトップ Murah Kinerja Boleh Diadu | HP 14S DQ2518TU、2021 年 6 月 18 日、 2021-08-08取得
- ^ 「GNU コンパイラ コレクション (GCC) の使用: x86 オプション」。GNU。2019年 10 月 14 日閲覧。
- ^ ab Cutress, Ian; Frumusanu, Andrei. 「Intel 12th Gen Core i9-12900K レビュー: ハイブリッド パフォーマンスがハイブリッドの複雑性をもたらす」www.anandtech.com 。 2021 年11 月 5 日閲覧。
- ^ Larabel, Michael. 「Linux 上の Intel Core i9 12900K "Alder Lake" AVX-512」www.phoronix.com . 2021 年 11 月 8 日閲覧。
- ^ Larabel, Michael. 「AVX-512 パフォーマンス比較: AMD Genoa vs. Intel Sapphire Rapids & Ice Lake」www.phoronix.com . 2023年1月19日閲覧。
- ^ 「サーバークラスのCPUと統合型AIコプロセッサテクノロジーを搭載した業界初の高性能x86 SOC」。2022年8月2日。2019年12月12日時点のオリジナルよりアーカイブ。
{{cite web}}: CS1 メンテナンス: 不適切 URL (リンク) - ^ 「x86、x64 命令レイテンシ、メモリレイテンシ、CPUID ダンプ (instlatx64)」。users.atw.hu。
- ^ 「AMD Zen 4ベースのRyzen CPUは最大24コア、AVX512ベクターのサポートを搭載する可能性」。Hardware Times。2021年5月23日。 2021年9月2日閲覧。
- ^ Hagedoorn, Hilbert (2021年5月18日). 「AMD、驚異的な96コアEPYCプロセッサーを開発中」Guru3D.com . 2021年5月25日閲覧。
- ^ clamchowder (2021-08-23). 「Gigabyte Leakの詳細」. Chips And Cheese . 2022年6月10日閲覧。
- ^ W1zzard (2022年5月26日). 「AMDがRobert Hallock氏にZen 4の技術に関する質問に答える」TechPowerUp . 2022年5月29日閲覧。
- ^ Larabel, Michael (2022-09-26). 「Ryzen 9 7950X における AMD Zen 4 AVX-512 パフォーマンス分析」www.phoronix.com。
- ^ Larabel, Michael (2024-02-10). 「GCC 向けの AMD Zen 5 コンパイラー サポートが発表 - 新しい AVX 機能などを確認」www.phoronix.com。
- ^ Alcorn, Paul (2022-03-02). 「Intel が Alder Lake の AVX-512 サポートを廃止、今度はシリコンで廃止」。Tom 's Hardware。2022年 3 月 7 日閲覧。
- ^ Cutress, Ian; Frumusanu, Andrei (2021-08-19). 「Intel Architecture Day 2021: Alder Lake、Golden Cove、Gracemont の詳細」AnandTech . 2021-08-25閲覧。
- ^ Alcorn, Paul (2021-08-19). 「Intel Architecture Day 2021: Alder Lake Chips, Golden Cove and Gracemont Cores」. Tom's Hardware . 2021-08-21閲覧。
- ^ 「Intel Advisor XE 2016 Update 3 の新機能 - Intel ソフトウェア」。Software.intel.com。2016年 10 月 20 日閲覧。
- ^ 「Intel Advisor - Intel ソフトウェア」。Software.intel.com。2016年 10 月 20 日閲覧。
- ^ Cordes, Peter. 「SIMD 命令による CPU 周波数の低下」。Stack Overflow。
- ^ Cordes, Peter. 「Tigerlake の GCC 自動ベクトル化で ZMM レジスタではなく YMM レジスタが使用されるのはなぜか」。Stack Overflow。
- ^ 「LLVM 10.0.0 リリースノート」。
- ^ Matthew Kolbe (2023-10-10). ライトニングトーク: SIMD 組み込み関数を活用して大幅な速度低下を実現する方法 - Matthew Kolbe - CppNow 2023. C++Now . 2023-10-15取得– YouTube 経由。
- ^ Clausecker, Robert (2023-08-05). 「AVX-512命令によるUnicode文字のトランスコーディング」.ソフトウェア:実践と経験. 53 (12): 2430–2462. arXiv : 2212.05098 . doi :10.1002/spe.3261.
- ^ Szewczyk, Chris (2021-11-24). 「RPCS3 PS3エミュレーターは、AVX-512が有効になっているIntel Alder Lake CPUで大幅に性能向上」PC Gamer . 2023年10月11日閲覧。
- ^ アンドレ、カルネイロ;セルパ、マテウス(2021-09-05)。 「AVX-512 上の軽量ディープラーニング アプリケーション」。2021 IEEE コンピュータと通信シンポジウム (ISCC)。アテネ:IEEE。 1 ~ 6 ページ。土井:10.1109/ISCC53001.2021.9631464。
- ^ Parasa, Srinivas (2023-05-30). 「JDK-8309130: Arrays.sort メソッドの x86_64 AVX512 組み込み関数 (int、long、float、および double 配列)」。OpenJDK。2023年 10 月 11 日閲覧。
- ^ Tung, Liam (2020-07-13). 「Linus Torvalds: IntelのAVX-512が苦痛に満ちた死を迎えることを望む」ZDNet . 2023年10月11日閲覧。
- ^ Torvalds, Linus (2020-07-11). 「Alder Lake と AVX-512」. realworldtech.com . 2023-10-11閲覧。
- ^ 「スパース性によりディープラーニングネットワークのパフォーマンスが100倍向上: テクノロジーのデモンストレーション」(PDF) . numenta.com . 2021-05-20 . 2023-10-11閲覧。
- ^ Afifi-Sabet, Keumars (2023-10-08). 「小さなスタートアップ企業が、重要なAIテストでIntelがAMDとNvidiaに勝利するのを助けた — もうゲームオーバーか?」TechRadar . 2023-10-11閲覧。
- ^ Mocanu, Decebal; Mocanu, Elena (2018). 「ネットワーク科学にヒントを得た適応型スパース接続性を備えた人工ニューラルネットワークのスケーラブルなトレーニング」Nature Communications . 9 (1): 2383. Bibcode :2018NatCo...9.2383M. doi :10.1038/s41467-018-04316-3. PMC 6008460 . PMID 29921910.
- ^ Souza, Lucas (2020-10-30). 「ニューラルネットワークにおけるスパース性の事例、パート2:動的スパース性」numenta.com 。 2023年10月11日閲覧。
