QUICK REVIEW
[論文レビュー] Loop Optimization Framework
Michael Kruse, Hal Finkel|arXiv (Cornell University)|Nov 1, 2018
Parallel Computing and Optimization Techniques参考文献 3被引用数 4
ひとこと要約
本論文は、LLVM内でのループ最適化を統合するために、一貫したループ構造DAGフレームワークを提案する。独立したパスを1つの調整された変換パスに置き換えることで、依存関係解析、利益率ヒューリスティクス、コード生成を統合化し、より安全で組み合わせ可能で順序に依存しないループ変換を可能にするとともに、コードの重複を削減し最適化の連携を向上させる。
ABSTRACT
The LLVM compiler framework supports a selection of loop transformations such as vectorization, distribution and unrolling. Each transformation is carried-out by specialized passes that have been developed independently. In this paper we propose an integrated approach to loop optimizations: A single dedicated pass that mutates a Loop Structure DAG. Each transformation can make use of a common infrastructure such as dependency analysis, transformation preconditions, etc.
研究の動機と目的
- LLVMの現在の独立したループ最適化パスの限界に対処する。これには、重複する解析、バージョニングに起因するコードの冗長性、および柔軟性に欠ける変換順序が含まれる。
- 依存関係解析、利益率ヒューリスティクス、変換の前提条件といったインfraの統合により、組み合わせ可能で安全なループ変換を可能にする。
- 柔軟で拡張可能な表現を用いて、pragma指向の最適化と自動最適化(例えば多面体解析を介して)の両方をサポートする。
- 変換間でのコードの複製を中央集権化することで、繰り返し発生するループのバージョニングに起因するコードの肥大化を軽減する。
- OpenMPおよびベクトル化のサポートを強化するため、変換の自由度を保ちつつ最適化の機会を向上させる形にIRを正規化する。
提案手法
- ループを、ステートメント、条件式、依存関係を捉える高レベルで正規化された中間形式「ループ構造DAG」として表現する。これにより、安全で組み合わせ可能な変換が可能になる。
- 条件付き実行と制御フローを表すために赤/緑ノードを導入する。これにより、条件式のみの制御フローを可能にし、完全なIR展開なしに変換を実行できる。
- すべての変換にわたる依存関係解析を統合化する。メモリ、レジスタ、制御依存関係を、さまざまな精度でサポートする。
- 恒等性や事前実行可能性といった性質を用いて、安全なコード移動と値の生成をガイドし、不要なメモリ操作を削減する。
- DAGをLLVM-IRまたはVPlanに変換することで、既存のLLVMパスと統合する。変換の仮定やコストモデルに基づき、複数のバージョンを生成可能にする。
- 複数のDAGバージョンを生成・評価するコストモデルを用いて、変換の選択を可能にし、最も利益の高い構成を選択する。
実験結果
リサーチクエスチョン
- RQ1LLVMの現在のパスパイプラインアーキテクチャにおいて、どのようにしてループ最適化を組み合わせ可能で順序に依存しないものにできるか?
- RQ2一貫した中間表現が、独立したパス間での繰り返し発生するループバージョニングに起因するコードの肥大化を軽減できるか?
- RQ3依存関係解析や利益率ヒューリスティクスといった共有インfraストラクチャが、最適化の品質とパフォーマンスをどの程度向上できるか?
- RQ4中間表現がスレッド並列性をLLVM-IRで直接見ることができない状況で、OpenMP並列化されたループを効果的に変換するにはどうすればよいか?
- RQ5一貫した中央集権的な変換パスは、現在の独立したヒューリスティック駆動のパスモデルに比べ、最適化の品質とコンパイル効率の面で優れているか?
主な発見
- ループ構造DAGにより、変換ロジックと解析を分離することで、依存関係情報などの事前計算結果を変換間で共有できる。これにより、組み合わせ可能なループ最適化が実現される。
- コードの複製を中央集権化することで、バージョニングに起因するコードの肥大化が軽減される。各変換は共有されたDAG上で動作するため、独立したパスレベルでの複製による指数的増加を回避できる。
- 依存関係解析が変換全体にわたって統合され、重複する再計算が排除され、メモリ、レジスタ、制御依存関係の一貫した取り扱いが可能になる。
- IRを正規化することで、pragma指向および自動最適化(ベクトル化、並列化を含む)の両方をサポートする。変換の自由度を保ちつつ、最適化の機会を向上させる。
- メタデータを保持し、実行時呼び出しによる並列化が表現されても、中間表現での解析が可能になるため、OpenMPアノテーション付きループの安全な変換が可能になる。
- 複数のDAGバージョンを生成・コストモデルで評価できるため、固定されたパス順序に依存せずに、最も利益の高い変換シーケンスを選択できる。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。