GCC 9 Compiler Tuning Benchmarks On Intel Skylake AVX-512

Written by Michael Larabel in Software on 8 March 2019 at 12:20 AM EST. Page 1 of 4. 28 Comments.

Recently I carried out a number of GCC 9 compiler benchmarks on AMD EPYC looking at the performance benefits of "znver1" compiler tuning and varying optimization levels to see when this level of compiler tuning pays off. There was interest from that in seeing some fresh Intel Skylake-X / AVX-512 figures, so here are those benchmarks of GCC 9 with various tuning options and their impact on the performance of the generated binaries.

This round of testing was done with an Intel Core i9 7980XE as the most powerful AVX-512 HEDT CPU I have available for testing. The Core i9 7980XE was running Ubuntu 18.10 with the Linux 4.18 kernel and I had manually built the GCC 9.0.1 2019-02-17 compiler snapshot (the most recent at the time of testing) in its release/optimized form.

The CFLAGS/CXXFLAGS used for this GCC 9 compiler tuning benchmarks were:

-O0
-O1
-O2
-O2 -march=skylake-avx512
-O3
-O3 -march=x86-64
-O3 -march=skylake
-O3 -march=skylake-avx512
-O3 -march=skylake-avx512 -flto
-Ofast -march=skylake-avx512

This offers a look from no GNU Compiler Collection optimizations through all the standard optimizations, looking at Skylake vs. Skylake-AVX512 tuning, the benefits of link-time optimization on this new compiler, and also being aggressive with performance but at potentially unsafe math via the "-Ofast" level.

71 benchmarks were run at each of these optimization levels on the Intel i9-7980XE system. All of these compiler benchmarks were facilitated in a fully-automated and reproducible manner using the open-source Phoronix Test Suite benchmarking software.

Related Articles