対象プログラム | 多相反応流/乱流燃焼シミュレーション |
アプリケーション名 | DSTAR |
チューニング方法 | 2D領域分割の適用、I/O最適化、コードのリファクタリング |
成果 | 並列効率50%に改善、リファクタリングにより20%高速化 |
HECToR dCSE Teaによる乱流燃焼シミュレーションコードDSTARの性能改善
Kai Luo, University of Southampton
Lucian Anton, Numerical Algorithms Group Ltd (NAG)
HECToR CSE Team, Numerical Algorithms Group Ltd (NAG)
英国の国立学術スーパーコンピューティング設備であるHECToR 向けのNAGの計算科学技術(CSE)サポートサービスと共に、NAGのHPC専門家により、多相反応シミュレーションコードDSTARの並列効率が50%まで改善されました。さらに、アプリケーションのI/Oの効率化、およびコード・ストラクチャが改善されました。結果として、大規模マシンでの実行性能が向上し、計算予算内でのより複雑な系の(例えば、より現実的な化学反応メカニズムを組み込むといった)研究を可能にしました。
プロジェクトは3つの改善に焦点を当てました: (i) 2D領域分割を用いたDSTARのスケーラビリティの改善、(ii) シミュレーション中の物理量の時間変化をモニターするためのI/Oの最適化、(iii) 旧式のfortran77コードのリファクタリング。
dCSE プロジェクトの成功について,サザンプトン大学・工学科/環境学科のKai Luo教授は次のように述べています。「このdCSEプロジェクトにより、DSTARはマルチコア構成の最新の並列プログラミング技術により再構築されました。これにより、英国の次世代大規模並列コンピューターに対してペタフロップスで稼働させる準備が出来ました。新しいDSTARコードは、マルチコアのHPCアーキテクチャに対応し、膨大な数のプロセッサ上で効率的に動作させることが出来ます。これでDSTARは、以前より多くの計算資源を利用し、より複雑な問題を解くことが可能になります。例えば、より現実的な化学反応メカニズムがシミュレートできるでしょう。結果として、燃焼シミュレーションがより正確に実行でき、より多種の燃料の燃焼を研究できるでしょう。」
HECToR HECToR はResearch Councils を代行する EPSRC により管理されており、英国学術界の科学と工学をサポートする任務を負っています。エジンバラ大学にある Cray XT スーパーコンピュータはUoE HPCx 社によって管理されています。 CSE サポートサービスはNAG 社によって提供されており、高度なスーパーコンピュータの効率的な活用のために、ユーザは確実に適切なHPC専門家にコンタクトできます。CSEサポートサービスの重要な特徴は分散型CSE(dCSE)プログラムです。これは簡潔なピアレビューを経てユーザからの提案に応える、特定のコードのパフォーマンスとスケーラビリティに対処するプロジェクトです。dCSE プログラムは、伝統的なHPCユーザアプリケーションサポートとNAG によるトレーニングで補われる、約 50 の集中的プロジェクトから成り立っています。 これまでに完了した dCSE プロジェクトは、CSEの尽力により可能なコスト削減と新しい科学の優れた適用例をもたらしました。ここで報告されているDSTARプロジェクトは成功を収めたパフォーマンス改善であり、新たなサクセスストーリーとなっています。 |
プロジェクトの背景
DSTARは、エネルギーおよび化学種に対する保存式を共に、完全Navier-Stokes方程式を解くことにより、多相反応流をシミュレートするコードです。 乱流、音響、乱流燃焼、多相乱流および燃焼の高信頼性シミュレーションのために、DNSおよびLESの両方のモジュールが開発されてきました。DSTARは6次の空間離散化、無反射境界条件および省メモリーRunge-Kutta陽解法による時間積分を組み合わせています。 現状のDSTARは1次元方向のみ分割されたカルテシアングリッドを用いて、並列計算をしています。このdCSEプロジェクトではこれを、スケーラビリティ改善のため、2D領域分割に置き換えることが目的でした。もう一つの目的は、計算の進捗をモニターし、またリスタートのために用いられていたI/Oの最適化でした。最終的に、旧式のFortran77コードは、その後継言語を用いて現代的な構造へ変換されました。
サザンプトン大学・工学科/環境学科のKai Luo教授がこのプロジェクトの調査主任です。NAGのHPC専門家であるLucian Antonは、NAG CSEチームと密接な連携を取りながら、6人月でプロジェクトを遂行しました。
DSTARは現在、2つのHECToRプロジェクトで利用され、258,800 kAU(注)を用いています。DSTARを用いる第3のプロジェクトも開始されています。
プロジェクトの結果
2D領域分割は2DECOMP&FFTライブラリを用いて実装されました。新しいコードは768および1536サイズの二つの立方体グリッドで、18,432MPIタスクを用いてテストされました。旧コードとの比較により、約50%の並列効率を示しました。さらに、混合モードプログラミングでプロトタイプを作成したところ、より良好なスケーラビリティをしましましたが、結果としてソースコードは複雑になってしまいました。 DSTARは進行状況用にアスキーのI/Oを、リスタート用にバイナリーI/Oを用いています。そこで、I/Oのモニタリングを自身の単独プロセスのみの環境で実施しました。リスタートデータの書出しにMPI-IOを利用してみましたが、オリジナルコードの方が若干高速でした。
Fortran77のソースコードはリファクタリングされ、メインルーチンはMODULEに置き換えられました。キャッシュメモリーを有効活用していないサブルーチンについては、多重ループの入れ替え、不要なIF THENブロックの削除を行い、約20%高速化しました。 DSTARはこの結果、以前に比べ利用できるMPIタスク数とグリッド数が約50倍になりました。この新しいバージョンは全てのユーザが利用可能です。
(注)アロケーションユニット(allocation unit, AU)はHECToRにおけるノード課金単位です。大まかに言えばLinpackベンチマーク(Rmax)を基にした1時間当たり1Tflopsの実行量がkAUに相当します。例えば60Tflopsのプロセッサ群は60kAU/時間に相当します。
詳細なテクニカルレポートは以下で参照いただけます。
http://www.hector.ac.uk/cse/distributedcse/reports/
さらに詳しくお知りになりたい場合は、日本NAG株式会社 コンサルティンググループご相談窓口 https://www.nag-j.co.jp/nagconsul/toiawase.htm (あるいはメール:consul@nag-j.co.jp)までお問い合わせください。