Optimistic Loop Optimization

腰を据えて読みたいが watchlater

Abstract

コンパイラは、プログラムの最適化を正当化するために静的解析を使用します。すべての最適化は、元のプログラムのセマンティクスを維持しなければならないので 静的解析は、通常、保守的な近似値にフォールバックします。保守的な近似を行います。その結果、最適化が無効となる状態のセット を過剰に近似してしまい、最適化の機会を逃してしまいます。となり、最適化の機会を逃してしまいます。代わりに 最適化を静的に正当化する代わりに、コンパイラは、最適化の正しさを暗示する前提条件を合成することもできます。最適化の正しさを暗示する前提条件を合成することもできます。を合成し、プログラムの実行時にチェックすることができます。本論文では、Presburger算術に基づく前提条件を収集、一般化、簡略化するためのフレームワークを提示する。様々な複雑なループ変換を可能にするために必要な様々な仮定を導入し、その中から 実行時に検証するための(ほぼ)最小限の前提条件を導出する。を導出する。我々の評価では、実行時検証 は無視できるほどのオーバーヘッドをもたらすこと、また、我々が提案する前提条件 がほぼ常に成立することを示す。SPECやNPBを含む大規模なベンチマークセットにおいて SPECとNPBを含む大規模ベンチマークセットにおいて、我々の技術は、モデル化された非自明ループネストの数を3.9倍増加させることができる。