研究概要 |
本年度は前年度までの成果をもとに,実用的に用いられている言語処理系に対して逆融合変換を実現し,その性能評価を試みた.我々はこれまでに融合変換(program fusion)の処理を関数型言語HaskellのコンパイラであるGHCに組み込み,その効果を主張してきた.今回もその研究で得られた知見を活用し,まずコンパイラ内部で用いられるCore言語上で自動的に逆融合変換(program diffusion)を行なうためのアルゴリズムの開発を目指した. ハードウェアの環境としてはPCクラスタを想定し,その上で利用可能なPVM(Parallel Virtual Machine)に基づいた処理系であるGPH(Glasgow Parallel Haskell)を利用することにした.GPHで並列プログラムを記述するには,parとseqという二つの関数を用いて並列部分を指定する.そこで逆融合変換後のプログラムを並列プログラムにするためには,mapやfoldなどの基本関数を予めpar, seqを利用した並列処理に対応させた定義として用意しておき,変換後のプログラムからはそれらの並列対応させた基本関数を呼び出すことにした. 逆融合変換を自動的に行なうシステムを作成するためには,逆融合定理を適用するために必要な,結合性をみたす演算子を見つけだす処理を自動化する必要がある.そのためのアプローチとして,プログラマが注釈(annotation)としてプログラム中に演算子を明示的に指定する手法と,プログラムの文脈から自動的に推測する手法が考えられる.今回は注釈を埋め込む手法を中心に実装を手がけたが,最終的には完成までには至らなかった.今後は変換処理の実装を進めるとともに,プログラムの文脈から結合演算子を自動的に推測するアルゴリズムについても考慮していく予定である.
|