Articles

GCC 10 vs. Clang 10 Prestazioni del compilatore su AMD Zen 2 + Intel Cascade Lake

Abbiamo consegnato molti benchmark di Clang 10.0 su varie CPU a seguito della versione aggiornata dello stack del compilatore LLVM all’inizio di quest’anno. Con GCC 10 rilasciato all’inizio di questo mese, abbiamo iniziato il nostro benchmarking di questa versione annuale di funzionalità per la raccolta di compilatori GNU. Il primo è uno sguardo alle prestazioni del compilatore GCC 9 vs. GCC 10 vs. LLVM Clang 10 sui sistemi AMD Zen 2 e Intel Cascade Lake.

Questo round iniziale di benchmarking per GCC 10 vs. Clang 10 sta esaminando le build di rilascio di ciascuno più GCC 9.3 durante il test su workstation AMD Ryzen Threadripper 3990X e Intel Core i9 10980XE. Il Threadripper 3990X sta esaurendo il System76 Thelio Major. Entrambi i sistemi eseguivano Ubuntu 20.04 LTS con il kernel Linux 5.4 e tutti i compilatori erano costruiti nella stessa modalità di rilascio. Ci sono differenze RAM/SSD tra i sistemi con l’intenzione di non confrontare le prestazioni AMD vs Intel, ma piuttosto guardando come questi compilatori LLVM Clang e GCC stanno eseguendo su più famiglie di CPU. Ulteriori benchmark della CPU saranno disponibili con questi compilatori.

Durante tutto il benchmarking, i CFLAGS/CXXFLAGS sono stati impostati su “-O3-march=native” sia per i sistemi AMD Zen 2 che Intel Cascade Lake. Tramite la suite di test Phoronix è stata eseguita una vasta gamma di benchmark C/C++ durante la ricostruzione dei benchmark open source sotto ciascuno dei diversi compilatori in fase di test.

Con il compressore Blosc, le prestazioni di Clang 10.0 erano fondamentalmente legate a GCC 10 mentre le prestazioni di Core i9 10980XE vedevano GCC offrire prestazioni migliori di questa ultima versione di Clang.

Con i benchmark Crypto++ non c’era molta differenza tra GCC 9.3 e GCC 10.1 mentre le prestazioni di Clang 10.0 continuavano a seguire GCC sul sistema Cascade Lake HEDT. Sul Threadripper Thelio Major system, le prestazioni del Clang tendevano a funzionare bene contro GCC, ad eccezione del test degli algoritmi a chiave pubblica a curva intera ed ellittica in cui GCC risultava misurabilmente più forte.

LCZero con il suo back-end Eigen ha visto alcuni guadagni minori di GCC 10 e prestazioni ancora migliori con Clang 10 mentre il sistema i9-10980XE ha visto prestazioni leggermente più veloci su GCC 9.3.

Le prestazioni binarie LAMMPS di Clang erano in linea con GCC su entrambi i sistemi.