A equipe de desenvolvimento do LLVM apresentou uma proposta chamada Multi-Thread Parallel Compilation (MTPC) para melhorar o ThinLTO. Atualmente, essa técnica paraleliza módulos completos, mas os módulos grandes são processados de forma serial, criando gargalos. O MTPC busca quebrar essa barreira dividindo o trabalho no nível de funções.
Como funciona o paralelismo intramódulo no ThinLTO 🚀
O MTPC introduz a capacidade de dividir um módulo grande em unidades menores baseadas em funções. Cada função pode ser compilada e otimizada em uma thread independente, desde que as dependências de dados e as referências globais sejam gerenciadas corretamente. Isso permite que processadores com múltiplos núcleos trabalhem simultaneamente dentro de um mesmo módulo, reduzindo o tempo de compilação em projetos com arquivos fonte muito extensos.
O drama dos módulos que se achavam intocáveis 😅
Até agora, os módulos grandes desfrutavam de uma vida tranquila: todo o código era compilado em série, como uma fila no supermercado. Com o MTPC, essas funções preguiçosas terão que se colocar a trabalhar em paralelo, como se um chefe lhes dissesse que o café acabou. Os desenvolvedores poderão dizer adeus àqueles intervalos enquanto esperam o compilador terminar, embora com certeza algum módulo fará greve por falta de sincronização.