collapse

* Posts Recentes

Meu novo robô por josecarlos
[Hoje às 18:54]


No meio desta crise de MCUs e dev-boards quais as dev-boards que estão a usar? por jm_araujo
[Ontem às 23:54]


Dimmer PWM para controlo de resistencia eletrica 2500W por blabla
[26 de Janeiro de 2022, 21:28]


STM32 BluePill in Rust - Project template por blabla
[25 de Janeiro de 2022, 09:45]


Pequenos guias com informação sobre programação e eletrónica. por blabla
[23 de Janeiro de 2022, 21:28]


GPS Disciplined Oscillator por SerraCabo
[23 de Janeiro de 2022, 00:44]


Fita de LEDs RGB por blabla
[18 de Janeiro de 2022, 13:47]


KGM Edgelit Displays por SerraCabo
[18 de Janeiro de 2022, 10:25]


Saiu Kicad 6.0.1 por SerraCabo
[17 de Janeiro de 2022, 16:47]


Keyboard - A promessa de se atingir 500+WPM - Words Per Minute por blabla
[16 de Janeiro de 2022, 14:00]

Autor Tópico: BOLT – Aumento de performance C/C++ e Rust, GCC e LLVM com o hardware existente  (Lida 97 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline blabla

  • Mini Robot
  • *
  • Mensagens: 101
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

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

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