並列オブジェクト指向言語処理系の実現をめざして
高橋 俊行 米澤 明憲
東京大学大学院 理学系研究科 情報科学専攻
当研究室では実用的な並列オブジェクト指向言語処理系および、そのプログラミング環境の実現を目標に研究を進めております。現実世界における様々な問題は、従来ひろく使用されてきた逐次アルゴリズムを用いるよりも、並列アルゴリズムを用いたほうが、簡単に解決するものも多く、並列オブジェクト指向言語はこのような並列アルゴリズムを自然に記述できるという特徴をもっています。また、我々の提案する並列オブジェクト指向言語は逐次型計算機から超並列計算機まで幅広いプラットホームを対象としていますが、とくに、超並列計算機においては、その計算機資源を有効活用するアプリケーションの作成に、並列オブジェクト指向言語は必要不可欠であると確信しています。このような目標のもと、我々はこれまで並列オブジェクト指向言語ABCL/1及びABCL/fの実装を行ってきました。本稿ではABCL/f処理系実装の現状と展望および、TRCと共同で行っているMPC++関連の研究について報告します。
- □ABCL/f処理系の現状と展望
これまでに高並列計算機AP1000用およびPVMを用いて結合されたワークステーションクラスタ用のABCL/f処理系の実装はほぼ完了し、N体問題やRNAの2次構造予測問題などの具体的な応用プログラムによる評価を行っています。それによって、言語および処理系が、現在一般的に使用されているC言語などの逐次言語に通信ライブラリを使用するという形式のプログラミングにくらべ、格段に生産性(性能/コスト費)の高いものであることが確かめられています。
本年度は処理系をさらに実行効率の高いものへと改良していく計画です。さらに、対象となる計算機として新たにMyrinetで結合されたワークステーションクラスタを加える予定です。MyrinetはMyricom社で開発されたネットワークインターフェースで、これを用いることによって、高速なネットワークをもつワークステーションクラスタを安価に構成することができます。
また、プログラミング環境として、デバッガおよびメタレベルアーキテクチャによる言語拡張を研究しています。
アプリケーション開発効率向上のためにデバッガは必要不可欠です。一般に並列ソフトウェアは非決定的に動作する部分が多く、デバッガの介入が動作に影響を及ぼしバグの発見を阻害する場合が多々あります。このため、再演実行機能をもつデバッガが要望されており、この方式に関する研究も行っております。
また、並列化構文や最適化の機能を、ユーザレベルから柔軟に提供するべく、 ABCL/f処理系のメタレベルのアーキテクチャの研究開発を行っています。特に、並列計算における利用に耐える効率を実現するため、部分計算を用いたコンパイルを行います。
並列計算機を必要とし、並列プログラム開発を能率よく行いたい一般の利用者が、ABCL/f処理系を用いてプログラミングできるように、処理系の公開を予定しています。現在は、そのためのマニュアル類の整備を行っている段階です。
- □ MPC++関連の研究
MPC++はRWC-1の核言語としてTRCの石川研究室長のもとで研究開発が進められているC++の拡張言語です。並列実行のためのプリミティブをもち、言語処理系をユーザレベルでカスタマイズできるといった特徴をもっています。
当研究室ではMPC++ランタイムライブラリのAP1000への移植を担当しております。現時点のAP1000上のMPC++では隣接ノード上のプログラムを呼び出して戻ってくるまでにかかる時間が約150μ秒と、UDP通信やMyrinetを用いたワークステーションクラスタ版(約500μ秒および約300μ秒)にくらべ数倍速い結果が得られております。AP1000版は最終的には数十μ秒にまで下げられるみこみがあります。また、TRCで進められているMyrinet上でカスタマイズしたライブラリでも数十μ秒までに下げられる見込みがあり、性能比較が興味深いところです。
また、MPC++コンパイラの中核であるメタレベル機能の実装にも参加しています。MPC++のメタレベル機能はコンパイラの機能拡張に関する記述をプログラマに解放します。現在TRCと共同で、MPC++のコンパイラにおける、コントロール並列関連のコンパイル規則をメタレベルに記述可能にするべくメタレベル機能の拡張作業を行っています。これにより、メタレベルに記述できるコンパイラの機能が増え、MPC++コンパイラの柔軟性と移植性が高まることを期待しています。
今後は、このメタレベル機能のさらなる設計改良についての研究を行う予定です。並列分散実行のためのアルゴリズムは対象問題を解くアルゴリズムから分離し、メタレベルに記述されるべきです。MPC++のメタレベル機能を改良し、これらのアルゴリズムの分離記述について検討しています。
|