El equipo de desarrollo de LLVM ha presentado una propuesta llamada Multi-Thread Parallel Compilation (MTPC) para mejorar ThinLTO. Actualmente, esta técnica paraleliza módulos completos, pero los módulos grandes se procesan de forma serial, creando cuellos de botella. MTPC busca romper esa barrera dividiendo el trabajo a nivel de funciones.
Cómo funciona el paralelismo intra-módulo en ThinLTO 🚀
MTPC introduce la capacidad de dividir un módulo grande en unidades más pequeñas basadas en funciones. Cada función puede ser compilada y optimizada en un hilo independiente, siempre que se gestionen correctamente las dependencias de datos y las referencias globales. Esto permite que procesadores con múltiples núcleos trabajen simultáneamente dentro de un mismo módulo, reduciendo el tiempo de compilación en proyectos con archivos fuente muy extensos.
El drama de los módulos que se creían intocables 😅
Hasta ahora, los módulos grandes disfrutaban de una vida tranquila: todo el código se compilaba en serie, como una fila en el supermercado. Con MTPC, esas funciones perezosas tendrán que ponerse a trabajar en paralelo, como si un jefe les hubiera dicho que el café se acabó. Los desarrolladores podrán decir adiós a esos descansos mientras esperan que el compilador termine, aunque seguro que algún módulo hará huelga por falta de sincronización.