GCC vs. LLVM Clang vs. AOCC Compiler Benchmarks On The AMD EPYC 7742 2P Linux Server

Written by Michael Larabel in Software on 9 August 2019 at 07:00 AM EDT. Page 1 of 4. 15 Comments.

While AMD's hardware folks were launching the EPYC 7002 series, their software crew was pushing out the AMD Optimizing C/C++ Compiler 2.0 with support/optimizations for the Zen 2 micro-architecture. Using the top-end AMD EPYC 7742 in a 2P Linux server configuration, here are C/C++ compiler benchmarks looking at the performance when built by the GNU Compiler Collection (GCC), LLVM Clang, and AOCC 2.0.

The compiler benchmarks for this AMD EPYC 7742 2P testing from Ubuntu 19.04 with Linux 5.2 includes:

GCC 9.1.0 - The current stable compiler release of the GNU Compiler Collection as introduced earlier this year. This has the initial "Znver2" support though the upcoming GCC 9.2 release back-ports the Znver2 cost table and scheduler model changes from GCC 10.

GCC 10.0.0 - The current GCC 10 development compiler state as of 4 August with the very latest Znver2 support and all of the other compiler optimizations and improvements going into this compiler release due out in Q2'2020.

LLVM Clang 9.0 SVN - The current development code of LLVM/Clang 9.0 as set to be released in a few weeks time and has been under feature freeze already. LLVM 9.0 is the first release having Znver2 target support after that AMD addition didn't make it in time for this past spring's LLVM 8.0 release.

AMD AOCC 2.0 - The new AMD Optimizing C/C++ Compiler release introduced this week. AOCC 2.0 is derived from the LLVM/Clang 8.0 code-base but with Znver2 support added and various other optimizations and improvements compared to what is currently found in upstream LLVM.

All of these tests were done on the AMD EPYC 7742 2P configuration with the Daytona reference server running Ubuntu Linux. All of these benchmarks looking at the resulting binary performance were carried out using the open-source Phoronix Test Suite benchmarking software. During all tests, the CFLAGS/CXXFLAGS were set to "-O3 -march=znver2" for targeting the Zen 2 EPYC processors.

Related Articles