本年度は、(1)汎用並列マシン上でのMGTPの効率的並列化手法の考案とその評価、及び(2)Java言語によるMGTPの実装を行った。(2)の研究は、多くのプラットホームで稼働しているJavaで実装を行うことにより、異機種分散システムを構築するための研究基盤を確立することを狙ったものである。 1.汎用並列マシン上のMGTPの並列化:メモリ分散型並列マシンでは、プロセッサ(PE)間の通信速度が遅い。そこで、PE間通信を抑えるN逐次実行方式を考案した。従来の並列化方式が「仕事があれば並列に実行する」というものであったのに対し、新方式は、「PEが暇なら仕事を分配し、かつPE内は逐次実行」という考えに基づいている。試験例題において、従来方式では約2万回発生していたタスク割当回数が100回程度にまで削減され証明時間が短縮されるなど、顕著な効果を確認した。 2.Java-MGTP:Java言語によりMGTPを実装した。最も基本的なデータ構造である項のデザインを重点的に検討した。基本クラスTermにおいて、元来は定数項、変数項、複合項の各サブクラスが個別に有するはずのフィールド変数に対し、それらの和集合(共通集合ではない)を取った上、予めまとめて定義しているのがポイントである。これにより、キャスト等のオーバヘッドを最小限に抑え、実行効率の最適化を図ることができた。さらに、非ホーン節に対する場合分け実行の逐次化に関して、データ構造(オブジェクト)の複製を一切避けるようにした点も高効率化に貢献している。 いくつかの例題を用い、Java版MGTPと従来版MGTPの実行性能を比較評価した。JITを適用したJava版MGTPでは、従来版に比べ実質的に最大10倍強の高速化を達成している。JITを適用しないJava版MGTPにおいても、概ね従来版MGTPと同等以上の速度で解くことができている。
|