AMD AOCC 4.0 Arrives For Squeezing More Performance Out Of Zen 4
AOCC 4.0 was showing off some nice improvements on top of the already great AMD Ryzen 9 7950X Linux performance:
There are small to generous performance gains possible in using AOCC 4.0 over the upstream LLVM Clang 14 compiler for which it is based. Hopefully GCC will soon see the tuned cost table for Zen 4 for its initial Znver4 enablement and then still waiting on the upstream LLVM/Clang znver4 enablement and any tuning there.
In a statement to Phoronix when inquiring about the compiler support ahead of the EPYC 4th Gen debut, AMD shared that "additional GCC 13 optimization proposals for the Zen4 architecture are underway as is our common practice for each Zen generation." Hopefully that pans out and without waiting too long. As one can see by showing all the GCC commits from AMD.com, there were many more commits by AMD to GCC going back years ago than in more recent years. Back during the AMD OSRC days -- before it was disbanded amid cost-cutting measures at the time -- there was frequent improvements to GCC by AMD engineers but less so in recent years. For Zen 3 that GCC compiler work was namely done by SUSE engineers so nice to see AMD engineers at least working on the Znver4 start.
Long story short, AOCC 4.0 is looking great at least on my initial tests carried out on the AMD Ryzen 9 7950X. In addition to the AOCC route as an optimized AMD-focused compiler, I continue to hope - and press - for AMD to ensure the upstream GCC and LLVM/Clang open-source compilers see timely and honorable support. AMD is absolutely ticking all the right boxes with their hardware execution right now while on the Linux/open-source software side they still show room for improvement, especially if they want to match the traditions and level of support long enjoyed by Intel Linux customers for the quality of at-launch upstream open-source support. AMD for their part has been improving on the software side and their continued hires (following the initial wave of EPYC successes in the data center allowing for increased investment) are certainly working toward pointing the ship in that direction.
Additionally, I personally continue to be a bit perplexed why AMD waits until the later EPYC launch before posting AOCC 4.0 rather than striking initially when the Ryzen 7000 series first debuted. Earlier execution could have led to a better experience for any developer desktops/workstations and those that may be using Ryzen 7000 series as an evaluation / stepping stone to begin preparing their own software codebases for Zen 4 with eventual EPYC servers. It was this way as well with Zen 3 in waiting for Milan before publishing AOCC 3.0 with a several month gap that Ryzen developer desktops, those running source-based Linux distributions, open-source compiler developers more time to profile differences in the generated code, and others could have helped "kick the tires" on the new AOCC prior to EPYC availability. Heck why not ship it earlier as AOCC "beta" for Ryzen testing? I imagine this too comes down to engineering resources and needing all the time they can get to work out the compiler optimizations.
Stay tuned for more AOCC 4.0 benchmarks from EPYC Genoa and a larger compiler comparison including Clang-15/GCC-13/etc on Zen 4 as the support for all of these compilers see improvements. Given yesterday's AMD EPYC 9654 and 9554 Genoa benchmarks it will be quite fun to see how much faster overall that big set of benchmarks is when leveraging AOCC 4.0 over GCC 12 as used for the system compiler on all those tested processors.
If you enjoyed this article consider joining Phoronix Premium to view this site ad-free, multi-page articles on a single page, and other benefits. PayPal or Stripe tips are also graciously accepted. Thanks for your support.