Skip to main content
QUICK REVIEW

[論文レビュー] Compiler Phase Ordering as an Orthogonal Approach for Reducing Energy Consumption

Ricardo Nobre, Luís Reis|arXiv (Cornell University)|Jul 2, 2018
Parallel Computing and Optimization Techniques参考文献 15被引用数 10
ひとこと要約

本稿では、パフォーマンス最適化とは別次元の最適化戦略としてのコンパイラフェーズ順序の導入を提案し、エネルギー消費を削減するためのグラフベースのモデルを用いてエネルギー最適化されたフェーズシーケンスを生成する。ARMおよびx86プラットフォームにおける実験では、パフォーマンス向上なしに最大24%のエネルギー削減を達成した。これは、パフォーマンス最適化のためのコンパイラフラグ(例:-O3)が常にエネルギー効率の良いコードを生成するわけではないことを示している。

ABSTRACT

Compiler writers typically focus primarily on the performance of the generated program binaries when selecting the passes and the order in which they are applied in the standard optimization levels, such as GCC -O3. In some domains, such as embedded systems and High-Performance Computing (HPC), it might be sometimes acceptable to slowdown computations if the energy consumed can be significantly decreased. Embedded systems often rely on a battery and besides energy also have power dissipation limitations, while HPC centers have a growing concern with electricity and cooling costs. Relying on power policies to apply frequency/voltage scaling and/or change the CPU to idle states (e.g., alternate between power levels in bursts) as the main method to reduce energy leaves potential for improvement using other orthogonal approaches. In this work we evaluate the impact of compiler pass sequences specialization (also known as compiler phase ordering) as a means to reduce the energy consumed by a set of programs/functions when comparing with the use of the standard compiler phase orders provided by, e.g., -OX flags. We use our phase selection and ordering framework to explore the design space in the context of a Clang+LLVM compiler targeting a multicore ARM processor in an ODROID board and a dual x86 desktop representative of a node in a Supercomputing center. Our experiments with a set of representative kernels show that there we can reduce energy consumption by up to 24% and that some of these improvements can only be partially explained by improvements to execution time. The experiments show cases where applications that run faster consume more energy. Additionally, we make an effort to characterize the compiler sequence exploration space in terms of their impact on performance and energy.

研究の動機と目的

  • パフォーマンスを超えた最適化次元としてのコンパイラフェーズ順序の検討により、エネルギー効率の良いコンパイルにおけるギャップを埋める。
  • 標準の最適化レベル(例:-O3)よりも、カスタムコンパイラフェーズシーケンスがエネルギー消費をより効果的に削減できるかどうかを調査する。
  • パフォーマンスとエネルギー消費の両方に与える影響を踏まえて、コンパイラフェーズ順序の設計空間を特徴づける。
  • 特定の関数およびターゲットアーキテクチャに適合したエネルギー最適化されたコンパイラシーケンスを生成するためのグラフベースのフレームワークを構築・評価する。
  • 動的電力管理下において、エネルギー効率とパフォーマンスが完全に相関しないことの実証

提案手法

  • 統計的データに基づいて事前に最適化されたシーケンスを学習した、エネルギー効率の高いコンパイラフェーズ順序を表すグラフモデルを用いる。
  • ARM(ODROID XU+E)およびx86(デュアルXeon)プラットフォームをターゲットとしたClang+LLVMコンパイラ内に、フェーズ選択および順序付けフレームワークを実装する。
  • 12個のPolyBench/Cカーネルについて、複数のOpenMPスレッド設定下で実行時間、エネルギー、電力消費を測定する。
  • カスタムフェーズ順序のエネルギー消費を、標準のコンパイラフラグ(-O1から-O3)およびベースラインシーケンスと比較する。
  • フェーズ順序探索プロセスの有効性とスケーラビリティを評価するため、1つずつ除外する交差検証法(leave-one-out)を適用する。
  • 探索空間の縮小を図るため、フィンガープrintィングおよびクラスタリング技術を用い、探索効率を向上させる。

実験結果

リサーチクエスチョン

  • RQ1標準の最適化レベル(例:-O3)を超えて、コンパイラフェーズ順序をエネルギー消費削減の別次元の最適化戦略として利用できるか?
  • RQ2パフォーマンス最適化のためのコンパイラフラグ(例:-O3)は、どの程度エネルギー最適化されたバイナリを生成するのか。また、その限界はどこにあるか?
  • RQ3パフォーマンスが低下する状況において、カスタムフェーズ順序はエネルギー消費にどのように影響するか、実行時間と比較してどうか?
  • RQ4異なるCPUアーキテクチャ(ARM対x86)および電力管理ポリシーが、フェーズ順序の有効性に与える影響は何か?
  • RQ5過去の最適化データを学習に用いたグラフベースのモデルは、エネルギー効率の良いフェーズシーケンスを効果的に予測できるか?

主な発見

  • コンパイラフェーズ順序により、標準の-O3最適化レベルと比較して最大24%のエネルギー消費削減が達成された。パフォーマンスが向上しなくても同様に有効である。
  • 一部のプログラムでは-O3で実行速度が向上するが、エネルギー消費が増加する例もあり、パフォーマンスとエネルギー効率が完全に相関しないことを示している。
  • カスタムフェーズ順序によるエネルギー削減は、実行時間の改善だけでは説明できない。メモリアクセスや電力状態遷移といった他の要因が重要な役割を果たしている。
  • グラフベースのフェーズ順序生成フレームワークは、従来の遺伝的アルゴリズムと比較して探索速度を10倍に加速した。
  • 本手法は多様なプラットフォームで有効であり、ARMベースの組み込みシステムおよびx86ベースのHPCワークステーションの両方で顕著なエネルギー削減を達成した。
  • クラスタリングを用いたフェーズ順序空間のプルーニングにより、遺伝的アルゴリズムベースラインと比較して探索時間を18倍短縮した。かつ、過去の研究では43%のパフォーマンス向上を達成した。

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

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

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

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