herauszuholen
Am Donnerstag, als AMD EPYC Genoa Prozessoren der 4. Generation auf den Markt brachte, veröffentlichte AMD auch AOCC 4.0 als die neueste Version des AMD Optimizing C/C++ Compilers. Ich habe ihn am vergangenen Tag auf Herz und Nieren geprüft und zeige weiterhin die positiven Auswirkungen einer ordnungsgemäßen Compiler-Abstimmung auf die Leistung.
Die AMD Optimizing C/C++ Compiler 4.0-Version führt vor allem ein erste Zen 4″znver4″Unterstützung und Optimierungen. Das öffentliche Änderungsprotokoll nennt es einfach „Unterstützung und Optimierung von Prozessoren der AMD-Familie 19h (AMD „Zen4“-Kernarchitektur)“. Daraus geht das Ausmaß der Zen 4-Optimierungen in diesem Stadium nicht hervor, insbesondere da AOCC ein Closed-Source-Downstream von LLVM/Clang ist.
Zusätzlich zu AOCC 4.0 Zen 4-Unterstützung und-Optimierungen, es gibt OpenMP 4.5-Unterstützungsverbesserungen für Fortran, Debugging-/Diagnoseverbesserungen, Tuning für die AMD Math Library 4.0, Unterstützung für Vektor-und schnellere Lib-Varianten der AMD Math Library und verbesserte Varianten verschiedener Skalar-/Vektor-/Loop-Transformationen. Weitere Details zu AOCC 4.0 über developer.amd.com.
Kein ausstehendes Zen 4 (znver4) Patches noch für Upstream-LLVM.
AOCC 4.0 wird von den Upstream-LLVM/Clang 14.0.6-Quellen abgeleitet. LLVM 15 wurde Anfang September veröffentlicht, während AOCC noch nicht auf diese neueste Halbjahres-Funktionsversion umgestellt wurde. Für ein vorläufiges Benchmarking habe ich daher einige Vergleichsbenchmarks auf Zen 4 zwischen AOCC 4.0 und LLVM Clang 14.0, wie auf Ubuntu Linux verpackt, durchgeführt.
Da der Titanite-Server mein einziger EPYC 9004 ist Serien-Testplattform und da ich damit beschäftigt bin, andere Benchmarks durchzuführen, habe ich zum Ausprobieren von AOCC 4.0 Benchmarks auf dem AMD Ryzen 9 7950X ausgeführt. AOCC 4.0 unterstützt alle Ryzen-/Threadripper-/EPYC-Produkte und behält weiterhin Unterstützung für frühere Generationen von Zen-Prozessoren.
Während des Tests wurden alle CFLAGS/CXXFLAGS beibehalten, aber nur neu erstellt die gesamte getestete Software mit AMD AOCC 4.0 oder LLVM Clang 14.0 Upstream.
Da Upstream LLVM/Clang Git und GCC Git mehr Optimierungen für Zen 4 aufgreifen, werde ich natürlich ein viel größeres und breiterer Compiler-Vergleich auf Zen 4–plus läuft auch auf den relevanteren Prozessoren der EPYC 9004-Serie.
Wie bei früheren AOCC-Veröffentlichungen für Zen 1/2/3 hilft AOCC 4.0 mit Zen 4 dabei, zusätzliche herauszupressen Leistung, die über das hinausgeht, was derzeit in den Upstream-Open-Source-Compilern zu finden ist:
LLVM Clang 14 baute die Software mit aktiviertem AVX-512 und anderen neuen Erweiterungen Einfluss von AMDs Tuning/Optimierungen und keine ISA-Unterschiede.
AOCC 4.0 sieht aus wie ein netter Sta rt für die Unterstützung bei der Maximierung der Zen 4-Prozessorleistung auf der Compiler-Seite.
AOCC 4.0 zeigte einige nette Verbesserungen zusätzlich zu der bereits großartigen AMD Ryzen 9 7950X Linux-Leistung:
Durch die Verwendung von AOCC 4.0 gegenüber dem Upstream-Compiler LLVM Clang 14, auf dem es basiert, sind kleine bis großzügige Leistungssteigerungen möglich. Hoffentlich sieht GCC bald die optimierte Kostentabelle für Zen 4 für seine anfängliche Znver4-Aktivierung und wartet dann immer noch auf die Upstream-LLVM/Clang-Znver4-Aktivierung und jegliche Anpassung dort.
Lange Geschichte Kurz gesagt, AOCC 4.0 sieht zumindest bei meinen ersten Tests, die auf dem AMD Ryzen 9 7950X durchgeführt wurden, großartig aus. Neben der AOCC-Route als optimierter AMD-fokussierter Compiler hoffe ich – und drücke – weiterhin darauf, dass AMD sicherstellt, dass die Upstream-Open-Source-Compiler GCC und LLVM/Clang zeitnahe und ehrenhafte Unterstützung erhalten. AMD kreuzt mit ihrer Hardware-Ausführung derzeit absolut die richtigen Kästchen an, während sie auf der Seite von Linux/Open-Source-Software noch Raum für Verbesserungen zeigen, insbesondere wenn sie mit den Traditionen und dem Support-Level mithalten wollen, für die sich Intel-Linux-Kunden seit langem freuen die Qualität des Upstream-Open-Source-Supports beim Start. AMD seinerseits hat sich auf der Softwareseite verbessert, und ihre fortgesetzten Einstellungen (nach der ersten Welle von EPYC-Erfolgen im Rechenzentrum, die höhere Investitionen ermöglichten) arbeiten sicherlich daran, das Schiff in diese Richtung zu lenken.
Außerdem bin ich persönlich immer noch etwas ratlos, warum AMD mit der Veröffentlichung von AOCC 4.0 bis zum späteren EPYC-Start wartet, anstatt gleich beim ersten Debüt der Ryzen 7000-Serie zuzuschlagen. Eine frühere Ausführung hätte zu einer besseren Erfahrung für alle Entwickler-Desktops/Workstations und diejenigen führen können, die die Ryzen 7000-Serie als Evaluierungs-/Sprungbrett verwenden, um mit der Vorbereitung ihrer eigenen Software-Codebases für Zen 4 mit eventuellen EPYC-Servern zu beginnen. So war es auch bei Zen 3, das auf Milan wartete, bevor es AOCC 3.0 mit einer mehrmonatigen Lücke veröffentlichte, damit Ryzen-Entwickler-Desktops, diejenigen, die quellbasierte Linux-Distributionen ausführen, Open-Source-Compiler-Entwickler mehr Zeit hatten, Unterschiede im generierten Code zu profilieren, und andere hätten helfen können, dem neuen AOCC vor der Verfügbarkeit von EPYC „die Reifen wegzuschlagen“. Verdammt, warum nicht früher als AOCC „Beta“ für Ryzen-Tests versenden? Ich nehme an, dass dies auch auf die Entwicklungsressourcen zurückzuführen ist und sie die ganze Zeit brauchen, die sie bekommen können, um die Compiler-Optimierungen auszuarbeiten.
Bleiben Sie dran für weitere AOCC 4.0-Benchmarks von EPYC Genoa und einen größeren Compiler-Vergleich einschließlich Clang-15/GCC-13/etc auf Zen 4, da die Unterstützung für all diese Compiler verbessert wird. Angesichts der gestrigen AMD EPYC 9654 und 9554 Genoa Benchmarks wird es ziemlich lustig sein zu sehen, wie viel schneller diese große Reihe von Benchmarks insgesamt ist, wenn AOCC 4.0 gegenüber GCC 12 genutzt wird, wie es für den Systemcompiler auf all diesen getesteten Prozessoren verwendet wird.