最適化を適応的に適用するコンパイラの研究
【研究分野】計算機科学
【研究キーワード】
コンパイラ最適化 / ループアンローリング / 性能予測 / 型システム / 最適化の検証 / Optimization Verifying Compiler / Grid / 分散環境 / 性能の定量的解析 / データフロー方程式 / 型理論 / 形式的記述 / ループアンローミング / イディオム認識 / プログラミング言語環境 / 自動チューニング
【研究成果の概要】
本研究課題は「最適化を適応的に適用するコンパイラの研究」というタイトルのもと、3年計画で実施されたものである。本研究の申請時、すでに計算プラットフォームは単一プロセッサから分散環境にまで広いスペクトルを持っていた。実行側のプログラムはこの広い計算環境のスペクトルをカバーすることが求められている。したがってプログラミング言語を翻訳してプラットフォームごとに量適なコードを出力するコンパイラ、特にオブティマイザの負担は非常に重くなっている。しかし、これら計算環境では性能を決めるファクターがますます複雑化している。例えばデータアクセスに関して言えば単一プロセッサ/並列プロセッサ環境においてはキャッシュの振舞いは性能を決める大きなファクターになる。これは原理的に静的に解析可能であるもののその複雑さからごく荒い近似で満足せざるを得ない。また分散環境においては、原理的に静的に解析不可能なネットワークと計算ノードとのインタラクションの解析をしなければならず、これもしばしば現実と大きくずれる近似で満足せざるを得ない。このようにコンパイラの最適化においては、現在静的/動的ともに荒い近似モデルを使わざるを得ず、自然に最適化の議論は性能が向上するか否かを中心とした定性的なものにならざるを得なかった。しかしお互いに効果を殺し合うような最適化が多く提案されている現状を考えれば今後はより精度の高いモデルを構築して定量的な議論をすることが最適化の効果を高めるために必須である。
以上の問題意識をもって、本研究では1.性能に影響を与えるファクターを反映し、性能を精度良く近似できるモデルを研究すること、具体的に単一CPU環境におけるブロッキングの幅とアンローリングの段数の決定、分散環境における最適な通信パターンの動的決定を目標とした。2.さらにそれを数値計算ライブラリに適用してインストール時、実行時にそれぞれ最適性能を引出すようなソースの変形をふくむ最適化を行うことを目標とした。3.加えて、本研究の適用範囲を広げることも目標にした。
本研究の実施によって上の目標を達成する多くの成果をあげることができた。詳しくは成果リストを参照することにして、アンローリングに関して非常に精度のよい性能の理論モデルを得たこと、また数値計算ライブラリに関して多くの経験を得たことは特筆すべきである。また副成果として、GCCのアンローリングに関するバグを発見し、修正している。今日、コンパイラ最適化は(1)適用の正しさの証明と、(2)実際に性能があがることの証明を数理的に行うことを求められるようになってきている。ここ数年の間に急速に問題意識が立ち上がり、コンパイラ最適化のVerificationということばで多くの研究者を集めるまでになった。佐藤はこれにVerifying Compilerというキーワードを与えている。今後の展開として、本研究の成果を出発点としてVerifying Compilerの展開を予定している。
【研究代表者】