CPUID に AVX-512 デープラーニング用命令のフラグが追加
将来の Intel x86 CPU に追加される機能を先出しで解説する Intel Architecture Instruction Set Extensions Programming Reference が Sep. 2016 に改定され -025 になった。前回の紹介は id:nminoru:20150925:intelcpu。
https://software.intel.com/sites/default/files/managed/69/78/319433-025.pdf
今回、CPUID 命令の返す CPU feature のフラグに AVX-512 のデープラーニング用命令のものが追加された。追加されたのは以下の 2 種類。
- AVX512_4VNNIW (Vector instructions for deep learning enhanced word variable precision)
- AVX512_4FAPS (Vector instructions for deep learning floating-point single precision)
今回の資料では、実際にどのような命令が追加されたかは公開されなかった。
追記
Sep. 2016 に -025 に改定されたが、同じ月に -026 になった。
今回は AVX512_4VNNIW と AVX512_4FAPS がどのような命令なのか記載されている。
AVX512_4FAPS
追加されたのは 4 命令。
- V4FMADDPS/V4FNMADDPS - Packed Single-Precision Floating-Pointer Fused Multiply-Add (4-iterations)
- V4FMADDSS/V4FNMADDSS - Scalar Signle-Precision Floating-Pointer Fused Multiply-Add (4-iterations)
上記の命令はソースとして指定した 512-bit ZMM レジスタを16組の32ビットの単精度浮動小数とみなしてメモリ上の単精度浮動小数点と乗算ができる。
ただし、それで終わりではなくソースとして指定から連番の ZMM レジスタと続くメモリアドレスがさらに乗算処理される。繰り返しは最大 4 行えるので、1つの命令で ZMM レジスタが 4 本とメモリ 256 バイトを同時処理することができる。
AVX512_VNNIW
追加されたのは 2 命令
- VP4DPWSSD - Dot Product of Signed Words with Dword Accumulation (4-iterations)
- VP4DPWSSD - Dot Product of Signed Words with Dword Accumulation and Saturation (4-iterations)
こちらも 1 命令で 512-bit ZMM レジスタを 4 本分使うことが出来る命令。符号付き 16 ビット整数同士の乗算結果を 32 ビット整数に加算してゆく。