Il GCC 12 il compilatore farà la sua introduzione stabile nelle prossime settimane. Mentre durante l’ultimo”stadio 4″lo sviluppo del compilatore si è concentrato sulle correzioni di regressione, è stata apportata una modifica dell’ottimizzazione dell’ultimo minuto di AMD Zen 3 (znver3).
Jan Hubicka di SUSE, responsabile di gran parte del lavoro di ottimizzazione Zen di AMD per la GNU Compiler Collection, questa settimana ha apportato una piccola modifica a Znver3.
Il cambiamento di Znver3 questa settimana è disabilitando raccogliere istruzioni per vettori con 2 o 4 elementi. Apparentemente questo è il risultato della profilazione su Zen 3 nel valutare i vantaggi del comportamento. Tuttavia, nessuna cifra di riferimento è stata condivisa come parte del commit del codice. È improbabile che abbia un impatto significativo sulle prestazioni nel mondo reale. L’utilizzo delle istruzioni di raccolta ha prodotto risultati contrastanti in varie microarchitetture della CPU: l’anno scorso come patch di”ottimizzazione”, Hubicka ha originariamente abilitato l’uso delle istruzioni di raccolta per Zen 3 per aver aiutato alcuni benchmark, ma ora risulta che non è sempre così quindi la disabilitazione in alcuni casi.
Sebbene GCC 12 sia la versione annuale di funzionalità di questo importante compilatore open source, non c’è molto in termini di lavoro aggiuntivo su Zen 3 in questa versione. AMD tramite SUSE ha spremuto l’ottimizzazione di Znver3 in GCC 11 poche settimane prima del rilascio del compilatore dell’anno scorso. Quel lavoro di messa a punto è stato sospeso fino a dopo l’introduzione della serie EPYC 7003, mesi dopo l’introduzione della serie Ryzen 5000 originale. Da quel lavoro iniziale su Znver3, non c’è stato molto per GCC 12. In effetti, solo una nuova patch per GCC 12 oltre alla disabilitazione della raccolta di questa settimana.
Tutto lo Zen 3 di”znver3″si impegna nella base di codice GCC. Ancora nessun commit Znver4.
Come già accennato, non c’è alcun target/ottimizzazione AMD Zen 4 (znver4) per GCC 12. Anche se molto tempo fa AMD ha distribuito patch di ottimizzazione del compilatore prima dei rilasci della CPU, ciò non è non è stato il caso di recente e sembrano contenuti principalmente incentrati sul supporto del compilatore CPU AMD ottimizzato con il loro LLVM/Clang-downstream interno: l’AMD Optimizing C/C++ Compiler (AOCC). Le CPU Zen 4 inizieranno a essere spedite entro la fine dell’anno, mentre purtroppo ora sarà necessario attendere GCC 13 l’anno prossimo (o eseguire il backport su una versione successiva di GCC 12, che non viene ripresa troppo rapidamente da varie distribuzioni) per-il supporto per l’ottimizzazione Zen 4 incluso.
In confronto, Intel ha ottenuto il supporto iniziale di Alder Lake e Sapphire Rapids in GCC nel 2020 e ha continuato a lavorare sul codice. La tempestiva abilitazione del compilatore di Intel sia per GCC che per LLVM/Clang prima del lancio è una delle tante cose da amare del loro supporto software open-source/Linux. Questa è stata una loro tradizione in corso per molti anni.
Intel nel frattempo ha lavorato al supporto del compilatore GCC all’aperto per Sapphire Rapids e Alder Lake dalla metà del 2020 e di conseguenza GCC 11/12 hanno già gli obiettivi”sapphirrapids”e”alderlake”con l’ottimizzazione pronta per l’uso nei compilatori rilasciati prima del lancio e quei compilatori che si trovano per impostazione predefinita nelle moderne distribuzioni Linux.