Research Project
Grant-in-Aid for Encouragement of Young Scientists (A)
本年度は、プロファイル結果に基づいて並列化をおこなうFortranコンパイラを完成させ、実際の効果を並列計算機CP-PACSを用いた実験によって確かめた。このコンパイラは、まず、入力されたFortranプログラムにノード間通信のログを出力するコードを埋め込んだものを出力する。これを実行することで、プログラムが実際にどのようなノード間通信を必要とするかを計算する。プログラム全体を実行すると、膨大な処理時間がかかってしまうが、本コンパイラが最初に出力するプログラムは、プログラマが指定した部分だけを実行するので、プログラムの実行時間を実用的な範囲に抑えることができる。本コンパイラが想定する主要なアプリケーションは、計算科学のための数値シュミレーションであるので、プログラムは通常巨大なループ構造をしている。ループ1回分の計算は、ある瞬間の状態の計算であり、これを何回も繰り返すことで、時間の経過にそったシュミレーションをおこなう。プログラマは、このループ1回分の範囲を明示的に指定することで、コンパイラにノード間通信のログをとるために実行すべき範囲を指定する。このため、本コンパイラは、ループの繰り返し毎に通信のパターンが変わってしまうようなプログラムは処理できない。逆に、このような制限があるため、ノード間通信のログをとるための実行には、高価な並列計算機ではなく、通常の1プロセッサのPCを使うことができる。こうして得られたノード間通信のログを用い、本コンパイラは、2048ノードの並列計算機CP-PACS用に、元の入力Fortranプログラムをコンパイルする。CP-PACSは、ノード間通信を高速化するためのハードウェアを持っているので、このハードウェアの機能を最大限に引き出すようにコンパイルをおこなう。いくつかのベンチマークを使って実験した結果、商用の自動並列化コンパイラに比べて有意な実行速度の向上を観察することができた。
All Other
All Publications (5 results)