Bij de lancering van AMD 4e generatie EPYC Genua-processors, heeft AMD donderdag ook AOCC 4.0 gepubliceerd als de nieuwste versie van de AMD Optimizing C/C++ Compiler. Ik heb het de afgelopen dag uitgeprobeerd en blijf de positieve prestatie-impact van een goede compiler-afstemming laten zien.
De AMD Optimizing C/C++ Compiler 4.0-release introduceert met name de introductie initiële Zen 4″znver4″ondersteuning en optimalisaties. Het openbare wijzigingslogboek noemt het eenvoudigweg”AMD Family 19h-processors (AMD”Zen4″kernarchitectuur) ondersteuning en optimalisaties.”Het is niet duidelijk wat de omvang van de Zen 4-optimalisaties in dit stadium zijn, vooral omdat AOCC een closed-source stroomafwaarts van LLVM/Clang is.
Naast AOCC 4.0 met Zen 4-ondersteuning en optimalisaties, er zijn OpenMP 4.5-ondersteuningsverbeteringen voor Fortran, debugging/diagnoseverbeteringen, afstemming voor de AMD Math Library 4.0, ondersteuning voor vector-en snellere lib-varianten van de AMD Math Library en verbeterde varianten van verschillende scalaire/vector/lus transformaties. Meer details over AOCC 4.0 via developer.amd.com.
Geen zen in behandeling Nog 4 (znver4) patches voor upstream LLVM.
AOCC 4.0 is afgeleid van de upstream LLVM/Clang 14.0.6-bronnen. LLVM 15 is begin september uitgebracht, terwijl AOCC nog niet opnieuw is gebaseerd op die nieuwste functie-release van een half jaar. Voor wat voorlopige benchmarking heb ik daarom wat vergelijkingsbenchmarks uitgevoerd op Zen 4 tussen AOCC 4.0 en LLVM Clang 14.0 zoals verpakt op Ubuntu Linux.
Omdat de Titanite-server mijn enige EPYC 9004 is serie testplatform voor nu en dat druk bezig met het uitvoeren van andere benchmarks, voor het uitproberen van AOCC 4.0 heb ik benchmarks gedraaid op de AMD Ryzen 9 7950X. AOCC 4.0 ondersteunt alle Ryzen/Threadripper/EPYC-producten en behoudt nog steeds ondersteuning voor eerdere generaties Zen-processors.
Tijdens het testen zijn alle CFLAGS/CXXFLAGS hetzelfde onderhouden, maar alleen opnieuw opgebouwd alle software die wordt getest met AMD AOCC 4.0 of LLVM Clang 14.0 stroomopwaarts.
Omdat stroomopwaartse LLVM/Clang Git en GCC Git meer optimalisaties voor Zen 4 oppikken, zal ik natuurlijk een veel grotere en bredere compilervergelijking op Zen 4–plus draaiend op de meer relevante EPYC 9004-serie processors.
Net als bij eerdere AOCC-releases voor Zen 1/2/3, helpt AOCC 4.0 met Zen 4 bij het uitknijpen van extra prestaties die verder gaan dan wat momenteel wordt gevonden in de upstream open-source compilers:
LLVM Clang 14 bouwde de software met AVX-512 en andere nieuwe extensies ingeschakeld, dus voor deze AOCC vs. Clang benchmarking kijkt het naar de impact van AMD’s tuning/optimalisaties en geen ISA-verschillen.
AOCC 4.0 ziet er goed uit rt voor het helpen maximaliseren van de prestaties van de Zen 4-processor aan de compilerkant.
AOCC 4.0 liet een aantal mooie verbeteringen zien bovenop de toch al geweldige AMD Ryzen 9 7950X Linux-prestaties:
Er zijn kleine tot royale prestatiewinsten mogelijk bij het gebruik van AOCC 4.0 via de upstream LLVM Clang 14-compiler waarop het is gebaseerd. Hopelijk ziet GCC snel de getunede kostentabel voor Zen 4 voor de eerste Znver4-inschakeling en wacht dan nog steeds op de stroomopwaartse LLVM/Clang znver4-inschakeling en eventuele afstemming daar.
Lang verhaal kortom, AOCC 4.0 ziet er in ieder geval geweldig uit bij mijn eerste tests die zijn uitgevoerd op de AMD Ryzen 9 7950X. Naast de AOCC-route als een geoptimaliseerde AMD-gerichte compiler, blijf ik hopen-en druk ik erop-dat AMD ervoor zorgt dat de upstream GCC-en LLVM/Clang-open-sourcecompilers tijdige en eervolle ondersteuning krijgen. AMD vinkt op dit moment absoluut alle juiste vakjes aan met hun hardware-uitvoering, terwijl ze aan de kant van Linux/open-source software nog steeds ruimte voor verbetering laten zien, vooral als ze de tradities en het ondersteuningsniveau willen evenaren die lang genoten worden door Intel Linux-klanten voor de kwaliteit van upstream open source-ondersteuning bij de lancering. AMD van hun kant is aan de softwarekant verbeterd en hun voortdurende aanwervingen (na de eerste golf van EPYC-successen in het datacenter, waardoor meer investeringen mogelijk zijn) werken er zeker aan om het schip in die richting te sturen.
Bovendien blijf ik persoonlijk een beetje perplex waarom AMD wacht tot de latere EPYC-lancering voordat hij AOCC 4.0 plaatst in plaats van aanvankelijk toe te slaan toen de Ryzen 7000-serie voor het eerst debuteerde. Eerdere uitvoering had kunnen leiden tot een betere ervaring voor desktops/werkstations van ontwikkelaars en degenen die de Ryzen 7000-serie gebruiken als een evaluatie/opstap om te beginnen met het voorbereiden van hun eigen softwarecodebases voor Zen 4 met eventuele EPYC-servers. Zo was het ook met Zen 3 die wachtte op Milaan voordat hij AOCC 3.0 publiceerde, met een onderbreking van enkele maanden dat Ryzen-ontwikkelaarsdesktops, degenen die op brongebaseerde Linux-distributies draaien, open-source compilerontwikkelaars meer tijd hadden om verschillen in de gegenereerde code te profileren, en anderen hadden kunnen helpen”de banden te schoppen”op de nieuwe AOCC voordat EPYC beschikbaar was. Waarom zou je het niet eerder verzenden als AOCC”bèta”voor Ryzen-testen? Ik kan me voorstellen dat dit ook neerkomt op technische bronnen en dat ze alle tijd nodig hebben om de compiler-optimalisaties uit te werken.
Blijf op de hoogte voor meer AOCC 4.0-benchmarks van EPYC Genoa en een grotere compilervergelijking inclusief Clang-15/GCC-13/etc op Zen 4 aangezien de ondersteuning voor al deze compilers verbeteringen ziet. Gezien de AMD EPYC 9654 en 9554 Genua-benchmarks van gisteren, zal het best leuk zijn om te zien hoeveel sneller die grote reeks benchmarks in het algemeen is wanneer gebruik wordt gemaakt van AOCC 4.0 over GCC 12 zoals gebruikt voor de systeemcompiler op al die geteste processors.