LusoRobótica - Robótica em Português

Software => Software e Programação => Tópico iniciado por: blabla em 14 de Janeiro de 2022, 09:17

Título: BOLT – Aumento de performance C/C++ e Rust, GCC e LLVM com o hardware existente
Enviado por: blabla em 14 de Janeiro de 2022, 09:17
Bom dia a todos,

O FaceBook (Meta) tem estado a desenvolver internamente já à uns anos uma ferramenta chamada BOLT que faz a otimização do Layout do ficheiro de executável de Linux, o ELF.
Esta ferramenta é particularmente efetiva pois permite um grande aumento de performance a todos os programas compilados em GCC e em LLVM, escritos em N linguagens de programação, coisas como C/C++, Rust, mas também muitas outras que usam o compilador do GCC e LLVM como backend. Mesmo que o suporte para a vossa linguagem não esteja lá neste momento, em breve deve aparecer esse suporte para mais esta ferramenta.

BOLT Merged Into LLVM To Optimize Binaries For Faster Performance
https://www.phoronix.com/scan.php?page=news_item&px=LLVM-Lands-BOLT (https://www.phoronix.com/scan.php?page=news_item&px=LLVM-Lands-BOLT)

Até coisas como o próprio compilador GCC e o próprio compilador LLVM ficam mais rápidos a executar se forem compilados usando o BOLT e a o ganho de performance é mesmo muito grande.
Estamos a falar de coisas como 36 % para o LLVM e 21 % para o GCC. O aumento de performance  máximo atinge-se quando ligamos as três opções de optimização:

1. BOLT
2. LTO – Link Time Optimization
3. PGO – Profile Guided Optimization

Podendo atingir na execução do compilador Clang um aumento de performance na casa dos 49.42 % segundo os gráficos da página em cima. A que corresponde uma diminuição brutal dos tempos de compilação.

No caso dos exemplos dados na página anterior os binários que possam ser compilados com Clang LLVM. quando as 3 estratégias de otimização são combinadas, pode vir a ter um aumento entre os 34 % e os 68.5 %, ora isso é um aumento de performance mesmo muito grande! E isto sem alterar uma unica linha de código. E isto é para além das optimizações normais dos compiladores o -O3 e afins.

E até o Kernel de Linux tem muito a ganhar pelo facto de ser compilado com este otimizador de de Layout de ELF, pois a sua performance aumenta com repercussões em todo o sistema, por estarmos a falar do Kernel.

Facebook Has Been Working On BOLT'ing The Linux Kernel For Greater Performance
https://www.phoronix.com/scan.php?page=news_item&px=Facebook-BOLTing-The-Kernel (https://www.phoronix.com/scan.php?page=news_item&px=Facebook-BOLTing-The-Kernel)

Neste momento a code tree do BOLT foi “merged” para dentro do projecto do LLVM pelo que a sua integração ainda deve ser melhor.

Estes são desenvolvimentos muito interessantes que nos vão trazer grandes aumentos de performance a custo zero.

Pensem nas toneladas de dióxido de carbono que vão ser geradas a menos por todos os computadores de todo o mundo, pela diminuição da necessidade de recursos físicos para um determinado projeto e pela diminuição de consumo de energia em todos os computadores.


Obrigado,

Cumprimentos,
João