地球シミュレータ 地球シミュレータ
 
 ES-Repository
 CEIST

High Performance Fortrans (HPF)

【機能】
ESの主要なユーザは自然科学者である。彼らは必ずしも並列プログラミングに精通しているわけではなく、むしろ可能なら避けて通りたいものと考えている。したがって、より高レベルな並列言語が強く求められている。
HPF/ESは、この要求を満たすために、ES上で簡単でかつ効率の良い並列プログラミングを行う手段を提供する。HPF/ESは、HPF2.0仕様とその公認拡張に加え、いくつかの独自拡張をサポートしている(図10)。

図10: HPF/ESの機能
ES独自拡張には、次のような機能が含まれる。

* HALO
有限要素法に代表される、HPFでは並列化が難しいとされる不規則問題ための機能である。不規則問題では、データのアクセスや通信は「不規則に行われる。すなわち、メモリ上で不連続な位置にあるデータ連続して処理される。このようなアクセスや通信は、従来のHPFの機能では効率良く扱うことができない。
これに対し、HALOを用いれば、不規則なアクセスまたは通信が行われる配列要素を明示することができる(図11)。HPF/ESのコンパイラとランタイムシステムは、そのようにユーザが明示した不規則なアクセスと通信を、特別な方法で効率的に処理することができる。

図 11: FEMにおけるHALOの例: 分散境界上の節点は、ユーザの宣言に従い、ある一つのプロセッサ上に「実体」として、その他のプロセッサ上にHALOとして割り付けられる。HALOは、 REFLECT指示文によって更新した後では、「実体」と同じように参照できる。また、HALOを用いたより効率の良いリダクション演算を行うこともできる。

* 並列I/O
HPF/ESは並列I/Oを利用するためのシンプルなインタフェースを提供する。各プロセッサは独立に、自分が保持する配列領域をローカルディスクへ/から書き出す/読み込む。このとき生成される並列ファイルには、配列データ自体とともにHPF/ESのランタイムシステムが管理するマッピング情報が含まれる。

図12: HPF/ESの並列I/O

生成された並列ファイルは、同じプロセッサ数で実行されるHPFプログラムでしか読み込むことができない。これを解決するために、並列ファイルを任意のプロセッサ数で再分割するツールが用意されている。このツールは、並列ファイルを通常のFortranファイルに変換することもできる。

* MPIインタフェース
MPIライブラリ呼び出しを含む手続きをHPFプログラムから呼び出すことが可能である。この機能により、プログラム中の性能ボトルネックの箇所を、より高速なMPI手続きで置き換え、性能を改善することができる。

* ベクトル化/マイクロタスク指示行
HPF/ESは、いくつかのベクトル化/マイクロタスク指示行を受け付ける。これらの指示行は、より効率の良いベクトル化およびマイクロタスク並列化のために指定できる。

* etc.

【評価】
HPF/ES を用いてプラズマシミュレーションコードIMPACT-3Dを並列化し、ESの512ノード上で14.9Tflopsという性能(ピークの45%)を達成した。この成果は、SC2002においてGordon Bell賞の言語部門に選ばれている。図13は、IMPACT-3Dの結果の例である。

図 13. IMPACT-3Dの結果: レーザー核融合におけるターゲット爆縮のスタグネーション相において、燃料・プッシャー接触面の擾乱はレイリー・テイラー不安定性を示す。この不安定性を調べることがこの研究分野で最も重要な課題の一つである。図は、最大圧縮時の燃料・プッシャー接触面に相当する密度等値面を示しており、非線形バブル・スパイク構造の幾何形状がよくわかる。初期擾乱は球面調和関数の二つのモード(n,m)=(6,3)と(12,6)の和によって与え、時間発展を三次元流体コードを用いてシミュレートした。

また、PFES(プリンストン海洋モデル)を並列化し、376ノード上で10.5Tflopを達成した。これらの結果から、 HPF/ESで並列化したプログラムが良好なスケーラビリティを示しており、HPF/ESが実シミューレーションプログラムの開発に有効な手段となり得ることがわかる。