- As linguagens de programação modernas de alto nível e os compiladores avançados de hoje simplificam bastante o desenvolvimento de software e reduzem custos, mas a ineficiência das APIs tende a ocultar os recursos de desempenho do hardware moderno
- Segundo os desenvolvedores do FFmpeg, o uso de código em assembly pode melhorar o desempenho de 3x a 94x, dependendo da carga de trabalho
- Para acelerar funções específicas dentro do FFmpeg, foram criados caminhos de código otimizados com o conjunto de instruções AVX-512, o que permitiu atingir desempenho muito superior ao da implementação padrão
- O AVX-512 usa registradores de 512 bits e pode processar 16 FLOPs de precisão simples ou 8 FLOPs de dupla precisão em uma única operação, permitindo processamento paralelo de grandes volumes de dados
- De acordo com os resultados de benchmark, o novo caminho de código AVX-512 escrito manualmente é significativamente mais rápido do que o código C de referência e outras implementações com conjuntos SIMD inferiores, como AVX2 e SSE3
- Esse desenvolvimento é especialmente útil para usuários que executam em hardware com suporte a AVX-512, permitindo processar conteúdo de mídia com muito mais eficiência
- No entanto, a Intel desativou o AVX-512 nos processadores Core de 12ª, 13ª e 14ª gerações, impedindo que os donos dessas CPUs usem esse recurso
- Em contrapartida, os CPUs da série Ryzen 9000 da AMD contam com FPU AVX-512 totalmente ativada, então os proprietários desses processadores podem aproveitar os ganhos do FFmpeg
- Infelizmente, devido à complexidade e à natureza especializada do AVX-512, essas otimizações geralmente ficam restritas a aplicações em que o desempenho é crítico e exigem conhecimento especializado em programação de baixo nível e microarquitetura de processadores
( Este conteúdo foi extraído de FFmpeg devs boast of up to 94x performance boost after implementing handwritten AVX-512 assembly code, da Tom's Hardware )
6 comentários
Como alguém que já fez esse tipo de trabalho por um tempo, posso dizer que, antes de tudo, esse 94 é clickbait.
Como comentaram nas respostas, a grande diferença de desempenho apareceu por causa da diferença entre código escalar e vetorial.
Mas a maioria dos codecs comerciais faz otimização com código em assembly.
Dizer que "a maior parte do código em C é compilada para código assembly otimizado" está correto, mas, para desenvolver produtos comerciais, é preciso ir além desse nível da maioria. Isso é ainda mais importante especialmente no lado de sistemas embarcados.
Comentários no Hacker News
Nova vulnerabilidade Downfall AVX2/AVX-512 da Intel e seu enorme impacto no desempenho
https://tuxcare.com/ko/blog/…
Ah, então foi por isso que a Intel descontinuou o AVX-512.
Pelo que sei, não foi exatamente por esse motivo; como os E-cores não suportam AVX-512, acredito que isso tenha sido bloqueado por software.
Os P-cores tinham suporte não oficial a AVX-512.
Entendi. Obrigado por avisar :)