A Closer Look At The GCC 8 Compiler Performance On Intel Skylake

Written by Michael Larabel in Software on 17 May 2018 at 10:07 AM EDT. Page 1 of 2. 12 Comments.

In continuing with our recent benchmarks of the brand new GCC 8.1 compiler, here are more tests while using an Intel Skylake CPU and testing with -O2, -O3, and -O3 -march=native optimization levels while comparing the resulting binary performance of GCC 8.1 and GCC 7.3.

This round of benchmarking was done with an Intel Xeon E3-1280 v5, which is a Skylake processor but only has AVX2 and not AVX-512 support. There's been some speculation that part of the Skylake performance benefit from GCC 8 is due to AVX-512 changes, besides the Skylake scheduler model also having been improved. So these Xeon E3-1280 v5 tests should be interesting for this quad-core / eight thread CPU that tops out at 4.0GHz.

Ubuntu 18.04 LTS was running on this test system with the Linux 4.15 kernel and GCC 7.3.0 and GCC 8.1.0 being built from source in the same manner. During testing on each compiler were runs when the benchmark binaries were generated with CFLAGS/CXXFLAGS of "-O2", "-O3", and then "-O3 -march=native" for seeing how these different levels of optimizations compare between GCC 7 and GCC 8. All of these compiler benchmarks were carried out in a fully-automated and reproducible manner using the open-source Phoronix Test Suite benchmarking software.

First up was the HMMer test where we see when using the common -O2 optimization level that is generally used by most Linux distribution packages there was virtually no change in performance, but when using -O3 and -O3 -march=native is where there is a significant improvement in performance with GCC 8.1.0.

With SciMark2 the greater optimizations obviously help out, but there wasn't much of a difference on this Xeon E3-1280 v5 system between GCC 7.3 and GCC 8.1 for these micro-benchmarks.

In the Dense LU matrix factorization sub-test, GCC 8.1 actually was lower across the board.

In some of the GraphicsMagick image processing tasks, using the microarchitecture optimizations for Skylake actually hurt the performance with GCC 8 compared to last year's GCC 7 compiler.


Related Articles