Un compilador JIT de código abierto, compatible con NumPy, que convierte funciones numéricas de Python en código máquina rápido mediante LLVM.
google/autofdo
Toolchain para AutoFDO, un flujo de optimización guiada por perfiles que usa muestras de hardware de Linux perf para mejorar los binarios compilados.
- Estrellas
- 623
- Forks
- 128
- Issues abiertos
- 100
- Último commit
- el mes pasado
¿Qué es?
AutoFDO es un conjunto de herramientas para la optimización automática guiada por retroalimentación. En lugar de instrumentar un programa, recopila perfiles de ejecución muestreados a partir de los contadores de rendimiento del hardware mediante Linux perf, los convierte en un perfil que el compilador puede interpretar y se lo proporciona para orientar las decisiones de optimización.
El repositorio contiene herramientas para convertir y procesar perfiles, basadas en componentes de LLVM y relacionados con GCOV. La compilación se gestiona con CMake, que permite elegir entre herramientas basadas en LLVM y herramientas basadas en GCOV, y es compatible con Ubuntu 20.04 y 22.04, así como con CentOS 9. Se puede compilar con clang o g++.
El proyecto indica que su código de Propeller se trasladó a un repositorio independiente: google/llvm-propeller.
Funciones clave
- 01Recopila perfiles muestreados de Linux perf sin instrumentar el programa.
- 02Convierte perfiles muestreados a un formato que el compilador puede usar para optimizar.
- 03Ofrece compilaciones independientes de herramientas basadas en LLVM y GCOV, que se seleccionan mediante CMake.
- 04Se compila con clang o g++ en Ubuntu 20.04 y 22.04, y en CentOS 9.
Casos de uso
- Mejorar el rendimiento en tiempo de ejecución de binarios C++ de producción usando perfiles de cargas de trabajo reales.
- Compilar herramientas de AutoFDO para flujos de compilación basados en LLVM en servidores Linux.
- Probar la optimización guiada por perfiles sin cambiar el código fuente.
Inicio rápido
- 1
Instala los requisitos previos en Ubuntu 20.04 o 22.04
sudo apt install libunwind-dev libgflags-dev libssl-dev libelf-dev protobuf-compiler cmake libzstd-dev clang g++ - 2
Clona el repositorio con los submódulos
git clone --recursive --depth 1 https://github.com/google/autofdo.git - 3
Crea un directorio de compilación y compila las herramientas de 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
Compila las herramientas de 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 usarlo
- Las instrucciones de compilación están dirigidas únicamente a Ubuntu 20.04, Ubuntu 22.04 y CentOS 9.
- Ubuntu 20.04 necesita una versión más reciente de cmake que la incluida, porque la compilación de LLVM incluida falla con la versión predeterminada.
- El código base de Propeller se ha trasladado a google/llvm-propeller.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es autofdo?
- Toolchain para AutoFDO, un flujo de optimización guiada por perfiles que usa muestras de hardware de Linux perf para mejorar los binarios compilados. AutoFDO es un conjunto de herramientas para la optimización automática guiada por retroalimentación. En lugar de instrumentar un programa, recopila perfiles de ejecución muestreados a partir de los contadores de rendimiento del hardware mediante Linux perf, los convierte en un perfil que el compilador puede interpretar y se lo proporciona para orientar las decisiones de optimización.
- ¿autofdo es gratuito? ¿Qué licencia tiene?
- autofdo es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿autofdo sigue mantenido?
- Actualizado en los últimos 6 meses. El último commit de autofdo fue el 30 sept 2026.
- ¿Para qué puedo usar autofdo?
- Mejorar el rendimiento en tiempo de ejecución de binarios C++ de producción usando perfiles de cargas de trabajo reales. Compilar herramientas de AutoFDO para flujos de compilación basados en LLVM en servidores Linux. Probar la optimización guiada por perfiles sin cambiar el código fuente.
- ¿Cómo se instala autofdo?
- Instala los requisitos previos en Ubuntu 20.04 o 22.04: sudo apt install libunwind-dev libgflags-dev libssl-dev libelf-dev protobuf-compiler cmake libzstd-dev clang g++ Clona el repositorio con los submódulos: git clone --recursive --depth 1 https://github.com/google/autofdo.git Crea un directorio de compilación y compila las herramientas de 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 ../ Compila las herramientas de autofdo: cmake -DENABLE_TOOL=GCOV -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=On ../ && make -j 4
- ¿Dónde consigo autofdo?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/google/autofdo
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Una implementación de C y C++ segura para la memoria que compila código existente con pocos cambios o ninguno y convierte los errores de memoria en pánicos.
Colección modular de tecnologías para compiladores y cadenas de herramientas, que incluye el núcleo de LLVM, el frontend Clang para C/C++, libc++ y el linker LLD.
Una cadena de herramientas de compilación que convierte código C y C++ en WebAssembly para ejecutarlo en navegadores, Node.js y otros runtimes de Wasm.
Un compilador de Go basado en LLVM que genera código para microcontroladores, WebAssembly (WASM/WASI) y herramientas de línea de comandos.
Un compilador de Go basado en LLVM que permite llamar directamente a bibliotecas de C e importar bibliotecas de Python.