富岳の性能

富岳の性能測定には、図31に示したCloverLeaf、TeaLeafとLULESHというベンチマークを用いた。CloverLeafは、流体力学の解析を行うミニアプリケーション、TeaLeafは反復型のスパース線形ソルバのミニアプリケーションである。LULESHは3次元のラグランジアン流体力学計算のミニアプリケーションである。非構造メッシュを用い、メモリの間接参照を行っている。

  • 富岳

    図31 性能の評価には英国のMini-App ConsortiumのCloverLeaf、TeaLeafと米国のローレンスリバモア国立研究所が開発したLULESHを用いた

ここではA64FXとThunderX2(Marvell社のArmアーキテクチャのサーバ向けCPU)とIntelのSkylakeとの比較を行った。これらのCPUの諸元と使用したコンパイラは図32の中の表にまとめられている。

  • 富岳

    図32 A64FXとThunder X2、Skylakeの性能比較

12スレッド以下の構成の測定は、A64FXでは1つのCMGを使用し、TX2とSKLでは1ソケットだけを使用した。13~24スレッドの測定は、A64FXではCMG0とCMG1を使用し、TX2とSKLではソケットあたりのスレッド数は12以下として、2ソケットを使用した。25~48スレッドの測定は、A64FXでは1ノードを使用し、TX2とSKLではソケット当たりのスレッド数は12以下になるようにして、2ノード(4ソケット)を使用して測定を行った。

なお、A64FXの測定は、まだ、コンパイラなどが開発中に行ったものであり、富岳が正式運用に入った時には性能が変わっている可能性がある。

  • 富岳

    図33 12スレッド以下ではA64FXは1個のCMGだけを使用、TX2とSKLは1つのソケットだけを使用。13以上24以下のスレッドの場合は、A64FXは2CMG使用,TX2とSKLは1ノードを使用、25スレッド以上48スレッド以下では、A64FXは1ノードを使用、TX2とSKLは2ノードを使用

図34にCloverLeafの結果を示す。左の棒グラフは実行時間で、右の棒グラフは相対性能を表している。従って、左のグラフでは値が小さいほうが高性能であるが、右のグラフでは値が大きい方が高性能である。横軸はプロセスあたりのスレッド数が1、2、4の3つのケースでさらにプロセス数が1、4、8、12の測定結果が書き込まれている。棒グラフは左から順にA64FX、TX2、SKLの結果となっている。右のグラフを見ると、A64FXの相対性能が高く、スレッド数を増やすとそれにおおよそ比例して性能が上がっていることが分かる。そして、4プロセスでそれぞれ12スレッドを走らせた場合は、1個のA64FXの性能はSkylake 2ノード(4チップ)と同等よりも高い性能を示している。

  • 富岳

    図34 A64FXとTX2、SKLのCloverLeafの性能比較。棒グラフは3本1組で、左からA64FX、TX2、SKLの結果を示している。左のグラフは実行時間で、小さいほうが性能が高いので、見易いように右のグラフでは相対性能に変換して表示している。右端の3本の棒グラフを見ると、A64FX 1チップの方が、SKL4チップよりも相対性能が高いという結果になっている

TeaLeafはメモリバンド幅が性能制約となるベンチマークで、HBM2メモリを使うA64FXが強みを発揮するベンチマークである。1チップのA64FXのシステムは、他のプロセサを4チップ使った場合と比べて2倍以上の性能が得られている。しかし、4スレッド程度でもメモリバンド幅を使い切ってしまうので、それ以上、スレッド数を増やしても性能は向上しない。

  • 富岳

    図35 A64FXとTX2、SKLのTeaLeafの性能比較。左のグラフは実行時間。右のグラフは相対性能。A64FX 1チップでもSKL 4チップより高い性能が得られている

図36はLULESHの結果で縦軸は処理量/秒であり、A64FXの性能はSKLやTX2に比べて低い。特にSKLと比較すると1/3程度の性能しか得られていない。調査の結果、SVE命令の使用が数%しかなく、ベクトル化がうまく行っていないことが判明したという。

  • 富岳

    図36 LULESHの実行性能の比較。SVEがほとんど使われておらず、A64FXの性能はTX2、SKLよりも低く、特にSKLと比べると1/3程度の性能しか得られていない

図37は疎行列の格納方法の比較を示したものである。右側のグラフはminiFEという有限要素法のベンチマークアプリケーションのマトリクス‐ベクトル積の計算時間を示すグラフである。マニュアルでintrinsic命令を使った場合はSliced ELLPACKフォーマットを使った場合は高い性能を示しているが、普通にコンパイルした場合の性能は低い。また、Compressed Sparse Row(CSR)フォーマットを使った場合は、マニュアルでチューニングしても性能は良くない。

コンパイラを改良し、SVEを使ってベクトル化し、メモリバンド幅を使えるコードを作れるようにすることが必要である。

  • 富岳

    図37 疎行列の掛け算性能は格納フォーマットに大きく依存する。Sliced ELLPACK形式は人手でチューニングを行えば高い性能が得られるが、自動では低い性能しか得られない。なお、一番下の青線は理想的なコードでの最小値である

図38はCloverLeafとTeaLeafの処理時間がノード数に逆比例するかという、いわゆる、強スケーリングができているかどうかを示す図である。左のCloverLeafのグラフは2次元の場合は、強スケーリングが成り立っている。TeaLeafの方は128ノード以下では強スケーリングが成り立っているが、それ以上では通信が制約となって実行時間が下げ止まっている。

  • 富岳

    図38 CloverLeafとTeaLeafのスケーリング

図39はA64FXに移植を行ったいくつかのオープンソースのアプリケーションの性能と電力を2ソケットのXeonと比較したものである。グラフの横軸はXeon Platinum 8268に対するA64FX 1チップの実行時間と電力効率をパーセンテージで書いている。A64FXの実行時間がMPASで7%程度遅いのを除けばその他の6アプリケーションでは65%~93%程度の実行時間で、それに加えて、消費電力は35%~52%と半分から1/3となっている。という優秀な結果である。

  • 富岳

    図39 A64FXに移植を行ったオープンソースのアプリケーションのXeonとの性能と消費電力の比較。A64FX 1チップで、2チップのXeon Platinum 8626と同程度の性能で、消費電力は半分以下となっている

(次回に続く)