google/autofdo
Linux perfのサンプリングハードウェアプロファイルを使い、コンパイル済みバイナリを改善するAutoFDOのプロファイル誘導最適化ワークフロー向けツールチェーン。
- スター
- 623
- フォーク
- 128
- 未解決の Issue
- 100
- 最終コミット
- 先月
これは何?
AutoFDOは、フィードバック駆動最適化を自動化するためのツール群です。プログラムに計測コードを組み込む代わりに、Linux perfを使ってハードウェア性能カウンターから実行プロファイルをサンプリングし、コンパイラーが読み取れるプロファイルに変換してコンパイラーにフィードバックすることで、最適化の判断を導きます。
このリポジトリには、LLVMおよびGCOV関連コンポーネントを基盤とするプロファイル変換・処理ツールが含まれています。ビルドにはCMakeを使用し、LLVMベースまたはGCOVベースのツールを選択できます。Ubuntu 20.04、22.04、CentOS 9に対応しており、clangまたはg++でビルドできます。
プロジェクトの説明によると、Propellerのコードは別のリポジトリgoogle/llvm-propellerに移動しています。
主な機能
- 01プログラムに計測コードを組み込まずに、Linux perfからサンプリングプロファイルを収集します。
- 02サンプリングプロファイルを、コンパイラーが最適化に利用できる形式に変換します。
- 03CMakeで選択できる、LLVM版とGCOV版の個別のツールビルドを提供します。
- 04Ubuntu 20.04、22.04、CentOS 9上でclangまたはg++を使ってビルドできます。
ユースケース
- 実際のワークロードのプロファイルを使って、本番環境のC++バイナリの実行性能を向上させる。
- Linuxサーバー上で、LLVMベースのコンパイラーパイプライン向けにAutoFDOツールをビルドする。
- ソースコードを変更せずに、プロファイル誘導最適化を試す。
クイックスタート
- 1
Ubuntu 20.04 または 22.04 に前提ソフトウェアをインストールする
sudo apt install libunwind-dev libgflags-dev libssl-dev libelf-dev protobuf-compiler cmake libzstd-dev clang g++ - 2
サブモジュールを含めてリポジトリをクローンする
git clone --recursive --depth 1 https://github.com/google/autofdo.git - 3
ビルドディレクトリを作成し、LLVM ツールをビルドする
cd autofdo && mkdir build && cd build && cmake -DENABLE_TOOL=LLVM -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=On ../ - 4
autofdo ツールをビルドする
cmake -DENABLE_TOOL=GCOV -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=On ../ && make -j 4
使う前に知っておきたいこと
- ビルド手順の対象は Ubuntu 20.04、Ubuntu 22.04、CentOS 9 のみです。
- Ubuntu 20.04 では、同梱されている LLVM のビルドが標準バージョンでは失敗するため、より新しい cmake が必要です。
- Propeller のコードベースは google/llvm-propeller に移動しました。
収録されている特集
トピック
よくある質問
- autofdo とは?
- Linux perfのサンプリングハードウェアプロファイルを使い、コンパイル済みバイナリを改善するAutoFDOのプロファイル誘導最適化ワークフロー向けツールチェーン。 AutoFDOは、フィードバック駆動最適化を自動化するためのツール群です。プログラムに計測コードを組み込む代わりに、Linux perfを使ってハードウェア性能カウンターから実行プロファイルをサンプリングし、コンパイラーが読み取れるプロファイルに変換してコンパイラーにフィードバックすることで、最適化の判断を導きます。
- autofdo は無料で使えますか?ライセンスは?
- autofdo は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- autofdo は今もメンテナンスされていますか?
- 半年以内に更新あり。autofdo の最終コミットは 2026年9月30日 です。
- autofdo は何に使えますか?
- 実際のワークロードのプロファイルを使って、本番環境のC++バイナリの実行性能を向上させる。 Linuxサーバー上で、LLVMベースのコンパイラーパイプライン向けにAutoFDOツールをビルドする。 ソースコードを変更せずに、プロファイル誘導最適化を試す。
- autofdo のインストール方法は?
- Ubuntu 20.04 または 22.04 に前提ソフトウェアをインストールする: sudo apt install libunwind-dev libgflags-dev libssl-dev libelf-dev protobuf-compiler cmake libzstd-dev clang g++ サブモジュールを含めてリポジトリをクローンする: git clone --recursive --depth 1 https://github.com/google/autofdo.git ビルドディレクトリを作成し、LLVM ツールをビルドする: cd autofdo && mkdir build && cd build && cmake -DENABLE_TOOL=LLVM -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=On ../ autofdo ツールをビルドする: cmake -DENABLE_TOOL=GCOV -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=On ../ && make -j 4
- autofdo はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/google/autofdo
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
既存コードをほぼ変更せずにコンパイルでき、メモリエラーをpanicとして検出する、メモリ安全なC/C++実装です。
LLVMコア、Clang C/C++フロントエンド、libc++、LLDリンカーなどを含む、モジュール式のコンパイラおよびツールチェーン技術群。
C/C++コードをWebAssemblyに変換し、ブラウザーやNode.jsなどのWasmランタイムで実行できるコンパイラツールチェーン。
LLVMを基盤とするGoコンパイラ。マイクロコントローラー、WebAssembly(WASM/WASI)、コマンドラインツール向けにビルドできます。