AMD AOCC 2.2 Helping Squeeze Extra Performance Out Of AMD EPYC 7002 "Rome" CPUs
At the end of June AMD quietly released a new version of the AMD Optimizing C/C++ Compiler. Noticing the new release this week, here are some benchmarks of AOCC 2.2 up against LLVM Clang 10 and GCC 10 with Ubuntu Linux while running from an AMD EPYC 7742 2P server for looking at the performance gains possible with the compiler optimizations.
AMD AOCC 2.2 rebases the Zen-focused compiler against upstream LLVM/Clang 10.0 code-base. While the Optimizing "C/C++" Compiler, the Fortran language support continues being improved upon by leveraging LLVM's FLANG. With AOCC 2.2, Fortran 2008 features are present in FLANG along with other Fortran improvements. AOCC 2.2 also has "enhanced high-level optimizations" focused on the AMD EPYC 7002 series, machine dependent optimizations for EPYC 7002 series, updated AMD Math Libraries (AMDLibM 3.3), and LLVM's LLD linker is now the default. AOCC 2.2 is quite a hearty release but a bit unfortunate AMD doesn't do more to promote AOCC as two months past release this is the first time I heard of the new release when being curious about any summer updates.
This LLVM-based AOCC compiler is available as a generic binary Tar package as well as having Debian/Ubuntu and Red Hat RPM packages available. AOCC 2.2 is said to be officially tested on Red Hat Enterprise Linux 8, SUSE Linux Enterprise Server 15, and Ubuntu 19.04. Download links on AOCC 2.2 via developer.amd.com.
For my benchmarks I was testing AOCC 2.2 against LLVM Clang 10.0.1 upstream and GCC 10.2 as the latest other high profile open-source Linux compiler releases at this point. An Ubuntu 20.10 snapshot was running on this AMD EPYC Rome server with the Linux 5.4 kernel. The CFLAGS/CXXFLAGS set during testing on all of the compilers were "-O3 -march=native."