学位論文要旨



No 213536
著者(漢字) 小中,裕喜
著者(英字)
著者(カナ) コナカ,ヒロキ
標題(和) 並列計算機における並列オブジェクトの効率的な協調の枠組
標題(洋) An Efficient Cooperative Framework for Concurrent Objects on Multicomputers
報告番号 213536
報告番号 乙13536
学位授与日 1997.09.18
学位種別 論文博士
学位種類 博士(工学)
学位記番号 第13536号
研究科 工学系研究科
専攻 情報工学専攻
論文審査委員 主査: 東京大学 教授 田中,英彦
 東京大学 教授 井上,博允
 東京大学 教授 武市,正人
 東京大学 教授 近山,隆
 東京大学 助教授 相田,仁
内容要旨

 近年のVLSI技術の進歩に伴い、数多くの並列計算機が研究開発され、商用化されてきた。一方、並列計算機上で実行すべきアプリケーションも,定型的なデータ並列計算を行うものだけではなく、複雑な構造をもった科学技術計算や知識処理、社会シミュレーションなど、非定型な処理を必要とするものが多くなってきている。しかしながら、さまざまな並列プログラミングモデルが用いられるこれらのアプリケーションを、並列計算機上で効率よく実行されるように記述することは、従来の並列プログラミング言語では困難であった。例えば多くの並列オブジェクト指向言語は、モジュール性や継承機構などのサポートによりコントロール並列計算の記述性を向上させているが、オブジェクト数や実行プロセッサ数の増加に伴って重要となる通信の局所化や最適化を支援しつつ、データ並列計算の記述をもサポートするものはなかった。

 本論文では、並列計算機上で効率的に実行すべき並列アプリケーションのプログラマビリティの向上を目的として、共同体という概念を提案する。共同体は、オブジェクト内並行性をもたない単純な並列オブジェクト指向パラダイムをベースとし、並列オブジェクトだけでは実現が困難な、並列オブジェクト間の効率的な協調の枠組を与える。並列オブジェクト指向言語に共同体の概念を導入することにより、コントロール並列計算はもとより、データ並列計算や並列オブジェクト間の大域的通信の記述まで、単一の言語でサポートすることが可能となる。

 共同体は、並列オブジェクトの集合を構造化する多次元論理空間と、それらの並列オブジェクト(メンバオブジェクト)の間の協調処理をサポートするいくつかの共同体オペレーションを提供する。共同体を知るオブジェクトは、共同体のメンバであるかどうかに関わらず、共同体の全メンバオブジェクトに対してメッセージをブロードキャストしたり、論理空間のインデックスで指定したメンバオブジェクトに対してメッセージを送信したり、あるいは論理空間の構造を記述する共同体手続きを呼び出したりすることが可能である。各メンバオブジェクトは、基本的に独立してメッセージを処理するが、必要に応じてグローバルオペレーションやデータ交換のためのオペレーションを用いることにより、共同体の全メンバオブジェクトの間で効率的に同期/通信を行うことが可能となっている。これらの共同体オペレーションはデータ並列計算やオブジェクト間の大域的通信の記述をサポートする。

 共同体の概念の有用性を実証するために、本研究ではさらに並列オブジェクト指向言語OCoreの設計・開発を行った。OCoreは、単一継承やオブジェクト間の同期/非同期メッセージパッシングなどをサポートするシンプルな並列オブジェクト指向パラダイムの上に、共同体の概念を導入したものである。共同体の概念の導入においては、共同体の論理空間の構造とそのプロセッサへのマッピングに関する記述を、共同体の各メンバオブジェクトにおけるメッセージ処理の記述と分離するために、共同体テンプレートとmapperというプログラム要素が導入されている。特に、共同体テンプレートはメンバオブジェクトのクラスなどに関してパラメトリックに定義することが可能である。このようにOCoreにおける共同体の概念の導入においては、その記述の再利用性が考慮されている。

 並列オブジェクト指向言語OCoreは、ParagonXP/SやCM-5などの並列計算機をはじめとするさまざまなプラットフォームに実装されている。特に共同体の実装では、さまざまな共同体オペレーションの処理における局所性を抽出し、必要となる通信の最適化を行うことにより、高い効率とスケーラビリティが達成されている。また異種のメンバオブジェクトの集合やその動的再構成を可能とする疎、密2種類の動的共同体に加え、同種のオブジェクトの固定された集合しか扱えないものの、よりオーバヘッドの小さい静的共同体をサポートし、多様なプログラミング要求に対応している。静的共同体の実装においては、メンバオブジェクトの集合に関する上記のような制約を反映して、共同体の生成や共同体オペレーションの処理における最適化が行われている。一方、動的共同体の実装においては、論理空間を分散管理して共同体オペレーションの処理におけるボトルネックを回避するとともに、リモートプロセッサ上の論理部分空間にマッピングされたメンバオブジェクトのアドレスのキャッシュをサポートし、また共同体オペレーションの処理の決定性を保証するために導入されたreorganizeというオペレーションにおいて他の共同体オペレーションの実行最適化のための処理を行っている。これらの最適化により動的共同体においても、共同体を構成するためのオーバヘッドは静的共同体と比べて大きいものの、他の多くの共同体オペレーションにおいて静的共同体と同程度の性能が実現されている。

 本研究ではまた、共同体を用いたプログラミングを各種アプリケーションに適用した。その結果、空間的に処理の異なる波動方程式のシミュレーションのように異種性のあるデータ並列計算や、文脈に応じて認識語彙を動的に変化させる、適応性のあるワードスポッティング音声認識のように、時間的にデータ集合が変化するデータ並列計算の記述及び効率的実行には、動的共同体が有用であることが示された。一方、離散的最適化問題における並列探索や分子動力学シミュレーション、人工生命シミュレーションなどに用いられる大域的通信モデルや定型的なデータ並列計算の記述及び効率的実行には静的共同体が有効であることが示された。共同体を用いたプログラミングでは、データ並列計算や大域的通信のための並列オブジェクトの集合を共同体として抽象化することにより、見通しの良い並列プログラミングが可能となる。またアプリケーションの性質や実行環境に応じて、共同体の種類や共同体オペレーションの実装、あるいは共同体論理空間のプロセッサへのマッピングを選択することにより、プログラムの論理的な記述を変更することなく性能を向上させることが可能となっている。このように共同体の概念の導入によって、並列計算機上で効率的に実行すべき並列アプリケーションの記述に必要なプログラマの負荷が軽減されることが示された。

審査要旨

 本論文は、「An Efficient Cooperative Framework for Concurrent Objects on Multicomputers(並列計算機における並列オブジェクトの効率的な協調の枠組)」と題し、英語で書かれ8章と付録からなる。並列処理は、重要な課題であるが、従来、プログラミングの難しさと処理系の非効率性のため、十分広く使われる所となっていない。本論文は、そのような問題点を解決するための基本的な枠組について論じたものである。

 「1 Introduction」は、本研究の目的について述べるとともに、本論文の研究の特徴をまとめたものである。

 「2 Background」は、この研究において用いる並列計算機を分類して述べるとともに、並列プログラミングの問題について議論し、世の中には規則的なデータ並列計算と、不規則的な離散的最適化問題やイベントシミュレーション等のような並列処理応用とがあるが、これらをまとめて記述し処理出来る言語や処理系が無く、また並列計算機も様々で、それらすべてに最適化された処理を実現することが困難であることを述べている。

 「3 Community」は、上記問題を解決するために導入したcommunityと呼ぶ枠組について述べたもので、まず、並列プログラミングの基本には、局所性の良さ、メッセージパッシングの並列計算機への適応性の良さ、モジュライティの良さ等から、逐次オブジェクトのコンカレント・オブジェクト指向プログラミングを用いることとし、その上にcommunityと呼ぶソフトウエアの機構を設けることを提案している。コンカレント・オブジェクト指向プログラミングは、並列プログラミングの基本概念としては優れているものの、それをそのまま並列処理の記述に用いると、プロセッサ間通信の量が増え実行効率が上がらない。また、並列性の増加にともなう複雑性を隠蔽することが難しい等の問題点がある。これらに対し、複数オブジェクトの集合を表すcommunityは、複数次元の論理空間の上でオブジェクトを構造化し、community操作を用いてメンバ間で効率的に協調処理させる機能を持ち、異種オブジェクトの動的な追加・削除も可能である等の特徴を持っている。communityにデータを送り付けると、それは全メンバに放送され、それによってデータ並列の実行が開始される。また、communityのメンバにデータを蓄えるさせることによりcommunityを通信媒体として利用することができ、更に、それとメンバそれぞれの状熊とを組み合わせることによって、様々な形態のグローバル通信を実現することができる。

 「4 Parallel Object-Oriented Language OCore」は、communityの概念の有効性を実証するために設計・実装した並列オブジェクト指向言語OCoreについて述べたものである。OCoreは、静的タイプ付け、単一継承、プロセスの場所に依存したプログラミングが可能な言語で、community templateとmapperと呼ぶプログラムモジュールを導入することによって、各メンバオブジェクトにおけるメッセージ操作の記述からcommunityの論理空間の記述を独立させ、記述の再利用性を高めている。この章では、communityに対する操作、メンバオブジェクト内の操作、等を詳説している。

 「5 Implementation of OCore」は、言語OCoreの実装について述べたものである。OCoreのソースは、C++で書かれたトランスレータによって中間言語であるC++に変換され、それをコンパイルすることによって実行コードが生成されるが、応用の分析によってcommunityを3種類に分類し、それぞれに最適な実装法を工夫することによって効率的な実装を実現している。また、communityの論理空間を分散的に管理することによって、その管理がボトルネックになることを防ぎ、システムのスケーラビリティを確保している。

 「6 Evaluation」は、OCoreとして実装されたcommunityの評価をおこなったもので、まず、オブジェクト操作、communityの組織化、community操作等の基本操作にかかる時間を評価し、次に幾つかの具体的な応用を記述して、その処理時間が理想的な線形の並列利得に比べて遜色無いことを示すことによって、OCore言語の高い並列性記述能力を示している。

 「7 Discussion」は、OCoreを他の同種の言語と比較しての議論を展開したもので、定性的には、OCoreは、1対多通信機能の抽象化が可能、異種のデータ並列計算が可能、またcommunityオブジェクトの再構成可能という他の言語には見られない特徴を有するとともに、定量的には実行効率が高く、他の代表的な言語Concurrent Aggregateを用いた場合と、並列マシンCM-5上に於ける通信処理時間を比較すると、ローカル通信では20倍程度、リモート通信でも1.5-2.0倍速いことを示している。

 「8 Conclusion」は、結論である。

 以上、これを要するに本論文は、並列計算機上で複数のオブジェクトを協調させて並列に効率良く動かすための枠組として、communityと呼ぶオブジェクトの集合を提案し、それを採り入れた処理系を実装し応用プログラムを通じて評価することによって、それが多くの応用において記述性と実行効率の上で大変優れた枠組であることを示したもので、情報工学上貢献する所少なくない。

 よって、本論文は、博士(工学)の学位請求論文として合格と認められる。

UTokyo Repositoryリンク