Um compilador JIT de código aberto, compatível com NumPy, que transforma funções numéricas em Python em código de máquina rápido usando LLVM.
google/autofdo
Conjunto de ferramentas para AutoFDO, um fluxo de otimização guiada por perfil que usa amostras de hardware do Linux perf para melhorar binários compilados.
- Estrelas
- 623
- Forks
- 128
- Issues abertas
- 100
- Último commit
- mês passado
O que é?
AutoFDO é um conjunto de ferramentas para otimização automática orientada por feedback. Em vez de instrumentar um programa, ele coleta amostras de execução dos contadores de desempenho do hardware usando Linux perf, converte essas amostras em um perfil que o compilador consegue ler e devolve esse perfil ao compilador para orientar as decisões de otimização.
O repositório contém as ferramentas de conversão e processamento de perfis, desenvolvidas com base em componentes relacionados ao LLVM e ao GCOV. A compilação é gerenciada pelo CMake, com uma opção para escolher entre ferramentas baseadas em LLVM ou GCOV, e há suporte para Ubuntu 20.04, 22.04 e CentOS 9. É possível compilar com clang ou g++.
O projeto informa que o código do Propeller foi movido para um repositório separado, google/llvm-propeller.
Recursos principais
- 01Coleta amostras de perfis do Linux perf sem instrumentar o programa.
- 02Converte amostras de perfis em um formato que o compilador pode usar para otimização.
- 03Oferece compilações distintas das ferramentas para LLVM e GCOV, selecionadas pelo CMake.
- 04Compila com clang ou g++ no Ubuntu 20.04, 22.04 e CentOS 9.
Casos de uso
- Melhorar o desempenho em tempo de execução de binários C++ de produção usando perfis de cargas de trabalho reais.
- Compilar ferramentas do AutoFDO para pipelines de compiladores baseados em LLVM em servidores Linux.
- Experimentar a otimização guiada por perfil sem alterar o código-fonte.
Início rápido
- 1
Instale os pré-requisitos no Ubuntu 20.04 ou 22.04
sudo apt install libunwind-dev libgflags-dev libssl-dev libelf-dev protobuf-compiler cmake libzstd-dev clang g++ - 2
Clone o repositório com os submódulos
git clone --recursive --depth 1 https://github.com/google/autofdo.git - 3
Crie um diretório de build e compile as ferramentas do 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
Compile as ferramentas do autofdo
cmake -DENABLE_TOOL=GCOV -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=On ../ && make -j 4
Antes de usar
- As instruções de build são destinadas somente ao Ubuntu 20.04, Ubuntu 22.04 e CentOS 9.
- O Ubuntu 20.04 precisa de uma versão do cmake mais recente que a fornecida, pois o build do LLVM incluído falha com a versão padrão.
- A base de código do Propeller foi movida para google/llvm-propeller.
Em coleções
Tópicos
Perguntas frequentes
- O que é autofdo?
- Conjunto de ferramentas para AutoFDO, um fluxo de otimização guiada por perfil que usa amostras de hardware do Linux perf para melhorar binários compilados. AutoFDO é um conjunto de ferramentas para otimização automática orientada por feedback. Em vez de instrumentar um programa, ele coleta amostras de execução dos contadores de desempenho do hardware usando Linux perf, converte essas amostras em um perfil que o compilador consegue ler e devolve esse perfil ao compilador para orientar as decisões de otimização.
- autofdo é gratuito? Qual é a licença?
- autofdo é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
- autofdo ainda é mantido?
- Atualizado nos últimos 6 meses. O último commit de autofdo foi em 30 de set. de 2026.
- Para que posso usar autofdo?
- Melhorar o desempenho em tempo de execução de binários C++ de produção usando perfis de cargas de trabalho reais. Compilar ferramentas do AutoFDO para pipelines de compiladores baseados em LLVM em servidores Linux. Experimentar a otimização guiada por perfil sem alterar o código-fonte.
- Como instalar autofdo?
- Instale os pré-requisitos no Ubuntu 20.04 ou 22.04: sudo apt install libunwind-dev libgflags-dev libssl-dev libelf-dev protobuf-compiler cmake libzstd-dev clang g++ Clone o repositório com os submódulos: git clone --recursive --depth 1 https://github.com/google/autofdo.git Crie um diretório de build e compile as ferramentas do 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 ../ Compile as ferramentas do autofdo: cmake -DENABLE_TOOL=GCOV -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=On ../ && make -j 4
- Onde consigo autofdo?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/google/autofdo
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Uma implementação de C e C++ com segurança de memória, que compila código existente com poucas ou nenhuma alteração e transforma erros de memória em panics.
Coleção modular de tecnologias para compiladores e toolchains, incluindo o núcleo do LLVM, o frontend Clang para C/C++, libc++ e o linker LLD.
Uma toolchain de compilação que transforma código C e C++ em WebAssembly para execução em navegadores, Node.js e outros runtimes Wasm.
Um compilador Go baseado em LLVM para microcontroladores, WebAssembly (WASM/WASI) e ferramentas de linha de comando.
Um compilador Go baseado em LLVM que permite chamar bibliotecas C diretamente e importar bibliotecas Python.