Skip to main content
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が作成し、人間の編集者が確認しました。