Până acum, o singură funcție se bucură de astfel de îmbunătățiri de viteză extremă
Ce s -a întâmplat? Dezvoltatorii FFMPEG continuă să creeze codul de asamblare „scris de mână” pentru a face proiectul multimedia mai rapid ca niciodată. Datorită instrucțiunilor mai noi bazate pe vector, incluse în procesoarele moderne X86, FFMPEG poate oferi cu adevărat o viteză masivă în transcodarea mass-media care transcolează sarcinile de lucru-dacă aveți norocul.
Echipa FFMPEG a anunțat recent o creștere masivă a vitezei datorită unor cod nou -patch. Proiectul open-source este acum de peste 100 de ori mai rapid-probabil cea mai mare creștere a performanței pe care a avut-o vreodată. Cu toate acestea, dezvoltatorii avertizează că o singură funcție primește acest impuls complet, deși unele îmbunătățiri uriașe ale vitezei vin și în alte părți ale proiectului.
După cum se spune clar în plasturele trimisă recent, funcția „RangeDetect8_AVX512” este acum de 100 de ori mai rapidă. Codificatorii își creditează codul de asamblare scris de mână pentru creșterea vitezei, împreună cu utilizarea pe scară largă a extensiilor AVX-512 la X86 ISA disponibil în procesoarele moderne de calculatoare.
Echipa FFMPEG este în mod clar un mare susținător al programării asamblării. Există chiar și o școală online axată pe modul în care se folosește adunarea în proiect, în care persoanele interesate să se alăture provocării sunt împinși să „deschidă ochii” către ceea ce se întâmplă de fapt într -un computer atunci când rulează un cod binar în RAM.

Asamblarea este un limbaj de programare la nivel scăzut în care instrucțiunile care pot fi citite de oameni au o corespondență directă la instrucțiunile codului mașinii CPU Architecture. Spre deosebire de limbile la nivel înalt, cum ar fi C, codul de asamblare nu trebuie să fie „compilat” pentru a funcționa. Programele de asamblare sunt pur și simplu „asamblate” în cod binar direct conceput pentru a rula pe un anumit procesor ISA și sunt cu siguranță cea mai bună (și cea mai dificilă) modalitate de a extrage fiecare bit de performanță de număr de număr de la un procesor.
După cum a confirmat programatorii FFMPEG, „Înregistrați alocatorul e de rahat pe compilatoare”. Setul de instrucțiuni AVX-512 este un plus bazat pe vector la tradiționalul X86 ISA, un tip de „instrucțiune unică, date multiple” standard de calcul implementat de Intel și AMD în procesoare moderne (ISH).
Instrucțiunile bazate pe vector, cum ar fi AVX-512, sau cele mai recente AVX10 ISA introduse de Intel, pot oferi într-adevăr un impuls masiv de performanță în sarcinile de lucru cu procesare paralelă. FFMPEG, o suită cuprinzătoare de biblioteci și instrumente pentru procesarea fluxurilor multimedia, este bine potrivit pentru a exploata acest tip de accelerație de calcul. Proiectul a cunoscut primul său impuls masiv de viteză AVX-512 în 2024, când rutinele de decodare video au devenit de trei până la 94 de ori mai rapide.
Chiar și pe procesoarele mai vechi care nu oferă suport hardware AVX-512 direct, cel mai recent patch FFMPEG poate aduce în continuare o viteză de deschidere a ochilor. Funcția „RangeDetect8_AVX2” este acum de 64 de ori mai rapidă, extensiile AVX2 fiind introduse împreună cu microarhitectura Haswell încă din 2013.
