Monday, May 22nd 2017

AMD Ryzen-optimized C and C++ Compilers Improve Performance

AMD followed up its Ryzen processor launch with support for the software development ecosystem by releasing special C and C++ compilers that let you make software that can fully take advantage of the "Zen" micro-architecture. The new AOCC 1.0 C/C++ compilers by AMD are based on LLVM Clang, with "Zen" specific patches. AMD claims AOCC offers improved vectorization and better code generation for "Zen" based CPUs. It also includes a "Zen" optimized linker.

Phoronix benchmarked AOCC against other more common compilers such as GCC 6.3, GCC 7.1, GCC 8, LLVM Clang 4.0, and LLVM Clang 5.0 using a Ryzen 7-1700 eight-core processor powered machine, running on Ubuntu 17.04 Linux, and found that AOCC offers higher performance than GCC in most cases, LLVM Clang in some cases, and marginally higher performance than LLVM Clang in some cases. Find more results in the link below.
Source: Phoronix.org
Add your own comment

25 Comments on AMD Ryzen-optimized C and C++ Compilers Improve Performance

#1
RejZoR
How does it compare to Intel's compiler since most use that only?
Posted on Reply
#2
BiggieShady
RejZoRHow does it compare to Intel's compiler since most use that only?
Who uses icc on linux with ryzen?
Posted on Reply
#3
RejZoR
I'm not asking for Linux specifically, I was asking how specific compilers for Ryzen narrow the gap which Intel's creates on purpose?
Posted on Reply
#4
CoolRogue
Did you somehow read a different article on Phoronix then I did?
PhoronixIn most workloads of the dozens of tests ran, the AOCC 1.0 performance ended up being right in line with upstream Clang 4.0. In a few cases AOCC was faster, but it was generally about three percent or less. In some of the cases where AOCC was faster, it was only to then lose out to the GCC compiler being faster yet. In some benchmarks, the Clang 5.0 development code was also faster than AOCC.
Interesting, how you came to a totally different conclusion.
Posted on Reply
#5
PowerPC
What a non-news. Come back to me when you improve it over 10%, not 1%.
Posted on Reply
#6
R-T-B
They barely improve over what they patched. Not impressive.
Posted on Reply
#7
btarunr
Editor & Senior Moderator
R-T-BThey barely improve over what they patched. Not impressive.
Maybe it exposes some Ryzen-specific features and scheduling?
Posted on Reply
#8
R-T-B
btarunrMaybe it exposes some Ryzen-specific features and scheduling?
I would hope. Those initial results don't show much performance gain unless they basically didn't utilize something similar to that.
Posted on Reply
#9
medi01
Himeno, 5.8% improvement over GCC, what are you complaining about?
Posted on Reply
#10
jmcslob
Any improvement is still improvement.
Posted on Reply
#11
bug
jmcslobAny improvement is still improvement.
Except when it's not an improvement. Read the original article, with a couple of exception, this compiler always falls between clang and gcc. Sometimes clang produces faster code than this, other times gcc beats it. This compiler wins in exactly one benchmark, but at the same time it also finishes last once.
Posted on Reply
#12
jmcslob
Eh.. I don't think they would bother if it didn't improve something...I refer to BTA's post... Maybe Ryzen specific features and scheduling.... more likely for the scheduling.
Posted on Reply
#13
Imsochobo
bugExcept when it's not an improvement. Read the original article, with a couple of exception, this compiler always falls between clang and gcc. Sometimes clang produces faster code than this, other times gcc beats it. This compiler wins in exactly one benchmark, but at the same time it also finishes last once.
it beats the GCC (most common) compiler 90% of the time, and usually by a large margin.
Horrible results I must say :)
Posted on Reply
#14
bug
Imsochoboit beats the GCC (most common) compiler 90% of the time, and usually by a large margin.
Horrible results I must say :)
I went back to the article and counted: it beats gcc in 5 tests and looses to gcc in 3. In 19 other tests, it performs about the same.
In all instances where it wins, Clang also wins, so the win is not because of this compiler. In 2 out of the 3 tests where it looses, it also trails Clang.
Posted on Reply
#15
R-T-B
medi01Himeno, 5.8% improvement over GCC, what are you complaining about?
Imsochoboit beats the GCC (most common) compiler 90% of the time, and usually by a large margin.
Horrible results I must say :)
They didn't patch GCC. It's a patchset to clang, which it fails to improve.
Posted on Reply
#16
TheGuruStud
BiggieShadyWho uses icc on linux with ryzen?
No one...but windows on the other hand...

Guess why no one wants to talk about linux benchmarking? Intel isn't so rosy and you can see the actual IPC of Ryzen.
Posted on Reply
#17
bug
TheGuruStudNo one...but windows on the other hand...

Guess why no one wants to talk about linux benchmarking? Intel isn't so rosy and you can see the actual IPC of Ryzen.
Phoronix (the site that did these benchmarks) does Linux benchmarks exclusively. For 13 years now. I've never seen Intel doing anything worse just because it ran on Linux. In fact, in apps that are actually cross-platform (e.g. Unigine benchmarks) I get almost identical scores between Linux and Windows.
No one's denying Intel may look better when using ICC, but there's no conspiracy where Intel's performance is made to look better than it actually is.

You're implying Windows code is usually compiled using ICC, but I bet you can't post a source for that.
Posted on Reply
#18
TheGuruStud
bugPhoronix (the site that did these benchmarks) does Linux benchmarks exclusively. For 13 years now. I've never seen Intel doing anything worse just because it ran on Linux. In fact, in apps that are actually cross-platform (e.g. Unigine benchmarks) I get almost identical scores between Linux and Windows.
No one's denying Intel may look better when using ICC, but there's no conspiracy where Intel's performance is made to look better than it actually is.

You're implying Windows code is usually compiled using ICC, but I bet you can't post a source for that.
Why do I need a source? LOL. Why would there have been an ICC scandal if no one was using ICC only? I guess we'll just sweep that under the rug, too.

Also, we all know linux is going to be far ahead on optimization. FX series performed quite a bit better on linux.
Posted on Reply
#19
cdawall
where the hell are my stars
TheGuruStudWhy do I need a source? LOL. Why would there have been an ICC scandal if no one was using ICC only? I guess we'll just sweep that under the rug, too.

Also, we all know linux is going to be far ahead on optimization. FX series performed quite a bit better on linux.
I ran a couple Linux tests on the 1800x I was playing with and it didn't change in performance.
Posted on Reply
#20
TheGuruStud
cdawallI ran a couple Linux tests on the 1800x I was playing with and it didn't change in performance.
People cry about single thread. I just looked at single thread on linux and aside from the couple messed up results, they're all pretty good and hanging in there with intel, especially in relation to clock.
Posted on Reply
#21
cdawall
where the hell are my stars
TheGuruStudPeople cry about single thread. I just looked at single thread on linux and aside from the couple messed up results, they're all pretty good and hanging in there with intel, especially in relation to clock.
Single threaded competes with Intel in Windows?
Posted on Reply
#22
bug
TheGuruStudWhy do I need a source? LOL. Why would there have been an ICC scandal if no one was using ICC only? I guess we'll just sweep that under the rug, too.

Also, we all know linux is going to be far ahead on optimization. FX series performed quite a bit better on linux.
If you really want to know what the ICC debacle was about, you go here: en.wikipedia.org/wiki/Intel_C%2B%2B_Compiler#Criticism
And you not it was like 7 years ago. VIA is mentioned in there, that's how old it is.

Also, I've been watching Phoronix for years and I've never mentioned AMD performing any better. Do you do not need to provide sources, because "we all know".
TheGuruStudPeople cry about single thread. I just looked at single thread on linux and aside from the couple messed up results, they're all pretty good and hanging in there with intel, especially in relation to clock.
It's the same on Windows: IPC is about the same, but Ryzen is clocked significantly lower. Thus single thread performance trails.
Posted on Reply
#23
efikkan
RejZoRHow does it compare to Intel's compiler since most use that only?
Most Windows software uses Microsoft's C++ compiler, while most cross-platform software is compiled with GCC or LLVM, including Firefox, Chrome, VLC, ffmpeg, some game engines, etc.

Generally both GCC and LLVM are better at optimizing code than Microsoft's compiler.
btarunrMaybe it exposes some Ryzen-specific features and scheduling?
No, not scheduling.
Compiler optimizations applies a set of generic optimizations, and sometimes a few CPU specific ones. Zen doesn't seem to offer a lot of new features vs. the competition.
Posted on Reply
#24
biffzinker
A fair amount of older software complied with ICC still exists.

Running ICC_Patch.exe shows:
Posted on Reply
Add your own comment