AMD Ryzen AOCC 1.0 Compiler Tuning Benchmarks

Written by Michael Larabel in Software on 21 May 2017 at 12:00 PM EDT. Page 1 of 4. 25 Comments.

On Friday I posted some benchmarks of AMD's new AOCC code compiler for Ryzen compared to LLVM Clang 4.0/5.0 and GCC 6/7/8. The AOCC 1.0 benchmarks on Ryzen 7 didn't offer much over LLVM Clang for which this "AMD Optimizing C/C++ Compiler" is based, but in this article are some tuning benchmarks.

A Phoronix reader pointed out AOCC 1.0 does introduce a new compiler switch that isn't present currently in LLVM Clang: enable‐strided‐vectorization. The AOCC 1.0 man page describes this lone new driver option as "This optimization involves strided memory vectorization as an enhancement to LLVM’s interleaved vectorization framework. This enables effective use of gather and scatter kind of data access patterns."

AOCC 1.0 Compiler Tuning

For this weekend compiler benchmarking I ran AOCC 1.0 tests on the Ryzen 7 1700 using:

- -O0
- -O2
- -O3
- -O3 -march=znver1
- -O3 -march=znver1 -mllvm -enable-strided-vectorization
- -Ofast -march=znver1

For seeing the impact of this new strided-vectorization optimization as well as the impact of -march=znver1 tuning with AOCC 1.0. Back during the Ryzen 7 launch I ran various GCC Zen compiler tuning benchmarks for those interested in similar numbers with the GNU Compiler Collection.

These AOCC 1.0 compiler benchmarks were facilitated in a fully-automated and reproducible manner using the open-source Phoronix Test Suite.


Related Articles