研究概要 |
本年度は、並列化を行うループ内における依存解析の議論と開発を中心に研究を行った.また,実行時環境では,分散共有メモリシステムに対応したコード生成部の他にメッセージパッシングインタフェースMPIを用いたメモリ管理システムの構築を行い,そのためのコード生成部の実装を行った. 自動並列化コンパイラMIRAIの開発において,逐次プログラム中のループの並列化に取り組んだ.以下,MIRAIを構成する各部における実装状況について述べる.依存解析部では,既存の依存解析手法である分離テスト,GCDテスト,Banerjeeテストと新たな依存解析手法であるシンプレックス法と全探索によるテストを組み合わせたLaputaテストの提案と実装を行った.またこれら各テストと,厳密な解析手法の代表であるOmegaテストとの比較を行った.この比較の結果,LaputaテストはOmegaテストと同等の精度を持ち,かつ高速に解析を行うことが可能であることが確認された.最適化部では,一般的に用いられる各種最適化(定数消去/定数伝搬など)を本自動並列化コンパイラに対応させることにより,各種解析の精度と並列化の精度が向上した.コード生成部では既に実装されていたソフトウェア分散共有メモリシステムFagusに対応したコード生成部に加え,メッセージパッシングインタフェースMPIに対応したコードの出力を行う新たなコード生成部の実装を行った.最後に,本自動並列化コンパイラのGUI部を新たに作成した.これによって,コンパイラ自体の内部表現を視覚化することが可能になり,内部表現の把握が容易になった.これにより,コンパイラ開発時のデバッグ作業の効率が向上し,コンパイラの開発者が簡単に内部の情報を取得できるようになった.
|