- Les langages de programmation modernes de haut niveau et les compilateurs avancés simplifient fortement le développement logiciel et en réduisent le coût, mais les inefficacités des API tendent à masquer les capacités de performance du matériel moderne
- Selon les développeurs de FFmpeg, l’utilisation de code assembleur peut améliorer les performances de 3 à 94 fois selon la charge de travail
- Pour accélérer certaines fonctions de FFmpeg, ils ont créé un chemin de code optimisé à l’aide du jeu d’instructions AVX-512, ce qui leur a permis d’obtenir des performances bien supérieures à l’implémentation standard
- AVX-512 utilise des registres 512 bits, capables de traiter en une seule opération 16 FLOP en simple précision ou 8 FLOP en double précision, ce qui permet de paralléliser le traitement de grands volumes de données
- D’après les résultats des benchmarks, ce nouveau chemin de code AVX-512 écrit à la main est nettement plus rapide que le code C de référence ainsi que que d’autres implémentations reposant sur des jeux d’instructions SIMD inférieurs comme AVX2 et SSE3
- Cette évolution est particulièrement utile pour les utilisateurs disposant d’un matériel compatible AVX-512, qui peuvent ainsi traiter les contenus multimédias bien plus efficacement
- Cependant, Intel a désactivé AVX-512 sur les processeurs Core de 12e, 13e et 14e génération, empêchant leurs propriétaires d’en profiter
- À l’inverse, les CPU AMD Ryzen série 9000 disposent d’une FPU AVX-512 entièrement activée, ce qui permet à leurs propriétaires de tirer parti des avancées de FFmpeg
- Malheureusement, en raison de la complexité et de la nature très spécifique d’AVX-512, ces optimisations restent généralement réservées aux applications où les performances sont critiques et exigent une expertise en programmation bas niveau ainsi qu’en microarchitecture processeur
( Ce contenu est repris de l’article de Tom's Hardware FFmpeg devs boast of up to 94x performance boost after implementing handwritten AVX-512 assembly code )
6 commentaires
Pour avoir déjà brièvement travaillé sur ce type de sujet par le passé, je peux dire que le chiffre de 94 est d’abord accrocheur.
Comme cela a été mentionné dans les commentaires, l’écart de performances vient surtout de la différence entre du code scalaire et du code vectoriel.
Cependant, la plupart des codecs commerciaux sont optimisés avec du code assembleur.
Dire que « la plupart du code C est compilé en code assembleur optimal » est globalement vrai, mais pour développer un produit commercial, il faut dépasser ce « la plupart ». C’est particulièrement important dans l’embarqué.
Commentaires sur Hacker News
Nouvelle vulnérabilité Intel Downfall affectant AVX2/AVX-512, et son énorme impact sur les performances
https://tuxcare.com/ko/blog/…
Ah, c’est donc pour ça qu’Intel a abandonné l’AVX-512.
D’après ce que je sais, la raison n’est pas tant celle-là que le fait que les cœurs E ne prennent pas en charge l’AVX-512, donc cela a été bloqué au niveau logiciel.
Les cœurs P prenaient en charge l’AVX-512 de manière non officielle.
Je vois. Merci de me l’avoir signalé :)