FERRAMENTAS LINUX: Os Patches do GCC foam publicados para uma implementação de LTO incremental

segunda-feira, 20 de novembro de 2023

Os Patches do GCC foam publicados para uma implementação de LTO incremental


Michal Jires, da SUSE, apresentou na sexta-feira um novo conjunto de patches para adicionar suporte ao LTO incremental na coleção de compiladores GNU. O objetivo do LTO incremental é diminuir os tempos de compilação durante ciclos rápidos de edição-compilação, enquanto ainda se utiliza otimizações de tempo de link.

Jires descreveu a série de patches da seguinte forma: Os patches implementam o LTO incremental, mais especificamente, armazenando em cache os resultados da fase ltrans. Além disso, os patches contêm modificações para diminuir a divergência de partições ltrans para que possam ser armazenadas em cache.

O objetivo é diminuir os tempos de compilação para ciclos rápidos de edição e compilação ao usar o LTO. Mesmo com essas pequenas alterações no restante do GCC, ele funciona muito bem. Atualmente, testando por autocompilação do cc1, com commits individuais usados ​​como mudanças incrementais, em média, apenas ~1/3 das partições precisam ser recompiladas com -O2 -g0 e ~1/2 com -O2 -g. Isso reduz diretamente o tempo gasto na fase ltrans do LTO.

Infelizmente, ganhos maiores são um pouco frágeis. Você deve se lembrar que durante minha palestra sobre o Caldeirão eu reivindiquei a redução para ~1/6 e ~1/3 recompilações. Isso foi conseguido com a filial de março. Desde então houve pelo menos dois commits que introduziram novas divergências de partições, embora pareçam corrigíveis no futuro.

Dado o momento, parece improvável que esse suporte incremental ao LTO seja incorporado no próximo lançamento do GCC 14. De qualquer forma, esse suporte incremental ao LTO deve ser interessante para aqueles que compilam frequentemente seu código enquanto desejam empregar o LTO e manter o tempo de construção no mínimo. Seus slides do GNU Tools Cauldron 2023 ainda não foram carregados para os interessados ​​nesse material de base.

Este é certamente um ótimo recurso e semelhante ao trabalho em andamento no campo LLVM com ThinLTO por ter otimizações de tempo de link que são escalonáveis ​​e incrementais. Esperançosamente, o suporte LTO incremental do GCC será trabalhado em uma forma boa o suficiente para upstreaming em um futuro próximo.






Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário