Intel Cascade Lake Xeon Benchmarks With GCC 8 vs. GCC 9 Compilers
With today's release of the GCC 9 code compiler among the many features offered in this annual update to the GNU Compiler Collection is the initial "cascadelake" target/tuning support that enables AVX-512 VNNI tuning by default as the most notable change over the former "skylake-avx512" GCC target. Anyhow, for those wondering how the GCC 9 performance differs compared to last year's GCC 8 compiler release, here are some preliminary benchmarks.
Last month using a GCC 9 development snapshot I ran some tests compared to GCC 8.3 but only got around to posting this data today. Additional GCC 9 benchmarks from Intel 2nd Gen Xeon Scalable processors will be coming soon on Phoronix as well as seeing how the generated C/C++ performance compares to LLVM Clang, etc. For this benchmarking today the dual Intel Xeon Platinum 8280 setup built around the Gigabyte Storage Server was used.
The dual Xeon Platinum "Cascade Lake" server was running Ubuntu 18.04 LTS but with upgrading manually to the Linux 5.1 Git kernel and manually building GCC 8.3.0 and GCC 9 in its standard release mode configuration. While compiling the programs under test, the CFLAGS/CXXFLAGS were set to "-O3 -march=skylake" for a generic Skylake tuning/optimizations and then again when using "-O3 -march=native" for seeing the benefits there.
Via the Phoronix Test Suite various C/C++ benchmarks were carried out on both GCC8 and GCC9 while using the "-march=skylake" and "-march=native" (for Skylake-AVX512 + other changes over generic Skylake). A wide variety of benchmarks were used as opposed to just focusing on workloads that would say benefit from AVX-512 VNNI (DL BOOST) but that will come in its own article with these initial benchmarks looking at the general compiler performance.
One of the early winners in the GCC9 benchmarking was FFTW performing faster, both for the Skylake and "native" builds.
For many of the tests carried out, there was little change in performance in going from GCC8 to GCC9.
Or very slight improvements with the new compiler...
But in many cases still, healthy improvements to find from the new compiler release. GCC 9 has seen a lot of work on different optimizations and in follow-up articles will be looking at the latest PGO (Profile Guided Optimizations), LTO (Link Time Optimizations), and other compiler performance boosting options.
In some cases, GCC 9 did appear to slightly regress but at least no real sizable regressions.
As is commonly the case with new compiler releases, build times tend to be slower. The increased build times come from introducing new/better optimizations so it's a trade-off of slower build times for generally superior/faster generated code.
One of the real surprises was PostgreSQL seeming to run much faster on GCC 9, which was reproduced on both sets of compiler flags.
But in most cases, the compiler benefits are much more modest.
Stay tuned for more GCC 9 compiler benchmarks coming up on Phoronix.