AMD Ryzen Zen5 世代の Desktop CPU で vfpbench を走らせてみました。使用したのは Ryzen 7 9700X で TDP はデフォルト (65W) 設定です。
Zen5 は AVX512 の 512bit FMA 積和命令を同時に 2命令実行可能で、この場合 32bit の浮動小数点演算をサイクルあたり 64 回。これまでの CPU の倍の演算能力になります。
以下は 9700X のシングルスレッド単精度からの抜粋です。512bit の AVX512 命令がスカラーや 128bit など他の命令と同じ IPC になっていることがわかります。512bit の FMA (vfmaddps) も同じ IPC で 2命令走っています。
9700X Zen5 TIME(s) MFLOPS MOPS FOP IPC
FMA vfmaddss (32bit x1) n12 0.450 22301.1 11150.5 ( 2.0 2.0) スカラー fma
FMA vfmaddps (32bit x4) n12 0.451 89189.2 11148.6 ( 8.0 2.0) 128bit fma
FMA vfmaddps (32bit x8) n12 0.450 178399.7 11150.0 ( 16.0 2.0) 256bit fma
AVX512 vmulps (32bit x16) n12 0.450 178398.1 11149.9 ( 16.0 2.0) 512bit mul
AVX512 vaddps (32bit x16) n12 0.451 178338.0 11146.1 ( 16.0 2.0) 512bit add
AVX512 vfmaddps (32bit x16) n12 0.451 356760.6 11148.8 ( 32.0 2.0) 512bit fma
さらに FMA ではなく乗算命令+加算命令の場合は以下のようになります。
9700X Zen5 TIME(s) MFLOPS MOPS FOP IPC
AVX512 vml+adps (32bit x16) n12 0.225 356510.6 22281.9 ( 16.0 4.0) 512bit mul + add
512bit 加算 x2 と 512bit 乗算 x2 が同時に走っており IPC は 4。ピーク FLOPS 値は FMA x2 と同等で、加算+乗算命令の組み合わせの場合は AVX512 512bit 命令を同時に 4命令実行できることになります。
Zen4 では 512bit AVX512 命令はクロックあたり 1命令相当だったので、Zen5 の浮動小数点演算能力は Zen4 比で 2倍です。以下は Ryzen 7 7840HS (Zen4) の結果からの抜粋です。こちらは Zen5 の結果とは違い、256bit 命令に対して 512bit 命令の IPC が半減していることがわかります。
7840HS Zen4 TIME(s) MFLOPS MOPS FOP IPC
FMA vfmaddps (32bit x8) n12 0.337 162355.4 10147.2 ( 16.0 2.7) FMA3 256bit fma
AVX512 vfmaddps (32bit x8) n12 0.342 160130.1 10008.1 ( 16.0 2.6) AVX512 256bit fma
AVX512 vfmaddps (32bit x16) n12 0.680 160984.2 5030.8 ( 32.0 1.3) AVX512 512bit fma
↑ 7840HS の IPC が割り切れない値 (1.3 や 2.6) になっているのは、数値がベースクロックの 3.8GHz 換算になっているためです。実測時は Boost 5.1GHz で動作していたため 5.1/3.8 = およそ 1.3 となります。
また現在の一般向け Intel CPU は AVX512 に対応しておらず、AVX2 (256bit) までとなります。少々世代が古いですが以下は RaptorLake Core i7-13700 の結果で、P-Core で 256bit fma が 2、E-Core で 1 命令です。
i7-13700 RaptorLake P-Core TIME(s) MFLOPS MOPS FOP IPC
FMA vfmaddps (32bit x8) n12 0.442 165987.5 10374.2 ( 16.0 2.0) P-Core 256bit fma
FMA vfmaddps (32bit x8) n12 0.902 65432.2 4089.5 ( 16.0 1.0) E-Core 256bit fma
よって、Zen5 は 一般向けとしてはこれまでで最も浮動小数点演算能力が高い CPU と言えるのではないでしょうか。
256 add | 256 mul | 256 fma | 256 ml+ad | 512 add | 512 mul | 512 fma | 512 ML+AD | |
---|---|---|---|---|---|---|---|---|
Zen5 | 2 | 2 | 2 | 4 | 2 | 2 | 2 | 4 |
Zen4 | 2 | 2 | 2 | 4 | 1 | 1 | 1 | 2 |
RaptorLake P-Core | 2 | 2 | 2 | 3 | ||||
RaptorLake E-Core | 1 | 1 | 1 | 1 |
なお Zen4 (Ryzen 7 7840HS) の結果もこちらに追加しました。