表題番号:1995A-271 日付:2002/02/25
研究課題並行論理プログラミング言語による高速定型処理
研究者所属(当時) 資格 氏名
(代表者) 理工学部 助教授 上田 和紀
研究成果概要
並行論理プログラミング言語は,論理プログラミング・パラダイムに情報の流れを制御するための同期機構を導入し,並行処理記述のための言語としたものであり,柔軟性と簡潔性を大きな特徴とする。しかしながら,これまで,非定型的な並列記号処理のための言語と位置づけられてきたために,定型処理の記述性と効率が不十分であった。一方,並列記号処理の本格的応用のなかには,柔軟な記号処理と,数値計算のような高速定型処理の双方を要するものが増加しつつある。そこで本研究では,並行論理プログラミング言語における効率的な配列操作の枠組の確立を目標として,その基礎研究を行なった。
ベースとなる言語として,静的モード体系を持つ言語Moded Flar GHCを採用した。静的モード体系は,並行論理プログラムの性質に関するもっとも基礎的な情報を提供するもので,制約充足問題として定式化することができ,グラフ単一化によって効率良く解析することができる。また,同様の制約ベースの技法によって,データ型,および参照数(データを指すポインタの数)の解析も可能であることを明らかにした。参照数の解析は,単一代入言語における配列の破壊的操作にとって本質的である。
以上の解析情報は特定の実装に依存しない基礎的情報であるが,浮動小数点演算や配列を用いた処理を最適化し,手続き型言語における効率に近づけるには,さらに,データの具体化状態に関する解析も必要であり,その方式も検討した。
これらの解析情報に基づき,並行処理プログラミング言語処理系KLIC上の浮動小数点数処理および配列処理の高速化を試みた。KLICは,高い基本性能を実現するとともに,ジェネリックオブジェクト機構によってデータ型などの拡張性を確保し,それによって浮動小数点や配列を実装している。しかしながら,ジェネリックオブジェクトによる実装は,空間的,時間的なオーバーヘッドが大きい。
本研究では,上記の各種解析情報によって,ジェネリックオブジェクトによる実装のオーバーヘッドを除去する方法を検討し,実験を行なった。これまでに,典型的な浮動小数点演算で13倍以上,配列の更新演算については,破壊的更新が可能なことが参照数解析によってわかる場合,3.5倍以上の性能向上が得られた。配列演算は,添字検査の手間の比率が大きいため,詳細なプログラム解析によってさらなる性能向上が可能である。
今後も,これらの検討を進めることにより,非手続き型言語における配列操作パラダイムの確立を目指し,それを通じて並行論理プログラミングの応用分野の拡大を図ってゆく予定である。