Skip to main content
QUICK REVIEW

[論文レビュー] Sketch-Guided Equality Saturation: Scaling Equality Saturation to Complex Optimizations of Functional Programs

Thomas Kœhler, Phil Trinder|arXiv (Cornell University)|Nov 25, 2021
Parallel Computing and Optimization Techniques被引用数 5
ひとこと要約

本論文では、効率的なラムダ計算の符号化とプログラマーが提供するプログラムスケッチを組み合わせることで、等価性飽和を機能的プログラム最適化においてガイドする、スケッチ誘導型等価性飽和という技術を紹介する。この手法により、ループブロッキング、ベクトル化、マルチスレーディングといった複雑な行列乗算最適化が、1GB未満のメモリと数秒の時間で発見可能となる。一方、ガイドなしの等価性飽和は、1時間以上経過しても60GBのメモリを消費しても、最適化を発見できなかった。

ABSTRACT

Generating high-performance code for diverse hardware and application domains is challenging. Functional array programming languages with patterns like map and reduce have been successfully combined with term rewriting to define and explore optimization spaces. However, deciding what sequence of rewrites to apply is hard and has a huge impact on the performance of the rewritten program. Equality saturation avoids the issue by exploring many possible ways to apply rewrites, efficiently representing many equivalent programs in an e-graph data structure. Equality saturation has some limitations when rewriting functional language terms, as currently naive encodings of the lambda calculus are used. We present new techniques for encoding polymorphically typed lambda calculi, and show that the efficient encoding reduces the runtime and memory consumption of equality saturation by orders of magnitude. Moreover, equality saturation does not yet scale to complex compiler optimizations. These emerge from long rewrite sequences of thousands of rewrite steps, and may use pathological combinations of rewrite rules that cause the e-graph to quickly grow too large. This paper introduces \emph{sketch-guided equality saturation}, a semi-automatic technique that allows programmers to provide program sketches to guide rewriting. Sketch-guided equality saturation is evaluated for seven complex matrix multiplication optimizations, including loop blocking, vectorization, and multi-threading. Even with efficient lambda calculus encoding, unguided equality saturation can locate only the two simplest of these optimizations, the remaining five are undiscovered even with an hour of compilation time and 60GB of RAM. By specifying three or fewer sketch guides all seven optimizations are found in seconds of compilation time, using under 1GB of RAM, and generating high performance code.

研究の動機と目的

  • 複雑な関数的プログラムの最適化において、等価性飽和のスケーラビリティの制限を克服すること、特に数千回のリライトステップを要する最適化を対象とする。
  • 結合則や交換則のような、病理的とされるリライトルールの組み合わせによって引き起こされる指数的増加するe-グラフの成長を克服すること。
  • 高性能コンピューティング分野で使用される多相型付き関数的言語(例:Rise)への等価性飽和の実用的適用を可能にすること。
  • リライト戦略における手動フェーズ順序付けの必要性を減らすために、部分的な自動化されたスケッチベースのガイドメカニズムを導入すること。
  • 等価性飽和を現実世界の関数的プログラム最適化に実現可能にするために、ラムダ計算の効率的符号化が不可欠であることを示すこと。

提案手法

  • プログラマーが部分的なプログラムパターン(未指定の詳細を含む)であるプログラムスケッチを提示することで、最適化プロセスをガイドするスケッチ誘導型等価性飽和を導入する。
  • 複雑な最適化を、各スケッチによって探索空間が制限される、より小さな段階的等価性飽和探索に分解する。
  • De Bruijnインデックスと抽出ベースの置換を用いて、多相型付きラムダ計算の効率的符号化を開発し、e-グラフの肥大化を最小限に抑え、パフォーマンスを向上させる。
  • Riseggの等価性飽和フレームワークに新しい符号化を統合し、名前バインディングを伴う関数的言語の項書き換えをサポートする。
  • 飽和後、e-グラフから最もパフォーマンスの高いプログラムをコストモデルを用いて抽出することで、意味的同値性とパフォーマンス最適化を保証する。
  • 本手法をRise関数的言語における7つの行列乗算最適化に適用し、ガイドなしの等価性飽和およびTVMと比較して、パフォーマンスとリソース使用量を評価する。

実験結果

リサーチクエスチョン

  • RQ1スケッチ誘導型等価性飽和は、ガイドなしのアプローチでは不可能な複雑な関数的プログラム最適化に、等価性飽和をスケーラブルに適用できるか?
  • RQ2効率的なラムダ計算符号化は、関数的プログラム最適化における等価性飽和のメモリおよび実行時間のオーバーヘッドをどの程度低減できるか?
  • RQ3リライトルールの手動フェーズ順序付けを必要とせずに、プログラマーが提供するスケッチが、複雑な最適化の発見をどの程度効果的にガイドできるか?
  • RQ4ガイドなしの等価性飽和および最先端のコンパイラー(例:TVM)と比較して、スケッチ誘導型等価性飽和は、パフォーマンスおよびリソース使用量でどの程度の向上を達成できるか?
  • RQ5効率的符号化とスケッチガイドの組み合わせにより、e-グラフの爆発によって到達不可能となる最適化を、等価性飽和が発見可能になるか?

主な発見

  • スケッチ誘導型等価性飽和は、1GB未満のメモリと数秒のコンパイル時間で、すべての7つの複雑な行列乗算最適化(ループブロッキング、ベクトル化、マルチスレーディングを含む)を発見した。
  • ガイドなしの等価性飽和は、1時間以上の実行時間と60GBのメモリを消費しても、7つの最適化のうち5つを発見できず、ナイーブな等価性飽和のスケーラビリティの限界を浮き彫りにした。
  • 新しいラムダ計算符号化により、ナイーブな符号化と比較して実行時間およびメモリ消費量が桁違いに削減され、等価性飽和が関数的プログラムに実用的であることが可能になった。
  • スケッチ誘導型等価性飽和から生成されたコードは、最先端のTVMコンパイラーおよびリライト戦略による手動最適化コードと同等のパフォーマンスを達成した。
  • スケッチガイドを3つまたはそれ以下に限定しても、すべての複雑な最適化が正常に発見された。これは、スケッチベースのガイドが探索空間を効果的に制約できることを示している。
  • 本手法により、記述的スケッチと等価性飽和を組み合わせたハイブリッド最適化戦略が可能となり、関数的言語向けにインタラクティブで高性能なコード生成への実用的道筋が提供された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。