[論文レビュー] Automatically Tuning the GCC Compiler to Optimize the Performance of Applications Running on the ARM Cortex-M3.
本論文は、ARM Cortex-M3向けにGCCコンパイラフラグを自動的に最適化する手法を提案し、標準の-O3最適化を上回る性能向上を達成した。26のフラグを削除し、3つの新しいフラグを追加することで、最適化された設定(-Ocm3)を特定し、BEEBSベンチマークスイート全体で実行時間を顕著に短縮した。
This paper introduces a novel method for automatically tuning the selection of compiler flags in order to optimize the performance of software that is intended to run on particular hardware platforms. Motivated by the rapid recent expansion of so-called Internet of Things (IoT) devices, we are particularly interested in improving the execution time of code running on embedded system architectures. We demonstrate the effectiveness of our approach on code compiled by the GNU C Compiler (GCC) for the ARM Cortex-M3 (CM3) processor; and we show how our method outperforms the current industry standard -O3 optimization level across a diverse embedded system benchmark suite called BEEBS. We begin by conducting an investigatory study to quantify the potential gains by using existing iterative compilation approaches that time-intensively search for optimal configurations for each given benchmark. Then we adapt iterative compilation to output a single configuration that optimizes performance across the entire benchmark suite as a whole. Although this is a time consuming process, our approach eventually constructs a simple variation of -O3, which we call -Ocm3, that realizes nearly two thirds of the known available gains on the CM3 architecture (beyond -O3) and significantly outperforms a far more complex state-of-the-art predictive method. Our approach suggests that 26 flags should be removed from -O3 while three other flags should be added. We analyze in detail two of the former and explain why turning them off improves performance on this processor.
研究の動機と目的
- 組み込みシステム、特にリソース制限のあるIoTデバイスにおいて、最適なコンパイラフラグを手動で選択する課題に対処すること。
- 反復的コンパイルを用いて、多様なベンチマークスイート全体でパフォーマンスを最適化する1つの統一されたコンパイラ設定を同定できるかを検討すること。
- ARM Cortex-M3アーキテクチャにおいて、既存の最先端の予測的最適化手法を上回ること。
- CM3プロセッサ上で顕著なパフォーマンス向上をもたらす、特定のコンパイラフラグの削除または追加を同定・分析すること。
提案手法
- 研究は、BEEBSベンチマークスイートにおけるパフォーマンスへの影響を測定しながら、コンパイラフラグ設定の体系的探索を反復的コンパイルによって実施する。
- 全ベンチマークを1つの最適化ターゲットとして扱い、最適な設定を特定するための時間的に高コストな探索を実施する。
- 性能向上に基づき、-O3から26のフラグを削除し、3つの新しいフラグを追加することで、派生的な最適化レベルである-Ocm3を生成する。
- 提案手法は、-O3および複雑な予測的最適化手法と比較して、最終的な-Ocm3設定の性能を評価・比較する。
- 2つの削除されたフラグについて、CM3アーキテクチャ上でパフォーマンスに悪影響を及える理由を説明する詳細分析を実施する。
- 最終的な設定は、BEEBSスイート全体にわたって検証され、全体的なパフォーマンス向上を測定する。
実験結果
リサーチクエスチョン
- RQ1反復的コンパイルは、多様な組み込みベンチマークスイート全体でパフォーマンスを最適化する1つのコンパイラ設定を同定できるか?
- RQ2ARM Cortex-M3上で、標準の-O3最適化レベルを上回るパフォーマンス向上はどの程度達成できるか?
- RQ3CM3アーキテクチャ上で、どの特定のコンパイラフラグを削除または追加することで、顕著なパフォーマンス向上が得られるか?
- RQ4提案された-Ocm3設定は、最先端の予測的最適化手法と比較して、パフォーマンスおよび単純さの面でどのように差をつけるか?
- RQ5特定のコンパイラフラグがARM Cortex-M3上でパフォーマンスに悪影響を及える理由は何か?その背後にある理由は何か?
主な発見
- 提案された-Ocm3設定は、ARM Cortex-M3上で-O3を上回るパフォーマンス向上のうち、既知の最大値のおよそ2/3に相当する向上を達成した。
- 複雑な最先端の予測的最適化手法を上回る性能を示したが、本手法は単純であるにもかかわらず。
- -O3から26の特定フラグを削除し、3つの新しいフラグを追加することで、顕著で有意義なパフォーマンス向上が得られた。
- 削除された2つのフラグは、CM3のパイプラインアーキテクチャ上でのインストラクションレベル並列性のオーバーヘッドが原因でパフォーマンスを低下させたことが判明した。
- 最終的な設定は、-O3よりもBEEBSベンチマークスイート全体で実行時間をより効果的に短縮した。これは、包括的かつスイート全体にわたる最適化の価値を示している。
- 本研究は、アーキテクチャに特化した最適化が、最高の標準最適化レベルを上回る場合でも顕著な向上をもたらす可能性を確認した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。