Intel Xeon Silver 4114 (Skylake-SP) Linpckベンチマーク

Skylake-SPがリリースされて以来、ベンチマーク走らせていなかったのでやってみました。

■ハードウェア構成

CPU: Intel Xeon Silver 4114 (10core x2CPU)
MEM: DDR4-2400 128GB (16GB x8 枚 )
OS: CentOS 7

■ベンチマーク
HPL 2.2
# プロセスで使うメモリは、おおよそ 32GB 程度に調整

・環境1
GCC: 8.2.0
BLAS: Atlas 3.10.3
MPI: OpenMPI 3.1.1

・環境2
Intel Compiler: 2018 update3 Cluster Edition
BLAS: Intel MKL
MPI: Intel MPI

■スコア
・環境1
Compiler option: mpicc -Ofast -march=native
Score: 223.2GFLOPS
Core frequency: 2.2GHz

・環境2
Compiler option: mpiicc -Ofast -xCORE-AVX512
Score: 413.6GFLOPS
Core frequency: 1.4GHz

■補足情報
Intel Skylake-SP は並列計算時に、 AVX未使用時 AVX2使用時 AVX512使用時で各々にBase frequencyが決まっています。
そしてTurbo Boostにて、各々のBase frequencyに対しプロセスを動かすコア数ごとに動作周波数が変動します。

・AVX未使用時 (10Core動作)
Base frequency: 2.2GHz
Turbo frequency: 2.5GHz

・AVX2使用時 (10Core動作)
Base frequency: 1.8GHz
Turbo frequency: 2.2GHz

・AVX512使用時 (10Core動作)
Base frequency: 1.1GHz
Turbo frequency: 1.4GHz

■評価
前提とする最大理論性能を以下に示します。
AVX未使用時Turbo frequency = 2.5GHz x 4 演算 x 10core x 2CPU = 200GFLOPS
AVX2使用時Turbo frequency = 2.2GHz x 8 演算 x 10core x 2CPU = 352GFLOPS
AVX512使用時Turbo frequency = 1.4GHz x 16 演算 x10core x 2CPU = 448GFLOPS

・環境1のスコアについて
「 -march=native 」指定しているので、 AVX512 なコードを出していると期待している。
実際に AVX2 アーキテクチャの CPU で実行するとエラーを吐いて動作しないことから、少なからずAVX512 なコードになっているのではないか?
しかし、 AVX512使用時Turbo frequency 1.4GHz で動作していない。
考えられることとしては、 GCCでは中途半端にAVX512なコードを出しているだけで(ほとんど AVX2 なコードに近いのか?) AVX512 を最大限最適化していないと見えます。そのためにAVX2使用時Turbo frequencyと同じ 2.2GHz で動作していると見える。
仮に AVX2 のコードと仮定して理論性能と比較しても、実際のスコアは 223.2GFLOPS ですので、最大理論性能の 63% となります。
# これはリーズナブルな値と言えるのか。。。

・環境2のスコアについて
スコアは 413.6GFLOPS ですので、理論性能の 92% となります。
もはやSkylake-SPでは、開発環境にIntelコンパイラとIntel MKLを選択しない理由は無いのではないか?と思える結果でした。

以上