GPGPUのためのLIFT中間言語の拡張

LIFT ILはGPGPUプログラムのための配列指向の中間言語である.LIFT コンパイラは高級言語プログラムをOpenCLプログラムに変換する際に,中間言語であるLIFT IL上でハードウェア依存の最適化を行う.一方,LIFT ILには動的に長さが決まる配列を表現できないという問題がある.なぜならばLIFT ILは静的に型付けされる関数型言語で,配列の長さをシンボルとして推論する依存型システムを備えており,静的にすべての配列長のシンボルが決定しているからである.本プロジェクトでは,LIFT ILを存在型で拡張することで動的長配列を扱う方法を提案する.その際,型から配列長を隠蔽・展開する操作を適切な場所に挿入する必要があるが,それらの自動挿入方法を提案する.この提案に基づいて,LIFT ILのコンパイラを作成し,そのうえでフィルター関数を実装した.さらに,Project Euler問題集を用いて,拡張したLIFT ILコンパイラで動的長配列を扱うプログラムが記述・コンパイル・実行できることを確かめた.