Skip to content
TopicTracker
出典 HackerNews原文を表示
翻訳言語翻訳言語

LLVM最適化パイプラインの多次元・パス単位の実証研究

本論文は、LLVMコンパイラの最適化パイプラインを各最適化パスごとに詳細に分析した実証研究を報告する。実行時間、コードサイズ、エネルギー消費などの複数の指標にわたって各パスの効果を測定し、パス間の相互作用や適用順序が最終的な最適化結果に与える影響を体系的に評価する。

背景メモ

- LLVMはコンパイラ基盤で、AppleのXcodeやGoogleのAndroid NDK、多くのプログラミング言語(Rust, Swift, Juliaなど)の裏側で使われている。コードを「最適化パス」と呼ばれる多数の変換処理で順次書き換え、高速化・省サイズ化する。典型的な最適化レベル(-O2, -O3など)では数百のパスが決められた順序(パイプライン)で実行される。 - この研究は、最適化パイプラインの各パスが「どの次元(速度、サイズ、コンパイル時間のどれ)」に「どの程度」効いているかを、パス単位で大規模に計測した初めての体系的調査。従来はブラックボックス的に「-O2をかける」としか評価されていなかった。 - 分析にはSPEC CPUベンチマークが使用され、各パスの効果を「速度向上率」「バイナリサイズ変化率」「コンパイル時間増分」という直交する3軸で定量化。全てのパスを1つずつ有効/無効にして比較するという単純だが計算コストの高い手法を採っている。 - 結果、パスの効果は非常に偏っており、大半のパスはほぼ無効だが一部のパスが圧倒的に支配的であること、ビルド時間と実行時性能の間に明確なトレードオフがあること、など実用的な知見が得られている。

関連記事