高性能な複数の計算機で構成されたクラスタが広く用いられている。クラスタにおけるアプリケーションの開発では、クラスタのアーキテクチャ(特にアクセラレータの有無や種類など)によって異なるプログラミング言語が用いられることが一般的である。そのため、クラスタ間におけるコードの移植や性能チューニングに要するコストが大きいことが問題となっている。 本研究の目的は、既存の指示文ベースの並列言語XcalableMP(XMP)とOpenMPとを拡張することで、上記に挙げたコストを小さくすることである。XMPはプロセスレベルの並列化を、OpenMPはスレッドレベル(アクセラレータを含む)の並列化をユーザに提供する。また、XMPはOpenMPと連携できるように設計されている。 OpenMPの拡張では、複数のアクセラレータを1つの計算資源のように扱うことができるようにした。さらに、科学技術計算でよく現れる計算パターンであるステンシル計算を簡易に実装するため、袖領域の定義・同期のための指示文を新設した。XMPの拡張では、ステンシル計算の性能チューニングのための構文を追加した。具体的には、最適化手法の1つであるテンポラルブロッキング法を簡易に記述する記法と袖通信に対する非同期化を簡易に指定できる記法である。評価を行った結果、それぞれの新構文は既存構文よりも簡易に記述でき、かつ性能は変わらないことを示した。また、メタプログラミング的手法を取り入れることにより、既存のコンパイラシステムでは不可能な、アルゴリズムの変更を伴うような性能チューニングも可能にする手法の提案も行った。FortranおよびC言語をターゲットとしたメタプログラミングについて検討を行い、その言語の設計およびコンパイラの実装を行い、メタプログラミングが効果的であることを示した。
|