Il team di sviluppo di LLVM ha presentato una proposta chiamata Multi-Thread Parallel Compilation (MTPC) per migliorare ThinLTO. Attualmente, questa tecnica parallelizza moduli completi, ma i moduli grandi vengono elaborati in modo seriale, creando colli di bottiglia. MTPC mira a rompere questa barriera suddividendo il lavoro a livello di funzioni.
Come funziona il parallelismo intra-modulo in ThinLTO 🚀
MTPC introduce la capacità di suddividere un modulo grande in unità più piccole basate sulle funzioni. Ogni funzione può essere compilata e ottimizzata in un thread indipendente, a patto che le dipendenze dei dati e i riferimenti globali siano gestiti correttamente. Ciò consente a processori con più core di lavorare simultaneamente all'interno dello stesso modulo, riducendo il tempo di compilazione in progetti con file sorgente molto estesi.
Il dramma dei moduli che si credevano intoccabili 😅
Fino ad ora, i moduli grandi godevano di una vita tranquilla: tutto il codice veniva compilato in serie, come una fila al supermercato. Con MTPC, quelle funzioni pigre dovranno mettersi a lavorare in parallelo, come se un capo avesse detto loro che il caffè è finito. Gli sviluppatori potranno dire addio a quelle pause mentre aspettano che il compilatore finisca, anche se sicuramente qualche modulo farà sciopero per mancanza di sincronizzazione.