HPCシステムズではエンジニアを募集しています。詳しくはこちらをご覧ください。
HPCシステムズのエンジニア達による技術ブログ

Tech Blog

AMD EPYC Rome の性能検証その2(HPL)

さて、今回から実際のアプリケーションについて検証を行っていきます。
今回の実行するアプリケーションはHPLです。

ご存知の方も多いと思いますが、HPLは行列演算能力を測定するベンチマークプログラムです。
HPLは単純なプログラムであるため、実際の科学技術計算の性能傾向との間には乖離があると指摘されていますが、
未だにTop500の指標として使用されているように、純粋な計算機の演算能力を図る指標としては有用だと考えています。

検証対象のハードウェアは以下の通りとなります。
比較のため、Intel社製ハードウェアも用意しました。

  CPU Memory

OS

AMD EPYC環境 EPYC 7702 ( 2.0GHz / 64core ) x 2 256 GB ( 16GB 3200 MT/s x 16 ) CentOS 7.6
Intel Xeon環境 Xeon Platinum 8268 ( 2.9GHz / 24core ) x 2 192 GB ( 16GB 2933 MT/s x 12 ) CentOS 7.6

前回のブログで書いた通り、今回の検証目的の1つは、EPYCにあった開発環境を調査する、というものがあります。
そのため、前回の記述の通り、EPYCの開発環境として、以下のパッケージを使用して検証を行う事としました。

Compiler MPI Library
AMD Optimizing C/C++ Compiler ( AOCC ) 2.0 OpenMPI 3.1.4 AMD Optimizing CPU Libraries (AOCL) 2.0
Intel Compiler 19.0.5 IntelMPI 2018 update 4 Intel MKL 2019 update 5
GCC 8.2.0 ( local builded )    

GCC については、CentOS 7.6 にもパッケージがインストールされているのですが、新たにビルドしたものを使用します。
OSにインストールされているGCCは Version 4.8.5 であり、HPC Tuning Guide for AMD EPYC™ Processors で推奨されているVersion、 “7.3 or 8.1 以降” を満たしていないためです。

さて、前振りは以上として、結果(GFLops)となります。( N=120000 ) 
表中の、ICは、” Intel Compiler “、IMPIは ” IntelMPI “、OMPIは ” OpenMPI ” の略となります。

並列数 IC+IMPI+MKL GCC+OMPI+MKL AOCC+OMPI+AOCL GCC+OMPI+AOCL
16 724.8 660.29 609.5 613.2
32 1263.6 1166.9 1068.4 1069.2
48 1460.2 1583.6 1469.1 1468.5
128 2244.8 2197.9 2113.3 2105.0

表1 EPYC環境におけるHPL(N=120000)の結果 ( GFLops ) 

並列数 IC+IMPI+MKL IC+IMPI+MKL( AVX2 )
16 1252.6 777.1
32 1931.0 1375.7
48 2078.2 1690.2

表2 Xeon環境におけるHPL(N=120000)の結果 ( GFLops )

表2中の、” IC+IMPI+MKL( AVX2 ) ” は、HPL実行時にMKLの環境変数
” MKL_CBWR ” の値を指定する事で、意図的にAVX2互換モードで動かした結果となります。
また、過去の知見から、HPLの結果は最大5%程度変動する事、パフォーマンスに対するコンパイラの影響は小さい事が判明しています。
そのため、コンパイラ、MPIについては、正常に動作が行われるかどうかの確認の意味合いが強い検証となります。

表1、表2から、以下の事が読み取れます

  • EPYC環境で開発環境を比較した場合、数値演算ライブラリに MKL を使用した場合、AOCLを選択した場合に比べて若干性能が高い結果が得られた。
  • EPYC環境とXeon環境を比較した場合、同一並列数の場合後者の方が高い性能が得られた。この要因は AVX512処理と、その処理に対応したMKLの影響が非常に大きく、MKLをAVX2モードで動作させた場合、EPYCとの性能差は縮まる。
  • EPYC環境とXeon環境について、それぞれ1ノードでの性能という観点で比較した場合、前者はコア数あたりの性能の低さをコア数の多さで補う事で、後者よりも高い性能が得られた。

HPLを実行してみた感想ですが、以外にもEPYC環境においてもIntel社製のMKLが高性能な結果を出しました。
長年にわたりMKLを開発し続けて来たIntel社の技術力の賜物なのだと思います。
しかし、AMD社が作成しているAOCLも、現時点でMKLと比較して極端に性能が低いわけではありません。
自社製CPUというアドバンテージを活かした、今後の性能向上に期待したいところです。

ハードウェアの観点からEPYC環境とXeon環境を比較した場合、印象に残ったのはAVX512規格対応の可否による性能の差と、前者のトータル性能の高さです。
AVX512対応の可否については、結果の数値で見ると、やはり影響は大きいのだなあ、と実感しました。
EPYC CPU がまだAVX2までしか対応できていない現時点では、
AVX512が有効なケースにおいてはXeon側に明確なアドバンテージが見られます。

しかし、逆に、AVX512が有効でない(AVX2までの対応で十分である)状況下では、EPYCとXeonの差はぐっと縮まります。
EPYCとAVX2互換動作Xeonで、同一並列数で比較した場合、後者の方が若干性能が高いですが、
これはそもそものベースクロックの違いが影響していると推測され、同一クロック当たりのコア性能はほぼ同等になっていると考えられます。

科学技術計算を始めとした、現在のソース配布系アプリケーションの現状を見てみますと、
AVX512向けにチューニングされていないケースが多々見受けられます。
そのような場合、プログラムによってはAVX512で性能を十分に活かせない場合もありますので、
コア数の多いEPYCの方が面白いケースも多いのではないかと考えます。

次回はAmber18のベンチマークを報告する予定です、お楽しみに。