Repolode
google

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. 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. 2

    サブモジュールを含めてリポジトリをクローンする

    git clone --recursive --depth 1 https://github.com/google/autofdo.git
  3. 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. 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 に移動しました。

収録されている特集

トピック

#compiler#performance#profile-guided-optimization#llvm#linux-perf#cpp

よくある質問

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 の数値は毎日更新されます。

関連プロジェクト

NumPyに対応したオープンソースのJITコンパイラ。LLVMを使って数値計算向けPython関数を高速なマシンコードに変換します。

1.1万+3 今週1353PythonBSD-2-Clause活発にメンテナンス更新 昨日

LLVMを基盤とするGoコンパイラ。GoからCライブラリを直接呼び出し、Pythonライブラリもインポートできます。

開発ツール#compiler#llvm#go
850+2 今週58GoApache-2.0更新 7 時間前