Re:Intel i7 loop performance anomaly
by dman on Tuesday December 03, 2013 @03:12PM
(#6842843)
With Atom switching to OOO are there any mainstream processors left that are in order ?
[ Parent
| on HN ]
Mainstream desktop processors? Not really. But there's tons in the embedded and mobile worlds. (All the ARM A7 cores, for instance.)
In order comes back during strange times. Sun switched back to in-order for Niagara, for instance.
GPUs are generally in order as far as I know - it only does OOO optimization at compile time. In general I like high performance programming much more using CUDA than on CPU - the performance is usually much more predictable and as such the time investment tends to correlate pretty well with performance improvements.
Re:Intel i7 loop performance anomaly
by seanmcdirmid on Tuesday December 03, 2013 @07:22PM
(#6844202)
GPUs are not only out of order but extremely synchronous in general with a restricted memory model that prevents memory stalls. Not only that, but multiple cores share the same control unit, which is why coherent branching across the cores is such a big deal (they all have to branch the same way or both branches have to be executed...).
Re:Intel i7 loop performance anomaly
by seanmcdirmid on Tuesday December 03, 2013 @09:44PM
(#6844659)
Edit: I meant to say "GPUs are not only in order", they are definitely not out of order.
Re:Intel i7 loop performance anomaly
by m_mueller on Wednesday December 04, 2013 @02:21AM
(#6845510)
Coherent branching is also important on CPU to make use of your vector units, on GPU the payoff is just much higher. Furthermore you never have to do silly things like loop unrolling for vector unit optimization since you write all kernels as if they were executed scalar. Once coherent branching is not possible anymore you're usually dealing with random access over your data - even then the higher random access memory bandwidth can get you a speedup over one CPU socket, compared to dual socket you're about even.
Bottom line is you just have to think about GPUs in a slightly different way - they do have disadvantages (limited register/cache/memory per thread since you need so many of them), but things like branching aren't that big of a deal.
Many ARM processors are in order. Also Itanium.
Itanium may be in order, but if we're going for ease-of-reasoning, seek your fortunes elsewhere. The memory model gave me fits.