第2世代のインテル® Xeon Phi™ プロセッサー 7200 ファミリーがリリースされました。インテル® Xeon Phi™ プロセッサーは、1CPU最大72コアで構成されているプロセッサーです。第1世代と異なり、通常のプロセッサーと同様に直接Red Hat Enterprise Linux等のOSをブートさせることが可能です。
クロック周波数が高く比較的少数のコアから構成されている従来のインテル® Xeon® プロセッサーとは異なり、コア数が非常に多いことが特徴です。コア数、つまり並列数が多いことで演算性能が向上する計算プログラムに対して非常に有効なプロセッサーです。
インテル® Xeon Phi™ プロセッサー 7200 ファミリーの性能を調査するため、プロセッサー内のコアの使い方、メモリの使い方の設定により性能が変わるため、設定別にHPLプログラムのベンチマークを実施して実効性能を比較しました。
以下の環境でベンチマークを実行しました。
製品名 | インテル® Xeon Phi™ 7200 |
---|---|
コア数 | 64 |
コア周波数 | 1.3GHz (AVX時動作周波数1.1GHz) |
リソグラフィー | 14nm |
単精度浮動小数点数演算性能 | 5324.8GFLOPS (AVX動作時5325.6GFLOPS) |
倍精度浮動小数点数演算性能 | 2662.4GFLOPS (AVX動作時2252.8GFLOPS) |
統合メモリ容量 (MCDRAM) | 16GB |
対応メモリ | DDR4 2133MHz |
最大消費電力 (TDP) | 215W |
製品名 | HPC3000-XKL2UQuad |
---|---|
ノード数 | 1 (全4ノードのうち1ノードを使用) |
筐体タイプ | ラックマウントタイプ (2U) |
プロセッサー | インテル® Xeon Phi™ プロセッサー 7210 |
(64コア, 1.3GHz, 32MB L2Cache, 16GB MCDRAM, 14nm, TDP215W) ×1 | |
メモリ per node | 96GB (16GB DDR4-2400 ECC RDIMM ×6) |
HDD | 1TB SATA 6Gb/s 7200RPM ×2 |
コンパイラ・MPI | インテル® Parallel Studio XE Cluster Edition 2017 Beta |
OS | Red Hat Enterprise Linux 7.2 x86_64 |
HPLはスーパーコンピュータの性能ランキング『Top 500 Supercomputer Sites』 ( https://www.top500.org/ ) で用いられているベンチマークプログラムです。連立方程式の解を求めるプログラムで、浮動小数点演算の性能をFLOPS単位、つまり1秒間に処理できる浮動小数点演算命令の数で性能を評価します。HPLでCPUの実効性能を計測し、理論性能どおりの実効性能の向上があるかを調査しました。
使用したHPLの実装はHPLの公式サイトのものではなく、インテル® Parallel Studio XE Cluster Edition 2017 Betaに付属するHPLでベンチマークを実施しました。このHPL結果では1ノードのみでのピーク時の実効性能を記載しています。
結果は以下の表の通りとなりました。(単位はGFLOPS)
コアの使い方を指示する「クラスタモード」と、メモリの使い方を指示する「メモリモード」の組み合わせとして7項目用意し、それぞれに対し、計算手段としてA. 「Offload版」、B. 「OpenMP+MPI版」、C. 「OpenMP版」、D. 「MPI版」の各プログラムを用いて計算を実施しました。
「クラスタモード」と「メモリモード」はワークステーション・ラックマウントサーバ起動時にBIOS上で設定します。
入力サイズとして、BIOSで設定できるメモリモードの設定が「Cacheモード」(1~5)の場合でN=60000、「Flatモード」(6,7)の場合でN=30000としています。
BIOS設定の組み合わせ | A | B. | C. | D. | ||
クラスタモード | メモリモード | Offload | OpenMP +MPI | OpenMP | MPI | |
1 | All-to-ALL | Cacheモード | 1630 | 1238 | 1243 | 1042 |
2 | SNC-2 | Cacheモード | N/A | 1334 | 925 | 855 |
3 | SNC-4 | Cacheモード | N/A | 1205 | 1013 | 950 |
4 | Hemisphere | Cacheモード | 1639 | 1406 | 1254 | 1013 |
5 | Quadrant | Cacheモード | 1629 | 1253 | 1242 | 1063 |
6 | Quadrant | Flatモード | 1643 | 548 | 808 | 549 |
7 | Quadrant | Flatモード (numactl併用) | 1640 | 906 | 853 | 891 |
演算性能として、A. Offload版で最高値1.6TFLOPSが得られました。これは、Xeon Phi™に標準で備わっているSIMD演算セットAVX-512を使用した場合の実効的な理論性能2252.8GFLOPSと比較して71%の実行効率です。
最新のインテル® Xeon® プロセッサー E5-2699 v4 ×2 ( /library/benchmark/benchmark20160411/ ) の場合において1.071TFLOPSの性能があり、その1.53倍の実行性能です。そのため、インテル® Xeon Phi™ プロセッサーは従来のプロセッサーと比較して優位性があります。
クラスタモードについて、Xeon Phi™ プロセッサー内の全コアに区分けを設けない 1.「All-to-ALL」モードに設定した場合、いずれの計算手段でもHPL演算性能の結果は比較的良好です。ただしキャッシュおよびメモリへのアクセスの範囲がプロセッサー全体にわたり、データを取得するための処理でプロセッサー内を長距離移動の必要に迫られる可能性があり、最適ではありません。
プロセッサー内に区切りを設けることで、メモリアクセスの範囲を限定し演算性能の向上を図る方法として、2. 「SNC-2」、3. 「SNC-4」、4. 「Hemisphere」、5. 「Quadrant」の各モードがあります。SNCはSub-NUMA Clusteringの略です。
「SNC-2」「Hemisphere」モードはプロセッサーを2分割、「SNC-4」「Quadrant」モードはプロセッサーを4分割します。「SNC-2」「SNC-4」は厳密に分割した領域内でメモリアクセスをします。「Hemisphere」「Quadrant」は分割が緩めで、ある程度の自由度を持たせてメモリアクセスをします。
ベンチマークの結果、演算性能の結果は、
(「Hemisphere」「Quadrant」) > (「SNC-2」「SNC-4」)
となりました。性能比は1.2倍程度です。理論上の演算性能は
「All-to-ALL」 < (「Hemisphere」「Quadrant」) < (「SNC-2」「SNC-4」)
の関係を持っていますが、結果は理論と逆となっています。
原因として、OSおよびアプリケーションが「SNC-2」「SNC-4」モードを十分に活用できていないと考えられます。また、HPL以外の実用プログラムでの演算性能の振る舞いについても検証が必要です。
メモリモードについて、「Cacheモード」、つまりXeon Phi™ プロセッサー内に含まれる容量16GBの高帯域幅メモリMCDRAMをキャッシュにした場合、使用メモリサイズが16GB以下ならばプロセッサー外のDDRメモリにアクセスすることがなくなります。HPLでの入力サイズをN=60000とした場合の使用メモリは容量16GBのMCDRAM内に十分収まり、高帯域幅メモリアクセスの効果があるため、次に述べる「Flatモード」と比較して演算性能が良くなっていると考えられます。
次に「Flatモード」、つまりXeon Phi™ プロセッサー内に含まれる容量16GBの高帯域幅メモリMCDRAMをDDRメモリと同等に扱う場合、メモリ容量は16GB増加するものの帯域幅の低いDDRメモリの性能に引っ張られるため、最適化されていないプログラムでは一般的に演算性能が悪くなります。
MCDRAMの高帯域幅を活用する方法として、2つの方法があります。
一つは、MCDRAMだけを用いるように指示する方法です。numactlコマンドを用いて使用メモリをMCDRAMに割り当てる「Flatモード」(numactl併用)を選択することにより、最適化されていないプログラムと比較して演算性能が改善します。HPLベンチマークの場合、使用メモリは16GBのMCDRAM内に十分収まるため、numactlコマンドにより演算性能が改善しています。
もう一つは、(1) CPUの一部と16GB MCDRAMで構成されているノードと、(2) CPUの一部とDDRメモリで構成されているノードの2つに分かれたNUMAノードとして扱い、処理の役割分担をさせることでMCDRAMを有効に活用することが可能です。高帯域幅を必要とするメモリが16GBを超える場合、hbwmallocとMemkindライブラリーを用いてプログラム中でメモリの役割を分担するよう指示をすることでMCDRAMを有効に活用することが可能です。
また、高帯域幅を必要とするメモリが16GBよりも少ない場合、MCDRAMの一部(4GBあるいは8GB)をキャッシュとして扱い、残りのMCDRAMをDDRメモリと同等に扱う「Hybridモード」もあります。
プログラム中のメモリの使い方によりメモリモードを適切に選択することが重要となりますが、適切な選択肢の検証が必要です。またプログラム中の使用メモリサイズが16GBを超えた場合についての最適な選択肢の検証も必要です。 計算手段の観点で見ると、演算性能はおおむね、
「Offload版」 > 「OpenMP+MPI版」 > 「OpenMP版」 >「MPI版」
の関係となっています。OpenMPとMPIを組み合わせた「OpenMP+MPI版」が、ほとんどの場合良好です。
プログラムが動作しなかった「SNC-2」「SNC-4」を除くすべてのBIOS設定の場合でも「Offload版」の演算性能が想定とは異なり非常に良好のため、原因の検証が必要です。
以上の速報を踏まえ、弊社では引き続きインテル® Xeon Phi™ プロセッサーの実アプリケーション性能評価を進めてまいります。
(平日9:30~17:30土曜日、日曜日、祝祭日、年末年始、夏期休暇は、休日とさせていただきます。)