Repolode
google

google/autofdo

Набор инструментов AutoFDO — процесс оптимизации с обратной связью по профилям, использующий аппаратные выборочные профили из Linux perf для улучшения скомпилированных бинарных файлов.

Звёзды
623
Форки
128
Открытые issues
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Преобразует выборочные профили в формат, который компилятор может использовать для оптимизации.
  • 03Предоставляет отдельные сборки инструментов на основе LLVM и GCOV, выбор которых задаётся через CMake.
  • 04Собирается с помощью clang или g++ на Ubuntu 20.04, 22.04 и CentOS 9.

Сценарии использования

  • Повышение производительности C++-бинарных файлов в рабочей среде с помощью профилей реальных нагрузок.
  • Сборка инструментов AutoFDO для конвейеров компиляции на основе LLVM на серверах Linux.
  • Эксперименты с оптимизацией по профилю без изменения исходного кода.

Быстрый старт

  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 требуется более новая версия cmake, чем поставляемая по умолчанию, поскольку сборка включённого LLVM с ней завершается ошибкой.
  • Кодовая база Propeller перенесена в google/llvm-propeller.

В подборках

Темы

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

Частые вопросы

Что такое autofdo?
Набор инструментов AutoFDO — процесс оптимизации с обратной связью по профилям, использующий аппаратные выборочные профили из Linux perf для улучшения скомпилированных бинарных файлов. AutoFDO — набор инструментов для автоматической оптимизации с обратной связью. Вместо инструментирования программы он собирает выборочные профили выполнения с аппаратных счётчиков производительности с помощью Linux perf, преобразует их в профиль, понятный компилятору, и передаёт его обратно компилятору, чтобы направлять решения по оптимизации.
autofdo можно использовать бесплатно? Какая у него лицензия?
autofdo распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
autofdo всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в autofdo — 30 сент. 2026 г..
Для чего можно использовать autofdo?
Повышение производительности C++-бинарных файлов в рабочей среде с помощью профилей реальных нагрузок. Сборка инструментов AutoFDO для конвейеров компиляции на основе LLVM на серверах Linux. Эксперименты с оптимизацией по профилю без изменения исходного кода.
Как установить 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 проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

JIT-компилятор с открытым исходным кодом, учитывающий NumPy и преобразующий числовые функции Python в быстрый машинный код с помощью LLVM.

11,2 тыс.+3 за неделю1,4 тыс.PythonBSD-2-ClauseАктивно поддерживаетсяОбновлён вчера