Procesarea paralelă pe computerele moderne x86 poate face cu adevărat minuni
În context: Extensiile vectoriale avansate sunt un tip de extensie „unică instrucțiune, date multiple” la arhitectura setului de instrucțiuni x86, implementată de Intel și AMD în procesoarele moderne. Aceste instrucțiuni pot îmbunătăți semnificativ sarcinile de procesare paralelă, în special atunci când sunt utilizate cu registre de 512 biți și alte caracteristici avansate disponibile în setul de instrucțiuni AVX-512.
Echipa FFmpeg a evidențiat recent modul în care instrucțiunile AVX-512 pot oferi o creștere semnificativă a performanței în sarcinile de lucru de procesare video. Potrivit unui diapozitiv prezentat de unul dintre dezvoltatori, „asamblarea scrisă de mână” optimizată folosind aceste instrucțiuni SIMD poate accelera rutinele de decodare video de trei până la 94 de ori.
Deși nu au fost furnizate detalii despre procesorul sau sistemul utilizat pentru evaluarea comparativă, tehnologia AVX-512 a apărut pentru prima dată în seria de procesoare Intel Xeon Phi x200 (Knights Landing) în 2016. Câștigurile substanțiale de performanță provin din combinarea instrucțiunilor vectoriale AVX-512 și cod de asamblare optimizat, deși instrucțiunile AVX au fost concepute inițial pentru a îmbunătăți procesarea paralelă SIMD de la început.
FFmpeg este un pachet software gratuit, open-source, care oferă o suită cuprinzătoare de biblioteci și instrumente pentru gestionarea fluxurilor audio și video – un adevărat cuțit elvețian de multimedia, folosit de playere media populare precum VLC și corporații importante, inclusiv YouTube. Echipa de bază FFmpeg supraveghează proiectul, în timp ce o comunitate de voluntari contribuie cu cod și patch-uri.
O îmbunătățire a vitezei de 94 ori demonstrată utilizând un ansamblu scris de mână pic.twitter.com/FI28GOONQA
– FFmpeg (@FFmpeg) 2 noiembrie 2024
FFmpeg se bazează în prezent pe limbajul de asamblare pentru aproximativ opt la sută din baza sa de cod, au spus dezvoltatorii, lăsând mult loc pentru îmbunătățiri de performanță. Asamblarea este un limbaj de nivel scăzut în care puțini programatori se specializează astăzi, mai ales că o mare parte din industria software-ului acordă prioritate limbilor de nivel înalt, accesibile, cum ar fi Python.
Cu toate acestea, dezvoltatorii calificați sunt întotdeauna dornici să maximizeze performanța pe cel mai recent hardware. FFmpeg include rutine personalizate de decodare „scrise de mână” atât pentru procesoarele x86, cât și pentru procesoarele ARM, chiar dacă unii din industria software-ului doresc ca AVX-512 să moară „o moarte dureroasă”.
Recent, Intel a introdus AVX10, un ISA reimaginat care standardizează instrucțiunile AVX-512 în toate arhitecturile CPU x86 și tipurile de bază. Cu toate acestea, Intel a făcut furori atunci când a dezactivat suportul AVX-512 la nivel de firmware pe procesoarele Core de a 12-a generație și modelele ulterioare, eliminând efectiv SIMD ISA de pe cipurile sale de consum.