プログラムの高速化・並列化サービスの事例

チューニングレポート<要約>:乱流アプリケーションの数千コアへのスケール性能改善

*ここに掲載するのは、エジンバラ大学・EPCCのD. M. Scott博士とJames Clerk氏によるHECToRレポート「Scaling Turbulence Applications to Thousands of Cores: a dCSE Project, D. M. Scott, EPCC, University of Edinburgh, James Clerk, 8 June 2010」を要約したものです。

[2016年10月掲載]




概要

3次元空間内の問題に対する1次元分割を用いるスペクトルコードは、現代的な数千コアを搭載した大規模コンピュータ上ではスケールしません。そこで利用できるコア数は、3つの次元における最小のグリッド点数で制限されるからです。与えられた問題領域サイズの分割で最大のコア数を利用する時でさえ、一つのコアに掛かる負荷は、問題サイズを特徴づける次元の2乗で増加します。

2次元分割を用いる事で、利用を制限するコア数は増加し、コアに掛かる負荷は問題サイズに対して線形になるように減少します。こうした状況でも無論、JOBに割当て可能な最大コア数や、データのコア間移動の必要性により制限があります。

プロジェクトの目的は、2次元領域分割を適用することにより通信オーバーヘッドが増加するにもかかわらず、数百から数千コア数までスケールする3次元スペクトルコードを実現することです。

領域はcuboidで立方体ではなく、また各次元における格子グリッド数は2のべき乗ではありません。さらにフーリエ変換とヤコビ変換両方を用いること等がこのコードの特徴です。

EBL(Ekman Boundary Layer:エクマン境界層に因んで名付けられました)は、x-z平面に在る一つの面上の圧力駆動流の研究に用いられます。この問題において、三角関数は境界条件が課されるx、z方向に関する良いスペクトル基底です。y方向は固定された面に対して垂直であり、ヤコビ多項式はその方向に課される境界条件に関する良いスペクトル基底です。プログラムは配位空間において外力項を計算し、スペクトル空間において時間積分をRunge-Kutta法で計算します。この結果、配位空間とスペクトル空間の間の高速な変換が求められます。EBLとそれを用いた結果は文献[Coleman et al. 1999, Spalart et al. 2008, Spalart et al. 2009]で議論されています。

このプログラムの最初のバージョンは、1980年代半ばにNASA AMES研究所のDr. Philippe Spalartにより作成され、そのアルゴリズムは文献[Spalart et al. 1991]に記載されています。その後の1990年代はDr. Gary Colemanにより開発と保守がされました。2002年から2003年にかけて、英国乱流コンソーシアムのサポート下でDaresbury LaboratoryのMike Ashworth博士とRoderick Johnstone博士により、VectralからFortranへ変換され、MPIで並列化されてました。このコードはHPCxで利用されており、IBMのESSLかFFTW3ライブラリのいずれかでFFT計算をします。BLASやLAPACKも必要です。レイノルズ数は対象となる最小の領域サイズを決定します。これが意味するのは、EBLコードを実行する際には使用可能な最小の格子サイズが存在し、それは立方体ではないということです。


既存コードの一次元変換

全3次元のスペクトル変換を行うには、1次元変換を順番に実行しています。これら1次元変換において、EBL3は領域の平面(別名スライスあるいはスラブ)を用います。これは次元の一つ、ここではYとします、を割当てられたコアに渡って出来るだけ均等に分割します。各コア(各コアで一つのMPIプロセスを実行します)に割当てられた各Yインデックスに対して、残りのXとZ次元のインデックス全てが同じコアに割当てられます。各コアにおいて、割り当てられたYインデックスのループが実行されます。ループの内側では、他の次元、ここではZにします、が変換されます。ループが終了すれば変換が完成し、次に残りのX次元の変換を行います。この変換はコア内でローカルに実行されます。

現在は1344 × 273 × 4032 (Nx ×Ny ×Nz)の格子上でRe=2828の計算が低速で行われていますが、このバージョンの寿命は残り少なく、HECToR上で稼働はしますが過去に研究されてきたレイノルズ数よりも高いものが計算できません。何故なら必要とされるメモリーと実行時間が膨大になるからです。


新しいコード

初期化後に、マスタープロセッサはデータを読み込み、他のプロセッサへブロードキャストします。その後、2次元グリッドプロセスに対応するカルテシアン・コミュニケータcart_commを生成します。2つの次元に対応するサブコミュニケータcomm1とcomm2を生成します。シミュレーションは全て波数空間で開始します。異なるZ値に対するデータはプロセスグリッドの最初の次元に分配され、異なるX値に対するデータはプロセスグリッドの第2の次元に分配されます。与えられたZとXに対して対応する全てのYの値は一つのMPIプロセスに保たれます。

ここで4セットのフーリエ変換が計画されます。これらは既存のEBL3で生成される計画と似ていますが、事項する変換数が異なります。これは、Z方向のフーリエ変換のケースではX方向がプロセスグリッドの1番目の次元に分配されている状態に在り、X方向のフーリエ変換のケースではZ方向がプロセスグリッドの2番目の次元に分配されている状態に在るからです。


ベンチマーク結果

Fortranコンパイラにはpgi9.0.4を用いました。コンパイルフラグは-O3を用いました。
MEASUREアルゴリズムによるFFTW3を用いてプランを生成しました。PATIENTとEXHAUSTIVEアルゴリズムは大規模領域サイズの場合には時間が掛かるため用いませんでした。小規模領域サイズに対してこれら3種の計画アルゴリズムを試しましたが、PATIENTとEXHAUSTIVEアルゴリズムはMEASUREアルゴリズムを超える性能は示しませんでした。よってMEASUREアルゴリズムを用いた結果が報告の中心です。

ノード内メモリー容量の制限のため、全てのコアを用いた場合の既存のEBLコードにより計算可能な最大領域サイズは1344 × 273 × 403です。2番目に大きな問題サイズは768 × 204 × 2304です。これらに対して既存コードと新しいコードの性能を比較しました。

新しいコード性能は既存コードより数%劣っていました。この差はコア数が大きくなると拡大しますが、それほど大きな差ではありません。

次に、MPIプロセスグリッドの最初の次元を365に固定して、2番目の次元サイズを8から44まで増やし、同時に使用コア数も2920から16060まで増やすことでスケール性能を測定しました。新しいコードは11,000コアまで良好にスケールし、14,000コアまでは良い性能です。この後、性能は16,000で性能は劣化し、14,000コア時より劣ります。おそらくこれは、MPIプロセス間の通信のコストが高くなるためと考えられます。


まとめ

3次元スペクトルコードEBLにおいて、2次元領域分割を導入することにより数百コアから数千コアへスケール性能を拡大しました。この結果により、高レイノルズ数の研究が実用になりました。新しいコードは米国に設置された初期の段階におけるHECToR XT6上で実行されました。現在このシステムは英国に設置され、新たなHECToRフェーズ2bとして稼働し、新しいコードはモジュール"ebl"として利用可能です。

謝辞

このプロジェクトは、nAG Ltd.が運営するHECToRの分散計算科学および工学(CSE)サービスの基に実行されました。英国の国立スーパーコンピューティング・サービスである、HECToR:英国リサーチ・カウンシル・ハイエンド計算サービスは、リサーチ・カウンシルを代行するEPSRCが管理しています。そのミッションは英国学術界の科学および工学の研究支援です。HECToRスーパーコンピューターは、UoE HPCx Ltd.およびnAG Ltd.のCSEサポートサービスにより管理運営されています。

文献

[1] Spalart, P.R., Moser, R.D., and Rogers, M.M. (1991) "Spectral methods for the Navier-Stokes equations with one infinite and two periodic directions", JCP, 96, 297-324
[2] Coleman, G.N. (1999) "Similarity Statistics from a Direct Numerical Simulation of the Neutrally Stratified Planetary Boundary Layer", J. Atmos. Sci. 56, 891
[3] Spalart, P.R., Coleman, G.N., and Johnstone, R. (2008)"Direct numerical simulation of the Ekman layer: A step in Reynolds number, and cautious support for a log law with a shifted origin", Phys. Fluids 20, 101507
[4] Spalart, P.R., Coleman, G.N., and Johnstone, R. (2009)"Retraction: “Direct numerical simulation of the Ekman layer: A step in Reynolds number, and cautious support for a log law with a shifted origin” [ Phys. Fluids 20, 101507 (2008) ]", Phys. Fluids 21, 109901 (2009)
関連情報
MENU
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks