Giovedì, quando ha lanciato i processori AMD EPYC Genova di quarta generazione, AMD ha anche pubblicato AOCC 4.0 come la versione più recente del compilatore AMD Optimizing C/C++. L’ho messo alla prova l’ultimo giorno e continuo a mostrare l’impatto positivo sulle prestazioni di una corretta messa a punto del compilatore.

La versione 4.0 del compilatore C/C++ per l’ottimizzazione di AMD introduce in particolare supporto e ottimizzazioni iniziali di Zen 4″znver4″. Il registro delle modifiche pubblico lo chiama semplicemente”Supporto e ottimizzazioni dei processori AMD Family 19h (architettura core AMD”Zen4″)”. Non è chiaro da ciò l’entità delle ottimizzazioni di Zen 4 in questa fase, in particolare con AOCC che è un closed-source a valle di LLVM/Clang.

Oltre ad AOCC 4.0 che ha Supporto e ottimizzazioni Zen 4, ci sono miglioramenti del supporto OpenMP 4.5 per Fortran, miglioramenti di debug/diagnostica, ottimizzazione per AMD Math Library 4.0, supporto per varianti lib vettoriali e più veloci di AMD Math Library e varianti migliorate di vari scalari/vettoriali/trasformazioni ad anello. Maggiori dettagli su AOCC 4.0 tramite developer.amd.com.

Nessuno Zen in sospeso 4 (znver4) patch ancora per LLVM upstream.

AOCC 4.0 è derivato dai sorgenti LLVM/Clang 14.0.6 upstream. LLVM 15 è stato rilasciato all’inizio di settembre mentre AOCC non è stato ancora ribasato sull’ultima versione di funzionalità semestrale. Per alcuni benchmark preliminari ho quindi eseguito alcuni benchmark di confronto su Zen 4 tra AOCC 4.0 e LLVM Clang 14.0 come pacchetto su Ubuntu Linux.

A causa del server Titanite che è il mio solitario EPYC 9004 piattaforma di test in serie per ora e che essendo impegnato a eseguire altri benchmark, per provare AOCC 4.0 ho eseguito benchmark su AMD Ryzen 9 7950X. AOCC 4.0 supporta tutti i prodotti Ryzen/Threadripper/EPYC e mantiene ancora il supporto per le precedenti generazioni di processori Zen.

Durante i test, tutti i CFLAGS/CXXFLAGS sono stati mantenuti invariati ma solo ricostruiti tutto il software in prova con AMD AOCC 4.0 o LLVM Clang 14.0 a monte.

Poiché LLVM/Clang Git e GCC Git a monte raccolgono più ottimizzazioni per Zen 4, ovviamente eseguirò un confronto più ampio del compilatore su Zen 4, oltre all’esecuzione anche sui processori della serie EPYC 9004 più rilevanti.

Come con le precedenti versioni AOCC per Zen 1/2/3, AOCC 4.0 con Zen 4 aiuta a spremere ulteriori prestazioni superiori a quelle che si trovano attualmente nei compilatori open-source a monte:

LLVM Clang 14 stava costruendo il software con AVX-512 e altre nuove estensioni abilitate, quindi per questo benchmark AOCC vs. Clang sta esaminando il impatto dell’ottimizzazione/ottimizzazione di AMD e nessuna differenza ISA.

AOCC 4.0 sembra una bella sta rt per aver aiutato a massimizzare le prestazioni del processore Zen 4 dal lato del compilatore.

AOCC 4.0 mostrava alcuni bei miglioramenti oltre alle già ottime prestazioni di AMD Ryzen 9 7950X Linux:

Sono possibili guadagni di prestazioni da piccoli a generosi nell’utilizzo di AOCC 4.0 sul compilatore LLVM Clang 14 a monte per cui è basato. Si spera che GCC veda presto la tabella dei costi ottimizzati per Zen 4 per la sua abilitazione Znver4 iniziale e quindi sia ancora in attesa dell’abilitazione LLVM/Clang znver4 a monte e di qualsiasi ottimizzazione lì.

Lunga storia insomma, AOCC 4.0 sembra ottimo almeno sui miei test iniziali effettuati sull’AMD Ryzen 9 7950X. Oltre al percorso AOCC come compilatore ottimizzato incentrato su AMD, continuo a sperare-e premere-affinché AMD garantisca ai compilatori open source GCC e LLVM/Clang a monte un supporto tempestivo e onorevole. AMD sta assolutamente spuntando tutte le caselle giuste con la sua esecuzione hardware in questo momento, mentre sul lato Linux/software open source mostra ancora margini di miglioramento, soprattutto se vogliono eguagliare le tradizioni e il livello di supporto di cui godono da tempo i clienti Intel Linux per la qualità del supporto open source a monte al lancio. AMD da parte loro sta migliorando dal lato software e le loro continue assunzioni (a seguito dell’ondata iniziale di successi EPYC nel data center che ha consentito un aumento degli investimenti) stanno sicuramente lavorando per indirizzare la nave in quella direzione.

Inoltre, personalmente continuo ad essere un po’perplesso sul motivo per cui AMD attende il successivo lancio di EPYC prima di pubblicare AOCC 4.0 piuttosto che colpire inizialmente quando la serie Ryzen 7000 ha debuttato per la prima volta. Un’esecuzione precedente avrebbe potuto portare a un’esperienza migliore per qualsiasi desktop/workstation per sviluppatori e per coloro che potrebbero utilizzare la serie Ryzen 7000 come valutazione/trampolino di lancio per iniziare a preparare le proprie basi di codice software per Zen 4 con eventuali server EPYC. È stato così anche con Zen 3 in attesa di Milano prima di pubblicare AOCC 3.0 con un intervallo di diversi mesi che i desktop degli sviluppatori Ryzen, quelli che eseguono distribuzioni Linux basate su sorgenti, gli sviluppatori di compilatori open source hanno più tempo per profilare le differenze nel codice generato, e altri avrebbero potuto aiutare a”scalciare le gomme”sul nuovo AOCC prima della disponibilità di EPYC. Diamine, perché non spedirlo prima come”beta”AOCC per i test Ryzen? Immagino che anche questo dipenda dalle risorse ingegneristiche e dalla necessità di tutto il tempo che possono ottenere per elaborare le ottimizzazioni del compilatore.

Rimani sintonizzato per ulteriori benchmark AOCC 4.0 da EPYC Genova e un confronto più ampio del compilatore incluso Clang-15/GCC-13/etc su Zen 4 poiché il supporto per tutti questi compilatori vede miglioramenti. Dati i benchmark AMD EPYC 9654 e 9554 Genova di ieri, sarà abbastanza divertente vedere quanto sia complessivamente più veloce quel grande set di benchmark quando si sfrutta AOCC 4.0 su GCC 12 come utilizzato per il compilatore di sistema su tutti quei processori testati.

Categories: IT Info