Jeudi, lors du lancement des processeurs AMD EPYC Genoa de 4e génération, AMD a également publié AOCC 4.0 comme la dernière version du compilateur AMD Optimizing C/C++. Je l’ai mis à l’épreuve le jour dernier et continue de montrer l’impact positif sur les performances d’un bon réglage du compilateur.

La version AMD Optimizing C/C++ Compiler 4.0 introduit notamment prise en charge et optimisations initiales de Zen 4″znver4″. Le journal des modifications public l’appelle simplement”Prise en charge et optimisations des processeurs AMD Family 19h (architecture de base AMD”Zen4″)”. L’étendue des optimisations Zen 4 à ce stade n’est pas claire, en particulier avec AOCC étant une source fermée en aval de LLVM/Clang.

En plus d’AOCC 4.0 ayant Prise en charge et optimisations de Zen 4, il existe des améliorations de la prise en charge d’OpenMP 4.5 pour Fortran, des améliorations de débogage/diagnostic, un réglage pour la bibliothèque AMD Math Library 4.0, la prise en charge des variantes vectorielles et plus rapides de la bibliothèque AMD Math et des variantes améliorées de divers scalaires/vecteurs/transformations en boucle. Plus de détails sur AOCC 4.0 via developer.amd.com.

Pas de Zen en attente 4 (znver4) correctifs pour LLVM en amont.

AOCC 4.0 est dérivé des sources LLVM/Clang 14.0.6 en amont. LLVM 15 est sorti début septembre alors que AOCC n’a pas encore été rebasé sur cette dernière version de fonctionnalité semestrielle. Pour une analyse comparative préliminaire, j’ai donc exécuté des analyses comparatives sur Zen 4 entre AOCC 4.0 et LLVM Clang 14.0 tels qu’emballés sur Ubuntu Linux.

En raison du fait que le serveur Titanite est mon seul EPYC 9004 plate-forme de test de la série pour l’instant et étant occupé à effectuer d’autres tests de performance, pour essayer AOCC 4.0, j’ai exécuté des tests de performance sur l’AMD Ryzen 9 7950X. AOCC 4.0 prend en charge tous les produits Ryzen/Threadripper/EPYC et conserve toujours la prise en charge des générations précédentes de processeurs Zen.

Pendant les tests, tous les CFLAGS/CXXFLAGS ont été maintenus identiques mais juste reconstruire tous les logiciels testés avec AMD AOCC 4.0 ou LLVM Clang 14.0 en amont.

Comme en amont LLVM/Clang Git et GCC Git prennent plus d’optimisations pour Zen 4, je vais bien sûr exécuter un beaucoup plus grand et une comparaison plus large du compilateur sur Zen 4-ainsi que sur les processeurs de la série EPYC 9004 les plus pertinents.

Comme pour les versions précédentes d’AOCC pour Zen 1/2/3, AOCC 4.0 avec Zen 4 aide à éliminer performances supplémentaires au-delà de ce que l’on trouve actuellement dans les compilateurs open source en amont :

LLVM Clang 14 construisait le logiciel avec AVX-512 et d’autres nouvelles extensions activées, donc pour cette analyse comparative AOCC vs Clang, il examine l’impact des réglages/optimisations d’AMD et non des différences ISA.

AOCC 4.0 ressemble à une belle start pour avoir aidé à maximiser les performances du processeur Zen 4 du côté du compilateur.

AOCC 4.0 présentait de belles améliorations en plus des performances déjà excellentes de l’AMD Ryzen 9 7950X Linux :

L’utilisation d’AOCC 4.0 par rapport au compilateur LLVM Clang 14 en amont pour lequel il est basé permet des gains de performances faibles à généreux. Espérons que GCC verra bientôt le tableau des coûts réglés pour Zen 4 pour son activation Znver4 initiale, puis attendra toujours l’activation LLVM/Clang znver4 en amont et tout réglage là-bas.

Longue histoire Bref, AOCC 4.0 a fière allure au moins sur mes premiers tests effectués sur l’AMD Ryzen 9 7950X. En plus de la route AOCC en tant que compilateur optimisé axé sur AMD, je continue d’espérer-et de faire pression-pour qu’AMD s’assure que les compilateurs open source GCC et LLVM/Clang en amont bénéficient d’un soutien opportun et honorable. AMD coche absolument toutes les bonnes cases avec leur exécution matérielle en ce moment, tandis que du côté des logiciels Linux/open source, ils montrent encore de la place pour l’amélioration, surtout s’ils veulent correspondre aux traditions et au niveau de support dont bénéficient depuis longtemps les clients Intel Linux pour la qualité du support open source en amont au lancement. AMD, pour sa part, s’est amélioré du côté des logiciels et ses embauches continues (après la vague initiale de succès d’EPYC dans le centre de données permettant une augmentation des investissements) s’efforcent certainement d’orienter le navire dans cette direction.

De plus, je continue personnellement d’être un peu perplexe quant à la raison pour laquelle AMD attend le lancement ultérieur d’EPYC avant de publier AOCC 4.0 plutôt que de frapper initialement lorsque la série Ryzen 7000 a fait ses débuts. Une exécution plus précoce aurait pu conduire à une meilleure expérience pour tous les ordinateurs de bureau/postes de travail de développeur et ceux qui pourraient utiliser la série Ryzen 7000 comme évaluation/tremplin pour commencer à préparer leurs propres bases de code logicielles pour Zen 4 avec d’éventuels serveurs EPYC. C’est ainsi aussi avec Zen 3 en attendant Milan avant de publier AOCC 3.0 avec un écart de plusieurs mois que les bureaux Ryzen develoepr, ceux qui exécutent des distributions Linux basées sur les sources, les développeurs de compilateurs open source ont plus de temps pour profiler les différences dans le code généré, et d’autres auraient pu aider à”défoncer les pneus”sur le nouvel AOCC avant la disponibilité de l’EPYC. Pourquoi ne pas l’expédier plus tôt en tant que”bêta”AOCC pour les tests Ryzen ? J’imagine que cela se résume également aux ressources d’ingénierie et qu’ils ont besoin de tout le temps qu’ils peuvent pour travailler sur les optimisations du compilateur.

Restez à l’écoute pour plus de références AOCC 4.0 d’EPYC Genoa et une comparaison plus large du compilateur, y compris Clang-15/GCC-13/etc sur Zen 4 car la prise en charge de tous ces compilateurs voit des améliorations. Compte tenu des benchmarks AMD EPYC 9654 et 9554 Genoa d’hier, il sera assez amusant de voir à quel point ce grand ensemble de benchmarks est globalement plus rapide en tirant parti d’AOCC 4.0 sur GCC 12 tel qu’utilisé pour le compilateur système sur tous ces processeurs testés.

Categories: IT Info