JIT-компилятор с открытым исходным кодом, учитывающий NumPy и преобразующий числовые функции Python в быстрый машинный код с помощью LLVM.
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
Установите необходимые компоненты в 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 требуется более новая версия cmake, чем поставляемая по умолчанию, поскольку сборка включённого LLVM с ней завершается ошибкой.
- Кодовая база Propeller перенесена в google/llvm-propeller.
В подборках
Темы
Частые вопросы
- Что такое 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 обновляется ежедневно.
Похожие проекты
Реализация C и C++ с защитой памяти: компилирует существующий код почти без изменений и превращает ошибки работы с памятью в панику.
Модульный набор технологий для компиляторов и инструментальных цепочек, включающий LLVM core, фронтенд Clang для C/C++, libc++ и линкер LLD.
Набор инструментов компиляции, который преобразует код на C и C++ в WebAssembly для запуска в браузерах, Node.js и других Wasm-средах.
Компилятор Go на базе LLVM для микроконтроллеров, WebAssembly (WASM/WASI) и инструментов командной строки.
Компилятор Go на базе LLVM: позволяет Go-коду напрямую вызывать библиотеки C и импортировать библиотеки Python.