Vo štvrtok pri uvedení procesorov AMD EPYC Genoa 4. generácie AMD zverejnila spoločnosť AMD aj AOCC 4.0 ako najnovšiu verziu kompilátora AMD Optimizing C/C++ Compiler. Minulý deň som to skúšal a stále ukazujem pozitívny vplyv na výkon správneho ladenia kompilátora.
Najvýraznejšie predstavuje vydanie AMD Optimizing C/C++ Compiler 4.0 počiatočná podpora a optimalizácia Zen 4″znver4″. Verejný protokol zmien to jednoducho nazýva „podpora a optimalizácia procesorov AMD Family 19h (jadrová architektúra AMD „Zen4“). Z toho nie je jasné, aký je rozsah optimalizácií Zen 4 v tejto fáze, najmä keď AOCC je uzavretý zdroj po LLVM/Clang.
Okrem toho, že AOCC 4.0 má Podpora a optimalizácie Zen 4, vylepšenia podpory OpenMP 4.5 pre Fortran, vylepšenia ladenia/diagnostiky, ladenie pre AMD Math Library 4.0, podpora vektorových a rýchlejších lib variantov AMD Math Library a vylepšené varianty rôznych skalárnych/vektorových/slučkové transformácie. Viac podrobností o AOCC 4.0 cez developer.amd.com.
Žiadne čakajúce Zen Ešte 4 záplaty (znver4) pre upstream LLVM.
AOCC 4.0 je odvodený z upstream zdrojov LLVM/Clang 14.0.6. LLVM 15 vydaný začiatkom septembra, zatiaľ čo AOCC ešte nebolo prepracované na posledné polročné vydanie funkcií. Pre nejaké predbežné benchmarking som teda spustil niekoľko porovnávacích benchmarkov na Zen 4 medzi AOCC 4.0 a LLVM Clang 14.0 v balíku na Ubuntu Linux.
Vzhľadom na to, že server Titanite je môj jediný EPYC 9004 testovacia platforma série zatiaľ a keďže som zaneprázdnený vykonávaním iných benchmarkov, na vyskúšanie AOCC 4.0 som spustil benchmarky na AMD Ryzen 9 7950X. AOCC 4.0 podporuje všetky produkty Ryzen/Threadripper/EPYC a stále si zachováva podporu pre staršie generácie procesorov Zen.
Počas testovania boli všetky CFLAGS/CXXFLAGS zachované rovnaké, ale len prebudovanie všetkého testovaného softvéru s AMD AOCC 4.0 alebo LLVM Clang 14.0 upstream.
Keďže upstream LLVM/Clang Git a GCC Git získavajú viac optimalizácií pre Zen 4, samozrejme spustím oveľa väčší a širšie porovnanie kompilátorov na Zen 4 – plus bežiace aj na relevantnejších procesoroch série EPYC 9004.
Ako pri minulých vydaniach AOCC pre Zen 1/2/3, AOCC 4.0 so Zen 4 pomáha pri vytláčaní dodatočný výkon nad rámec toho, čo sa v súčasnosti nachádza v upstreamových kompilátoroch s otvoreným zdrojovým kódom:
LLVM Clang 14 vytváral softvér s povoleným AVX-512 a ďalšími novými rozšíreniami, takže tento benchmarking AOCC vs. Clang sa zameriava na vplyv ladenia/optimalizácie AMD a nie žiadne rozdiely v ISA.
AOCC 4.0 vyzerá dobre začiatok za pomoc pri maximalizácii výkonu procesora Zen 4 na strane kompilátora.
AOCC 4.0 predvádzal niekoľko pekných vylepšení k už aj tak skvelému výkonu AMD Ryzen 9 7950X Linux:
Pri používaní AOCC 4.0 cez upstream kompilátor LLVM Clang 14, pre ktorý je založený, je možné dosiahnuť malé až veľkorysé zvýšenie výkonu. Dúfajme, že GCC čoskoro uvidí vyladenú tabuľku nákladov pre Zen 4 pre jeho počiatočné povolenie Znver4 a potom stále čaká na upstream povolenie LLVM/Clang znver4 a akékoľvek ladenie.
Dlhý príbeh. skrátka, AOCC 4.0 vyzerá skvele aspoň pri mojich počiatočných testoch vykonaných na AMD Ryzen 9 7950X. Okrem cesty AOCC ako optimalizovaného kompilátora zameraného na AMD naďalej dúfam – a nalieham – aby AMD zabezpečilo, že upstreamové kompilátory GCC a LLVM/Clang s otvoreným zdrojovým kódom dostanú včasnú a čestnú podporu. AMD práve teraz úplne zaškrtáva všetky správne políčka, pokiaľ ide o ich vykonávanie hardvéru, zatiaľ čo na strane Linuxu/softvéru s otvoreným zdrojovým kódom stále vykazujú priestor na zlepšenie, najmä ak chcú zodpovedať tradíciám a úrovni podpory, ktorú už dlho využívajú zákazníci Intel Linuxu. kvalita počiatočnej podpory open source pri spustení. AMD sa z ich strany zlepšuje po softvérovej stránke a ich pokračujúci nábor (po počiatočnej vlne úspechov EPYC v dátovom centre umožňujúcom zvýšené investície) určite pracuje na nasmerovaní lode týmto smerom.
Navyše, ja osobne som stále trochu zmätený, prečo AMD čaká až na neskoršie spustenie EPYC pred odoslaním AOCC 4.0, namiesto toho, aby spočiatku zarážalo, keď prvýkrát debutovala séria Ryzen 7000. Skoršie spustenie mohlo viesť k lepšej skúsenosti pre akékoľvek desktopy/pracovné stanice pre vývojárov a tie, ktoré môžu používať sériu Ryzen 7000 ako hodnotenie/odrazový mostík na začatie prípravy vlastných softvérových kódových základov pre Zen 4 s prípadnými servermi EPYC. Podobne to bolo aj v prípade Zen 3, ktorý čakal na Miláno pred vydaním AOCC 3.0 s niekoľkomesačným odstupom, že desktopy Ryzen develoepr, tie, ktoré používajú zdrojové linuxové distribúcie, vývojári kompilátorov s otvoreným zdrojovým kódom získali viac času na profilovanie rozdielov vo vygenerovanom kóde, a iní mohli pomôcť „nakopnúť pneumatiky“ na novom AOCC pred dostupnosťou EPYC. Prečo to neposlať skôr ako AOCC”beta”na testovanie Ryzenov? Myslím si, že aj toto je spôsobené inžinierskymi zdrojmi, ktoré potrebujú všetok čas, ktorý môžu získať na vypracovanie optimalizácií kompilátora.
Sledujte ďalšie benchmarky AOCC 4.0 z EPYC Genoa a väčšie porovnanie kompilátora vrátane Clang-15/GCC-13/etc na Zen 4, keďže podpora pre všetky tieto kompilátory vidí vylepšenia. Vzhľadom na včerajšie benchmarky AMD EPYC 9654 a 9554 Genoa bude celkom zábavné vidieť, o koľko rýchlejší je celkovo tento veľký súbor benchmarkov pri využití AOCC 4.0 oproti GCC 12, ktorý sa používa pre systémový kompilátor na všetkých testovaných procesoroch.