collapse

* Posts Recentes

LASER M140 por dropes
[Ontem às 22:25]


Craftsmanship em pianos e em tudo o resto... por blabla
[15 de Maio de 2022, 17:20]


Um artigo interessante - Building a startup with Rust por blabla
[13 de Maio de 2022, 10:55]


Um ritual de passagem - Fazer um interpretador de LISP por blabla
[13 de Maio de 2022, 09:51]


Cabo espiral por josecarlos
[08 de Maio de 2022, 19:23]


Can Life Really Be Explained By Physics? por blabla
[07 de Maio de 2022, 13:41]


100 Computer Science Concepts Explained por blabla
[04 de Maio de 2022, 21:34]


Um pouco de low level em Windows e Linux :-) por blabla
[03 de Maio de 2022, 19:52]


How Electricity Actually Works - Veritasium por blabla
[29 de Abril de 2022, 23:49]


Generating true random numbers from bananas por blabla
[29 de Abril de 2022, 10:27]

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

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

Offline blabla

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