FERRAMENTAS LINUX: O ajuste do AVX/AVX-512 não compensa para as planilhas do Calc do LibreOffice

sexta-feira, 11 de fevereiro de 2022

O ajuste do AVX/AVX-512 não compensa para as planilhas do Calc do LibreOffice


 Confira !!

Embora o Advanced Vector Extensions (AVX) possa fornecer grandes aumentos de desempenho quando o software é ajustado adequadamente para ele e, na maioria das vezes, estamos escrevendo sobre projetos que adicionam suporte a ele, no caso do LibreOffice, eles agora estão avançando e removendo seus AVX e AVX- 512 sintonia.

No ano passado, o suporte AVX e AVX-512 foi adicionado ao LibreOffice, como para calcular a soma de uma coluna de números dentro do programa de planilha Calc. Embora os números iniciais fossem promissores para oferecer melhor desempenho no caminho SSE2, descobriu-se que a manutenção envolvida não valia a pena e que o ajuste do AVX/AVX-512 agora está sendo removido do LibreOffice.

Ontem o Calc viu a remoção de seu código do AVX e AVX-512. Luboš Luňák comentou: "Tem sido uma fonte de inúmeros problemas desde o início. A má separação do código C++ está fazendo com que o compilador emita algum código genérico como específico da CPU, as otimizações do compilador movendo o código específico da CPU de #ifdef para a inicialização estática desprotegida, etc. a referência está usando um Ryzen 5 2500U lento." no meu Ryzen 2500U para uma coluna completa ( células de 1m ) sumArray() leva cerca de 1,6 ms (milissegundos) com o AVX, 1,9 ms com SSE2 e 4,6 ms com o código genérico. Portanto, o código SSE2 talvez valha a pena, especialmente considerando que SSE2 é nosso requisito básico em x86_64 em todos os lugares e x86 no Windows, mas o AVX + não vale a pena. "

Ele não descarta o código específico da CPU para o LibreOffice, mas que deve estar funcionando, mantido e valendo o esforço extra envolvido. Um novo comentário de código na alteração mesclada continua a observar: " IMPORTANTE: Ter rotinas específicas da CPU acabou sendo um problema de manutenção, devido a vários problemas, como compiladores movendo o código específico da CPU do código #ifdef para inicialização estática ou nosso código usando recursos C++ que faziam o compilador emitir código que usava instruções específicas da CPU (mesmo cpuid.hxx não é seguro, veja o comentário lá). O único uso seguro é usar código específico da CPU que está sempre disponível, como Código específico de SSE2 para x86_64. Não use para mais nada, a menos que você realmente saiba o que está fazendo (e verifique o histórico do git para aprender com problemas anteriores). "



Este suporte do  AVX/AVX-512 foi discretamente adicionado para o LibreOffice 7.3 e no momento da escrita os patches foram anunciados como "grandes melhorias de velocidade para as funções estatísticas", mas infelizmente não saiu exatamente como planejado.







Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário