平成7年度 委託研究ソフトウェアの提案

(1) KLIC の実行時システムの改良・拡張

研究代表者:近山隆 助教授
      東京大学大学院 工学系研究科 電子工学専攻




[目次]

  1. 研究の背景
  2. 研究の目的
  3. 研究の内容
  4. ソフトウェア成果


[研究の背景]

KLIC システムは汎用計算機上で動作する並列論理型言語処理系として, 高 効率と高い移植性を両立した KL1 言語処理系である. 中間言語に C を利用 したこと, モジュラーな構造, 限られた OS 機能のみの利用, という設計方針 によって, C コンパイラさえ利用可能ならほとんどの機種に容易に移植が可能 であり, 一方, KL1 の言語としての特質を生かした設計により, 性能も広範に 用いられている論理型言語処理系 (たとえば SICStus Prolog など) を凌ぐも のとなっている. これらのことから, ICOT Free Software として公開された 処理系は,国内のみならず, 世界的に広範に研究および教育目的に利用されて いる.

しかしながら, 現在公開されている KLIC システムにはさまざまな点で改良 の余地が残っている. たとえば, KLIC のメモリ管理は世代方式のガーベジコ レクタ (世代 GC) の実装を前提に設計されているが, 世代 GC は部分的な試 作に留まっており, 試作部分にもまだバグが多く残るものと予想され, 評価も 不十分である. プログラムデバッグのための機能についても, 通常の論理型言 語処理系と同様のトレース機能は持っているが, 並列動作する複雑なプログラ ムのデバッグのためには十分とはいいがたい.

このように, KLIC システムは一応完成したシステムとして配布され利用さ れているが, 改良すべき点は少なくない. 上述のような不十分な点について は, 今後利用がさらに広がるにつれてユーザからの不満が増していくものと考 えられ, 早急な改良を施さないと KLIC システムの普及・発展を阻害する要因 となりかねない.


[研究の目的]

ICOT Free Software として公開・配布されている KLIC システムをベース に, 諸機能に改良・拡張を加え, 並列論理型言語のためのプログラミングシス テムとして完成度の高いものとし, KLIC システムの利用範囲を拡大するのが, 本研究の目的である.

より具体的には, 以下の諸点を目的とする.

- より高い性能の実現
メモリ管理方式などに残る改良が必要な項目をクリアし, KLIC の本来の設計 の目指す性能を実現する. これによって,性能面から KLIC の利用が困難だっ た大量のメモリを用いる応用分野について KLIC の利用範囲を広げる.

- よりユーザフレンドリな環境の実現
トレース機能, プロファイル機能などを充実し, プログラム開発をさらに容易 にする. これによって, デバッグやチューニングの困難さから並列化が難し かった応用分野について, KLIC の利用範囲を広げる.

[研究の内容]

本研究では実行時システムの改良・拡張に主眼を置く. すなわちKLIC のコ ンパイラによる KL1 から C への変換には原則として手をつけず, 実行方式の 基本は変えずに, 実行時にリンクされるライブラリの改良のみを行なう. この 方式をとることにより, 既存の KL1 プログラムとの整合を保ったまま改良・ 拡張を行なうことができる.

改良・拡張を加えるポイントは数多くあるが, 本研究では当面以下の諸点に 着目した改良・拡張を行なう.

☆ 世代方式ガーベジコレクタの実現
KLIC 処理系は実行管理用も含めたすべてのデータ構造を単一のヒープ領域 に割り付けるが, これはメモリ管理を一元化して簡潔にする利点が大きい反面, 一部の管理用データ構造のような短寿命のガーベジを多く生成し, ガーベジコ レクションのオーバヘッドを大きくしている. KLIC の設計時には世代方式の ガーベジコレクションを行なうことによって, この欠点を克服できるとの見通 しを持って設計が行なわれている. そこで, 現在の処理系に欠けている世代 GC を付け加えることによって, KLIC の設計にあたって本来目指したメモリ管 理を実現する. また, 世代 GC はキャッシュの有効な利用によって処理性能 にも大きく寄与する可能性が高いので, 性能向上のためのチューニングを行な い, その効果を評価する.

☆ デバッグ機能の強化
KLIC 処理系は通常の論理型言語処理系と同様の機能を持つトレーサが備わっ ているが, 並列に動作する場合は各プロセッサ上のトレーサの入出力を一本化 しているに過ぎない. 並列動作するプログラムのデバッグのためには, より 統合化されたデバッグ機能が必要である. また, 現在のトレーサは全面的に C で記述されているため, 複雑な処理の記述には不適切で, 実際トレース条件 の指定などについては現在のトレーサは単純な述語単位の指定程度しかできず, 並列動作する複雑なプログラムのデバッグのためには十分とはいいがたい. そこで, 現在のシステムで処理系内部で行なわれているトレースの機能を, ト レース制御用の別プロセスとの交信によって行なうように変更し, 全プロセス を統括してトレースする制御プロセスを KL1 自身で記述することによって, 並列動作の統合的制御と, 柔軟な制御を提供するトレーサを作成する.

また, 研究の進捗が順調であれば, 以下の諸点についての改良・拡張も次年度 以降に追加して行なう予定である.

☆ 分散メモリ並列処理系のプロセッサ間通信方式の改良
現在配布されている版に付属する分散メモリ並列処理系は, 移植の簡便さを 重視したため, 汎用のメッセージ通信ライブラリであるPVM を用いている. 配布版にはインターネット・ドメインのソケットを用いる版も含まれているが, 初期化部分を PVM に頼っている. PVM は汎用性が高いが, 移植されていない 機種もあり, 移植の際に致命的といえるバグが入ってしまった機種もある. また通信オーバヘッドも非常に大きい. このため, KLIC の移植性と性能を損 なう原因となっている. そこで初期化と通信処理部分を他の手段,たとえば rsh やインターネットのポートなどを用いるようにすれば,移植可能機種を増 やすことになり, 性能の向上も見込める.

☆ 性能チューニング・ツールの改良・拡張
現在配布されている KLIC には, 並列動作するワーカごとの稼働率を表示す る, ごく簡単なチューニング・ツールが付属している. これだけでも性能チュー ニングにかなり有効なのだが, 稼働率が上がらない原因の究明に必要なより細 かな情報を得るのには不十分である. そこで, どの述語がどの程度の割合で 実行されたのか, などの情報を捉える機能を追加する. この実現のためには, UNIX のプロファイラとして良く使われる prof と同様, タイマを用いて定期 的に割り込んで, その際に実行されていた述語が何だったかを記録すればよい. この情報を活用するには, 同時に表示用のプログラムの機能拡張も必要になる.

[ソフトウェア成果]

(1)作成されるソフトウェア名称
KLIC 第3版

(2)そのソフトウェアの機能/役割/特徴
機能: KLIC 第3版は並列論理型言語 KL1 の並列処理系である.
役割: 第五世代コンピュータプロジェクトの核言語として開発されたKL1 を, 並列および逐次の汎用計算機上での広範な利用を可能にする.
特徴: KL1言語を C 言語に翻訳する方式によって高い移植性と高性能を同時に実現する.


www-admin@icot.or.jp