Live data from Hacker News

What's wrong with Intel, and how to fix it: Former principal engineer unloads

pcworld.com

31–40 of 117 posts

Re: What's wrong with Intel, and how to fix it: Former principal engineer unloads

#31
post #5

So Linus, and this guy is saying AVX512 was a bad idea. "“The state of software out there is really not favoring going larger vectors,” Piednoel said in the video. “In fact, you can see clearly in Cinebench for example—that is not one of my favorite benchmarks, especially for a laptop where it doesn’t make any sense—but you can see that AMD is winning the battle of throughput. It’s because they have more cores and th…

I've used it a fair bit, but it's too exotic to show up on enough machines to really focus on. It's not just a trick to make benchmarks run faster; that's an idiotic conspiracy theory. It's just that the release of AVX-512 happens to coincide with the 10nm disaster.

Probably the biggest problem is that new Intel ISAs often are associated with downclocking (this isn't new with AVX-512 - AVX2 had it as well). Usually these problems were short-lived, but with 10nm getting stalled, they've stuck around longer. This is pure poison if like me, you generally write libraries. It's scary to look at some 60% speedup you might get from some neat rewrite for your bit of the task, but then wonder whether you're going to make the rest of the task several percent slower due to a downclock in what might only be 20% of the time. So it's hard to make the call to use AVX-512 in its early stages unless you control the whole core.

Linus thinks that everything is either a kernel or a gcc execution, and happily disregards anything that doesn't fit his own workloads. AVX-512 can do Good Things for a disparate range of stuff - in-memory databases, regex/string matching, bioinformatics, CPU intensive network workloads, parsing and lexing as well as the usual scientific computing and AI workloads (many of the latter are also pretty good on GPGPU).

Re: What's wrong with Intel, and how to fix it: Former principal engineer unloads

#32

This is purely a total outsider's opinion, so I caveat that and please don't get all offended if I'm totally wrong. Sometimes it's really difficult to tell the difference between a crackpot theorist and a good equities analyst. Watching this guy's video, it's hard to tell which he comes off as more. He's just coherent and convincing enough that as an outsider I could believe his collection of observations. But the pr…

Francois is a smart guy, but there's a range of opinions on the matters he raises. We argue a good deal on Twitter ("constructive confrontation" between former Intel Principal Engineers :-) ). He put together the video pretty quickly so don't dismiss it just for lack of polish. Personally, I argue with him a lot on AVX-512. I think AVX-512 is a Good Thing (or will be shortly - the first instantiation in Skylake Serve…

Oh, I should note that an interest in large SIMD is not confined to Intel - the ARM world is (slowly) heading towards SVE (or so my friends from that quarter assure me). So it's not just a partisan pro-Intel or pro-x86 thing on my part.

Re: What's wrong with Intel, and how to fix it: Former principal engineer unloads

#33
post #8

From the article: Piednoel didn’t spare words for Intel’s culture, which he said has changed drastically and promotes MBAs over those with technical prowess. The current CEO is a finance / MBA type, so it's no surprise that the current culture favors that. In Intel's defense, the previous CEO was a process engineer. But, unfortunately, he couldn't keep his weiner in his pants. He also was probably the wrong choice as…

As somebody noted, when you have cornered a large part of the market, you don't feel as much technical pressure, and success in selling becomes key. So sales and MBAs start to run the show, because it makes the business sense, and while doing so risk to lose the sight of the technological advances that made the dominant position possible. Intel's founder, Andy Grove, used to say: "Only the paranoid survive". (He pers…

[deleted]

Re: What's wrong with Intel, and how to fix it: Former principal engineer unloads

#34
post #24

I've always wondered, if I compile an application and don't specify the architecture as explicitly having AVX, just say x86 64bit, will alternate code paths be in the binary for processors with AVX? Or alternatively, if I do specify AVX support on the command line, then what happens if the binary runs on a CPU without AVX? The reason I ask is I use commercial tools for circuit simulation, and they run on a wide range…

Depends on the compiler. Gcc compiles to the lowest common denominator while icc offers "Processor dispatch technology performs a check at execution time to determine which processor the application is running on and use the most suitable code path for that processor. Compatible, non-Intel processors will take the default optimized code path."

For HPC they will always compile to use the full set of instructions and see how it performs. For some software there will be explicit checks and loading the right compiled code(compression, video effects etc). On a desktop most things are compiled for the minimum processor though. The CPU might still be able to use its new features like wide registers of the instructions are in just the right order.

If you run something with instructions your processor doesn't have it will crash.

Re: What's wrong with Intel, and how to fix it: Former principal engineer unloads

#35

Earlier quoted context omitted.

He's completely right. Hyperthreading is all about putting idle functional units to work when you can't extract instruction level parallelism from single threaded code. His claim is that Intel processors did better and thus only got a small relative boost from HT (IIRC it used to be 10%, maybe it's 20% now). If your processor does poorer at ILP extraction, you get relatively more out of HT. This all agree with the be…

> This all agree with the benchmarks in which Intel still generally is ahead on single thread performance. citation needed. benchmarks that I've seen [0][1] there is not that big of difference between the two. [0] https://www.anandtech.com/show/15578/cloud-clash-amazon-grav... ZEN1 [1] https://www.anandtech.com/show/14694/amd-rome-epyc-2nd-gen/9 ZEN2

https://browser.geekbench.com/processor-benchmarks

Even normalizing for the frequency isn't enough to explain the difference

Re: What's wrong with Intel, and how to fix it: Former principal engineer unloads

#36

Earlier quoted context omitted.

I'm sure AVX-512 is wonderful and you can easily produce examples where it makes loops go N times faster. That unfortunately is missing the point. Microprocessors implementation is an extremely careful balance and effectively everything is a trade off. The area, power, and complexity of features comes at a non-zero cost to code that doesn't use it. The fact that AVX-512 isn't on every processor AND the performance be…

I'm not missing the point as I was responding to whether AVX-512 is useful in practice. It is. It is some badly designed extensions where the earlier ones were great: it's arguably better than the earlier ones. Now adoption has been poor and there is a chicken-and-egg effect as you point out, but that's separate from the question of whether AVX-512 is useful in practice. It is. The point about tradeoffs is well taken…

Sorry if I misunderstood your point.

> It's not like Intel (or any other vendor) is rolling back progress

Performance doesn't stand still so even if they are improving, they might have improved more having spend the AVX-512 on something else. And most definitely, larger vector unit does cost you somewhere else.

Re: What's wrong with Intel, and how to fix it: Former principal engineer unloads

#37
post #24

I've always wondered, if I compile an application and don't specify the architecture as explicitly having AVX, just say x86 64bit, will alternate code paths be in the binary for processors with AVX? Or alternatively, if I do specify AVX support on the command line, then what happens if the binary runs on a CPU without AVX? The reason I ask is I use commercial tools for circuit simulation, and they run on a wide range…

By default, most compilers will target some old processor with basic features, like perhaps SSE2. If you up the processor to something with AVX2, for example, you’ll get those instructions but without anything else you will SIGILL on older computers.

Now, if you want to be smarter there’s a number of things you can do, some of which have compiler or OS support. You could, in your program, manually detect these features (cpuid) and then use them if available. You could have entire functions that are specialized for one architecture and pick the right one at runtime; some compilers can do this for you “transparently” with custom attributes. If the dynamic linker supports it, you could have it pick the right version of the symbol for your processor and your program is otherwise none the wiser which one gets selected; it just has to have the appropriate versions of functions. And at the extreme end you can compile entirely separate versions of your program for different base processors; on Darwin you can have a universal binary recognized by the kernel itself as supposing x86_64 (basic 64-bit features) and x86_64h (assume Haswell and above) and the right one will get loaded based on your hardware.

Re: What's wrong with Intel, and how to fix it: Former principal engineer unloads

#38
post #26
post #24

I've always wondered, if I compile an application and don't specify the architecture as explicitly having AVX, just say x86 64bit, will alternate code paths be in the binary for processors with AVX? Or alternatively, if I do specify AVX support on the command line, then what happens if the binary runs on a CPU without AVX? The reason I ask is I use commercial tools for circuit simulation, and they run on a wide range…

Wondered the same. I'm also curious if Apple's Accelerate framework uses AVX underneath when available. Sounds like an OK compromise if it's the case: maybe the compiler will miss a few opportunities to optimize some of your loops, but if you are aware of Accelerate you will use it in your audio/video processing anyway, which should be a win.

It does indeed. And NEON on ARM, of course.

Re: What's wrong with Intel, and how to fix it: Former principal engineer unloads

#39

Earlier quoted context omitted.

No, if your CPU is one of the worst in single-threaded performance, then hyper-threading will look like the best thing since sliced bread on it, relative to its baseline performance. Hyperthreading will seem to double your performance, because so much of your CPU is otherwise idle. But the more you improve your scheduling, the worse hyperthreading will look, again relative to your singlethread performance.

But poor single-threaded performance doesn't imply that the core is sitting idle. It may well be running as fast as it possibly can and using all the shared components of SMT leaving nothing for the other thread to use. In the same way the single-core performance may be really good yet everything shared by SMT is still only utilized to half its potential so the 2nd thread runs almost as fast as the first.

Yes.

I think the point of the article was more that people don't understand where HT/virtual SMT gets its speedup from.

Re: What's wrong with Intel, and how to fix it: Former principal engineer unloads

#40

> Ryzen’s “Hyper-Threading” looked good because of poor single-threaded performance So if my CPU is one of the worst in single-threaded performance, then multi-threaded performance will be the best? That make no sense and this guy doesn't seem like he knows what he is talking about..

No, if your CPU is one of the worst in single-threaded performance, then hyper-threading will look like the best thing since sliced bread on it, relative to its baseline performance. Hyperthreading will seem to double your performance, because so much of your CPU is otherwise idle. But the more you improve your scheduling, the worse hyperthreading will look, again relative to your singlethread performance.

That makes a lot of sense in theory, but Pentium 4 HT was a real evidence disagreeing with it.

Netburst have had horrible IPC, so in theory HT should've brought big improvements, yet in practice it didn't bring significantly more relative performance improvement than HT implementations of later Intel cores with much better IPC.

Adding to that SMT in Zen cores have brings slightly better relative performance compared to Intel cores (and Zen doesn't have as terrible IPC as Netburst), I think SMT implementation is not as trivial as we thought and before and its implementation indeed matters.

Post reply on HN