Vi ricordate di quando Linus Torvalds tuonava contro Intel augurandosi che il set di istruzioni AVX-512 potesse sparire con “atroci sofferenze”? La società di Santa Clara rispose che AVX-512 sono una risorsa preziosa e che presto il mondo si sarebbe accorto della loro utilità. In effetti, con l’esplosione delle soluzioni basate sull’intelligenza artificiale, le istruzioni AVX-512 sono diventate protagoniste indiscusse. E oggi FFmpeg certifica che i miglioramenti non sono limitati a settori specifici: tutti possono beneficiarne. Il potente strumento open source utilizzato per la manipolazione e l’elaborazione di file multimediali, ad esempio, migliora le prestazioni di almeno 94 volte proprio grazie ad AVX-512 e codice Assembly.
FFmpeg migliora le prestazioni grazie ad AVX-512 e al codice Assembly
Quando si sviluppa con qualsiasi linguaggio di programmazione di alto livello, il vero potenziale dell’hardware moderno può rimanere inespresso. L’assenza di specifiche ottimizzazioni, può restituire all’utente prestazioni ampiamente ridotte rispetto al reale potenziale della configurazione hardware in uso.
Lo dimostra uno sviluppatore di FFmpeg che ricorrendo al “buon vecchio” codice Assembly ha ottenuto miglioramenti delle performance fino a 94 volte con specifici carichi di lavoro. Merito anche dell’utilizzo delle già citate istruzioni AVX-512, cosa ancora piuttosto rara nel settore multimediale.
Cos’è AVX-512 e come migliora le prestazioni
AVX-512 (Advanced Vector Extensions 512) è un set di istruzioni che consente di elaborare grandi quantità di dati in parallelo tramite registri a 512 bit. Ciò permette di eseguire fino a 16 operazioni in virgola mobile a precisione singola (32 bit) o 8 operazioni a precisione doppia (64 bit) in una singola operazione, uno schema ideale per compiti computazionalmente intensivi. Nell’elaborazione di video e immagini, queste migliorie fanno la differenza in termini di velocità ed efficienza.
Gli ingegneri di Intel hanno concepito AVX-512 per il calcolo vettoriale, introducendo la novità insieme con la microarchitettura Xeon Phi nel 2013. AVX-512 è un’evoluzione delle precedenti estensioni AVX e AVX2.
Non tutti i processori supportano AVX-512. Ad esempio, Intel ha disabilitato il supporto per AVX-512 in alcune delle sue CPU più recenti. In particolare, le estensioni vettoriali AVX-512 non sono presenti nei chip Intel Core di 12esima, 13esima e 14esima generazione. Al contrario, i processori AMD Ryzen 9000 includono il supporto completo per AVX-512, permettendo ai loro utenti di sfruttare appieno le prestazioni aggiuntive garantite da questa tecnologia.
Confronto con le precedenti implementazioni di FFmpeg
I risultati restituiti dai benchmark evidenziano chiaramente l’efficacia della nuova routine AVX-512 di FFmpeg rispetto ad altri approcci, tra cui il codice C di base e l’utilizzo di istruzioni SIMD con le estensioni AVX2 e SSE3. Come evidenziato in precedenza, l’implementazione AVX-512 di FFmpeg ha evidenziato un’accelerazione di quasi 94 volte rispetto al codice standard, sottolineando l’efficacia del codice Assembly ottimizzato.
Secondo lo sviluppatore che ha messo a punto il nuovo codice, il balzo in avanti sarebbe ancora più incisivo utilizzando chip di ultima generazione. Tradotto, l’impatto delle ottimizzazioni basate su AVX-512 può davvero risultare straordinario in molteplici contesti.
Credit immagine in apertura: iStock.com – MF3d