AMD AOCC 3.0 Compiler Performance With The EPYC 75F3 - Making Fast Even Faster
Launched last week with the AMD EPYC 7003 "Milan" processors was the AOCC 3.0 code compiler as AMD's downstream of LLVM Clang with various patches now catering to optimized for Zen 3. Last week some preliminary benchmarks of AOCC 3.0 on the Ryzen 9 5950X were carried out to good results. Since then I have begun putting AOCC 3.0 through its paces on a AMD EPYC 7003 series server to overall great results.
The AMD Optimizing C/C++ Compiler 3.0 is catering to AMD EPYC 7003 (Zen 3) processors, re-based from LLVM Clang 11 to LLVM Clang 12, adds in tuning for the AMD Math Library (AMDLibM 3.7), and offers improved Fortran language support with the FLANG front-end. The extent of AMD's Zen 3 / Znver3 tuning though isn't clear given that AOCC remains a binary-only compiler without the sources being publicly available. In any case, the benchmarks we are seeing out of AOCC 3.0 on Zen 3 processors are looking quite favorable.
In this article is a look at the AOCC 3.0 performance compared to the prior Zen2-focused AOCC 2.3 compiler against GCC 9.3 as the default compiler found out-of-the-box on Ubuntu 20.04 LTS. The default compiler of Ubuntu 20.04 LTS is what we and many others use for the initial EPYC Milan benchmarking and others for it, well, being the default.
Benchmarks of AOCC 3.0 against the latest upstream LLVM Clang and GCC compilers will be coming but not for this article. Within LLVM Clang 12 is just the basic Znver3 enablement without any further tuning yet. Meanwhile over the past week GCC 11 has begun squeezing in some more Zen 3 tuning over the basic enablement that it saw back in December. So in recent days for GCC 11 there has been more Znver3 tuning and as recently as this morning Znver3 fixes. Once that GCC work settles down with the imminent GCC 11.1 stable release, there will be some comparison benchmarks on that front.
This GCC vs. AOCC 2.3 vs. AOCC 3.0 benchmarking was carried out on the AMD Daytona reference platform while running dual AMD EPYC 75F3 Milan processors. Ubuntu 20.04 LTS was running on this box during the compiler benchmarking with the Linux 5.9 kernel. Via the Phoronix Test Suite we focused on various open-source C/C++ benchmarks for this initial AOCC 3.0 benchmarking on Milan. The same CFLAGS/CXXFLAGS were maintained throughout all the testing with "-O3 -march=native" set as well.