Accueil / News / FFMPEG obtient 100x plus rapidement avec AVX-512 et le code d’assemblage manuscrit

FFMPEG obtient 100x plus rapidement avec AVX-512 et le code d’assemblage manuscrit

FFmpeg gets 100x faster with AVX-512 and handwritten assembly code

Jusqu’à présent, une seule fonction bénéficie de ces améliorations de vitesse extrêmes

Que vient-il de se passer? Les développeurs FFMPEG continuent de craquer le code d’assemblage « manuscrit » pour rendre le projet multimédia plus rapidement que jamais. Grâce aux nouvelles instructions basées sur les vecteurs incluses dans les processeurs x86 modernes, FFMPEG peut vraiment fournir une accélération massive dans les charges de travail transcodantes des médias – si vous avez la chance.

L’équipe FFMPEG a récemment annoncé une augmentation massive de vitesse grâce à un code nouvellement corrigé. Le projet open source est désormais plus de 100 fois plus rapide – probablement la plus grande augmentation des performances qu’elle a jamais connu. Cependant, les développeurs avertissent qu’une seule fonction reçoit ce boost complet, bien que des améliorations d’énormes vitesse arrivent également dans d’autres parties du projet.

Comme indiqué clairement dans le correctif récemment soumis, la fonction « rangedetect8_avx512 » est maintenant 100 fois plus rapide. Les codeurs créditent leur code d’assemblage manuscrit pour l’augmentation de la vitesse, ainsi que l’utilisation approfondie des extensions AVX-512 vers l’ISA x86 disponible dans des processeurs informatiques modernes.

L’équipe FFMPEG est clairement un grand partisan de la programmation d’assemblage. Il y a même une école en ligne axée sur la façon dont l’assemblage est utilisé dans le projet, où les personnes intéressées à relever le défi sont poussées à « ouvrir leurs yeux » à ce qui se passe réellement dans un ordinateur lorsqu’il exécute du code binaire en RAM.

L’assemblage est un langage de programmation de bas niveau où les instructions lisibles par l’homme ont une correspondance directe avec les instructions de code machine de l’architecture du CPU. Contrairement aux langages de haut niveau tels que C, le code d’assemblage n’a pas besoin d’être « compilé » pour fonctionner. Les programmes d’assemblage sont simplement « assemblés » dans du code binaire direct conçu pour s’exécuter sur un processeur spécifique ISA, et sont certainement le meilleur (et le plus difficile) moyen d’extraire chaque bit de performances de numes d’un CPU.

Comme l’a confirmé les programmeurs FFMPEG, « Register Allocator est nul sur les compilateurs ». L’ensemble d’instructions AVX-512 est un ajout basé sur un vecteur à l’ISA traditionnel x86, un type de norme informatique « instructions unique, de données multiples » implémentée par Intel et AMD dans des processeurs modernes (ISH).

Les instructions basées sur des vecteurs telles que AVX-512, ou l’ISA AVX10 plus récente introduite par Intel, peuvent en effet fournir une augmentation massive des performances des charges de travail de traitement parallèle. FFMPEG, une suite complète de bibliothèques et d’outils pour le traitement des flux multimédias, est bien adapté pour exploiter ce type d’accélération informatique. Le projet a connu son premier augmentation massive de la vitesse AVX-512 en 2024, lorsque les routines de décodage vidéo sont devenues de trois à 94 fois plus rapidement.

Même sur des processeurs plus anciens qui ne fournissent pas de support matériel AVX-512 direct, le dernier patch FFMPEG peut toujours apporter des augmentations de vitesse révélatrice. La fonction « rangedetect8_avx2 » est maintenant 64 fois plus rapide, avec des extensions AVX2 introduites avec la microarchitecture Haswell en 2013.

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>