¿Cómo logra NVIDIA reducir el tiempo de bootstrap en GCC?
El ingeniero de NVIDIA, Kyrylo Tkachov, publicó ayer un parche para pruebas con el objetivo de reducir significativamente el tiempo que requiere la GNU Compiler Collection (GCC) para realizar un bootstrap nativo. El tiempo invertido en el proceso de configuración para compilaciones nativas de GCC se reduce en aproximadamente un 43%, mientras que el tiempo total de bootstrap se recorta en cerca de un 15%.
La ejecución de un bootstrap de GCC implica correr el script de Autoconf durante cada una de las tres etapas de compilación. Sin embargo, dado que los scripts de configuración se ejecutan de forma serial y consumen bastante tiempo en el caso del compilador GCC, debido a su extenso código fuente, esto termina representando una parte significativa del tiempo total de compilación.
La propuesta consiste en cachear los resultados de la configuración para que puedan reutilizarse a través de las tres etapas del compilador, evitando así el tiempo excesivo dedicado a la ejecución serial de scripts. En el caso de bootstraps nativos, a diferencia de la compilación cruzada, los scripts de configuración no deberían cambiar.
El proceso de compilación se beneficia de esta caché al evitar cálculos redundantes. En una máquina "AArch64 multi-core de gran escala" sin nombre, que probablemente sea el sistema NVIDIA Vera, Kyrylo Tkachov señaló que cerca del 30% del tiempo total del bootstrap se pierde ejecutando scripts de configuración, manteniendo una utilización de CPU inferior al 15% durante casi la mitad del proceso de construcción.
¿Cuáles son los resultados iniciales del parche?
Los resultados tras aplicar los parches iniciales son prometedores según los reportes técnicos compartidos:
"Esto reduce aproximadamente a la mitad el tiempo invertido en configure (una reducción del 43%) y recorta el tiempo total de bootstrap en cerca de un 15%, sin cambios en la configuración generada: los encabezados de configuración producidos son idénticos a los de una compilación sin caché y la comparación de la etapa 2 y etapa 3 sigue siendo exitosa. Verificado con 'make bootstrap'; las compilaciones cross, Canadian y --disable-bootstrap no deberían verse afectadas. Probado en aarch64-none-linux-gnu y x86_64-linux."
El parche está disponible para pruebas en la lista de correo de gcc-patches.
En respuesta, surgió una sugerencia de que este sistema de caché es más un "hack" y se argumentó que los scripts de configuración podrían optimizarse aún más para reducir el tiempo. Actualmente existen comprobaciones obsoletas, la posibilidad de eliminar el soporte para el enlazador GNU Gold y otros remanentes que podrían limpiarse. La limpieza de estos scripts también beneficiaría a las compilaciones cruzadas y no solo a los bootstraps nativos.
Habrá que ver hacia dónde conduce este trabajo, pero cualquier esfuerzo para reducir significativamente el tiempo de bootstrap de GCC es sumamente valioso para la comunidad de desarrollo de sistemas. Vía CNX Software.


