Initial Benchmarks Of The AMD AOCC 5.0 Compiler On 5th Gen EPYC

Written by Michael Larabel in Software on 15 October 2024 at 11:00 AM EDT. Page 1 of 4. 15 Comments.

Last week when launching the AMD EPYC 9005 "Turin" processors, on the same day AOCC 5.0 was quietly released as the newest version of AMD's Zen-focused compiler derived from LLVM/Clang. With not only adding AMD Zen 5 "znver5" support but also additional vectorization improvements and other performance optimizations, I was eager to run some benchmarks of AOCC 5.0 against the open-source GCC and LLVM/Clang compilers. Here are those initial benchmarks using dual AMD EPYC 9755 128-core Zen 5 processors.

AMD EPYC 9755 CPU

AOCC 5.0 adds initial Zen 5 architecture support, improved SLP and loop vectorization, improved LICM and loop optimizations, enhanced control/data flow optimizations, and Zen 5 tuning for the AMD Math Library. The AOCC 5.0 compiler is based upon the open-source LLVM 17.0.6 codebase. AOCC remains closed-source and just distributed as binary releases for various Linux platforms with sadly not being open-source to see all of their LLVM modifications or insight into just how big of a patch delta they are carrying compared to upstream LLVM. It was just last month that initial AMD Zen 5 support was merged into upstream LLVM but still carrying the tuning / cost tables from Zen 4. See my Znver5 articles for more background information on the open-source compiler support for Zen 5.

AMD EPYC 9755 with AOCC 5.0 compiler on Linux

With the dual AMD EPYC 9755 processors on the Volcano server running Ubuntu 24.04 LTS, I ran some C/C++ benchmarks on the following compiler configurations:

GCC 13.2 - The default compiler of Ubuntu 24.04 LTS that is last year's GCC feature release. GCC 13.2 doesn't contain the Znver5 bits that were just introduced earlier this year ahead of GCC 14.

GCC 14.2 - The latest upstream stable GCC 14 compiler release that does contain initial Znver5 support.

AOCC 5.0 - The new AMD AOCC 5.0 compiler release that is derived from LLVM 17.0.6 sources.

Clang 17.0.6 - The upstream LLVM Clang 17.0.6 compiler for seeing the difference to AOCC from the same LLVM/Clang version.

Clang 19.1.1 - The latest stable upstream LLVM/Clang release as of testing for showing the latest open-source LLVM improvements beyond where the AMD AOCC compiler is branched from now being two feature releases behind the latest LLVM.org upstream.

The same CFLAGS/CXXFLAGS with -O3 and -march=native targeting were used across testing these compilers. No changes were made to the server besides swapping out the compiler under test and then rebuilding all of the open-source C/C++ programs for each compiler.

AMD AOCC 5.0

If there is enough reader interest I may carry out a larger AOCC 5.0 compiler comparison with more workloads and more hardware. As well as potentially doing an AOCC 4.2 vs. AOCC 5.0 compiler comparison on EPYC Genoa/Bergamo for seeing if AOCC 5.0 is helping older Zen 4 platforms achieve greater performance.

Related Articles