And ban the Apple compiler too
![]()
The only difference is the Apple compiler is use in every iOs app.
While ICC is known as the SPEC compiler. Good at SPEC runs but very little used in commercial or open source applications.
And ban the Apple compiler too
![]()
And ban the Apple compiler too
![]()
I am not talking about compiler optimizations Apple would have to do or not. I am saying if you want to compare the microarchitectures you would have to use the same compiler with the same options. The options used by Anandtech for different compilers enable vastly different optimizations.
Hi guys, just dropping by to respond to a couple of comments.
and the Intel settings, though a bit more complex, are what they believe are best for SPEC CPU.
Hi guys, just dropping by to respond to a couple of comments.
To be clear here, we're well aware of the pros and cons of SPEC CPU 2006, which is why there was a fairly long preamble to that section describing them. SPEC is not perfect and should not be the only benchmark you ever listen to. However among cross-platform benchmarks it's very unique in its capabilities and a powerful tool as well.
In any case, that SPEC CPU is a "system's processor, memory subsystem and compiler" benchmark is an intentional aspect of its design. The traditional way to run SPEC CPU is to pair it up with the fastest compiler with the most aggressive settings you can get away with, to give the system every possibility opportunity to produce the best possible score. This is how we've chosen to use SPEC CPU as well, in accordance with how it's typically used.
The issue with compilers is that it's impossible to take them out of the equation. Even if one uses the same compiler for multiple architecture, you are now benchmarking how well a compiler optimizes for a specific architecture, and there are some big gaps there. In some ways it's definitely better, but in other ways it's worse.
Ultimately traditional wisdom is that it's better to admit that the compiler is part of the test and that it's another way to optimize execution of the benchmark, rather than trying (and failing) to remove it from the equation. It's imperfect for sure, but it's the best option available.
(BTW, if I had to use a car analogy here, SPEC CPU would be F1 racing)
As for the specific setups and flags we used, those are the settings that were recommended to us. -Ofast is essentially the fastest way to go on XCode/LLVM, and the Intel settings, though a bit more complex, are what they believe are best for SPEC CPU. We wanted to make this as typical as possible for a SPEC CPU run, and that included using the best settings available.
"They" made you compare multi threaded Intel code versus single
threaded Apple code.
Especially for 462.libquantum: The score becomes 16+ times higher if
you have 16 times the cores at a higher frequency:
https://www.spec.org/cpu2006/results/res2015q4/cpu2006-20151130-38170.html
Have to agree. If you're trying to get an apples to apples CPU comparison, I'd argue everything needs to be apples to apples from a compiler perspective.
The more interesting thing is what is valid for a platform comparison? As people have rightly pointed out, ICC is not that popular for client software but Apple's compiler is used, well...for pretty much everything on iOS.
This is a good catch. So we throw out the 462.libquantum results in this particular test.
BTW, I am curious, what is your view of the best CPU benchmark today? How can we objectively get a good read on how CPUs like SKL and Twister compare? Seems like an extremely difficult problem. Geekbench is an attempt to do this, but a number of experts (i.e. David Kanter, Linus Torvalds) seem to think it is not useful in this way yet.
Thanks.
It sounds like your problem is more with libquantum than AT's settings? They ran each platform as fast as it would go, and Apple's compiler is not as good, it would seem."They" made you compare multi threaded Intel code versus single
threaded Apple code.
Especially for 462.libquantum: The score becomes 16+ times higher if
you have 16 times the cores at a higher frequency:
https://www.spec.org/cpu2006/results/res2015q4/cpu2006-20151130-38170.html
I personally think console emulators would make good CPU benches, especially ones that emulate complex video subsystems in software. I am biased in this opinion, though. And I doubt I'd get sites on board with this.
I think you are right that console emulators would be a very good measure of CPU performance.
Have you considered producing such a benchmark based on your work, particularly since you have produced arguably one of the best console emulators around for the mobile space?
The problem with emulators is then you've just created a proxy test for JIT compiler performance. Which is not to say that they aren't useful as an application benchmark, just that it's probably not a good architecture benchmark.I think you are right that console emulators would be a very good measure of CPU performance.
Have you considered producing such a benchmark based on your work, particularly since you have produced arguably one of the best console emulators around for the mobile space?
Nonsense. Look at the ridiculous selection of compiler options and you know why Intel wins.
Such a test has to be performed with the same compiler using the very same options. (e.g. gcc)
The only difference is the Apple compiler is use in every iOs app.
While ICC is known as the SPEC compiler. Good at SPEC runs but very little used in commercial or open source applications.
So which architecture are you going to leave out? You do realize that GCC != GCC, right? GCC will end up doing different optimizations depending on the architecture it is compiling for.
As for the specific setups and flags we used, those are the settings that were recommended to us. -Ofast is essentially the fastest way to go on XCode/LLVM, and the Intel settings, though a bit more complex, are what they believe are best for SPEC CPU. We wanted to make this as typical as possible for a SPEC CPU run, and that included using the best settings available.