collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Excelentes otimizações de performance LLVM 14 e em Rust.  (Lida 1231 vezes)

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

Offline blabla

  • Mini Robot
  • *
  • Mensagens: 257
Excelentes otimizações de performance LLVM 14 e em Rust.
« em: 05 de Janeiro de 2022, 14:23 »
Boa tarde a todos,

Já vi esta notícia há alguns dias mas acho que ainda não vos transmiti esta boa nova.

LLVM Clang 14 Lands An "Amazing" Performance Optimization
https://www.phoronix.com/scan.php?page=news_item&px=LLVM-Clang-14-Hoist-Load

Numa altura em que quando sai um novo processador de topo, e que são caros como tudo, se se tiver em quase todos os programas um aumento de performance de 5 % a 10 % já se tem mesmo muita sorte. Isto de uma geração para outra em que ocorra um novo design, em que o processo de fabrico encolheu para menos nanômetros e em que se teve de montar um novo computador desktop, pois nos portáteis a coisa (aumento de performance) ainda é muito mais lenta pois ainda existem mais limitações da corrente que se pode consumir para que ele não sobreaqueça.

Pois bem, aqui vai a boa notícia, na nova versão de LLVM 14 que vai sair no início do próximo Ano de 2022, existe um patch (uma correção ou modificação do código do LLVM) que vai aumentar a performance do código gerado com esta ferramenta para construir compiladores. Ele tem um ganho de performance que vai até aos 12 %, dependendo do que é usado para fazer os benchmarks de performance. Vejam a imagem no link em cima para terem uma ideia. Mas sendo conservador, acredito que se consiga um ganho real de 6 % a 7 % em média nas aplicações normais que façam e que usem LLVM 14, quer seja usando Clang quer seja usando Rust. O Rust ainda não deve estar na LLVM 14, mas num curto espaço de tempo passa de certeza a usar LLVM 14.

Por isso e sem que tenham de ter o custo de comprar um computador novo, nem mudar uma linha do vosso código, acabam de "ganhar um novo processador" a custo zero! Nice!!!!

E em Rust se querem "ganhar mais um step de outro novo CPU" experimentem a compilar a vossa versão final com a opção LTO – Link Time Optimization, que vão ver um grande salto na performance, mas este aumenta um pouco os tempos de compilação da versão --release , mas é performance à borlix sem alterar uma linha de código :-)

Fica aqui a boa nova e a dica!

Nota_1: Nunca se esqueçam que se querem de facto ter em muitos grandes aumentos de performance nos vossos programas, não existe nada que se compare a investir um pouco a ler bons livros sobre algoritmos e a conhecer boas formas de modelar o vosso problema com boas e rápidas estruturas de dados. Com este conhecimento vocês podem passar de coisas que não podem ser executadas nem desde o tempo em que o universo começou até agora, para meros segundos ou minutos de tempo de CPU. Muito mais do que uns meros 6 % a 7 % de CPU da boa nova. 
Para isso vejam aqui no seguinte link:

How to become dangerous in Algorithms
https://github.com/joaocarvalhoopen/How_to_become_dangerous_in_algorithms

Nota_2: Em segundo lugar se já tem um bom algoritmo para o vosso programa, se já fizeram o vosso trabalho de casa, então a passagem da implementação de uma linguagem como Python para uma linguagem como C/C++ ou Rust vai conseguir trazer-vos um bost de performance que pode muito bem atingir as 200x sem grande esforço e que pode atingir as 32.000x (como está documentado num post anterior) com já algum conhecimento mais profundo e para alguns casos em que se pode usar instruções AVX e todos os truques da cartilha, como pre-fetching de memória, não criar bolhas no pipeline do CPU superescalar,  de criar mais independência entre execuções de loops de forma a poderem ser paralelizados, programar de forma a ser mais cache friendly com poucos cache misses, lots and lots of profiling e afins.

Mas aqui e neste post só queria glorificar os grandes 6 % a 7 % gratuitos que se vão ganhar, que já são um grande feito!

Pensem nas toneladas e toneladas de carbono que não vão ser criadas em todo o mundo devido a esta pequena optimização que vai fazer o mesmo código mais rápido e como tal gastar menos energia eléctrica.


Obrigado,

Cumprimentos,
João
« Última modificação: 05 de Janeiro de 2022, 14:51 por blabla »