I still hope they'll open source it one day. I never really got to use it in anger, and I bet that when you use PGO all the compilers end up pretty similar in the "real world" but it would be a shame for all the work to be lost
Vectorizing by hand is not very difficult, but even for moderately complex loops it gets tiresome very quickly. And that is before considering loop peeling for vector alignment, adding both vector and scalar remainder loops and loop multiversioning.
This is really something you want your compiler to take care of. And that indeed is something icc excels at. You just don't have to care about code size, because that _will_ grow, big time.
And no, Intel's new LLVM-based icx compiler is not at the same level yet as the (now 'classic') icc compiler.
It's still better, but the gap's closed quite a bit in my experience.
It also still seems better than clang/gcc at working out whether inlining is worth it or not.
But it's also still quite buggy (it used to be as well, the number of work-arounds/#ifdefs needed to get some cross-platform applications built used to be quite annoying. In some cases, we couldn't even use exactly the same version of the compiler per platform, we had to split versions per platform!).
You'd think that if anyone had motivation to open source a high performance compiler it would be the company making the chips. Anyone know why they don't?
I think, also based on the previous comment, it is still better at some things than the open source alternatives. If you really need it for the specific situations it excels in, I guess it makes sense to pay for it.
There's nothing preventing you from using their compiler with other people's chips right now.
Presumably intel only optimized for intel. Wouldn't the best case scenario be if everyone copied the intel optimizations leaving other chips in the dust?
> There's nothing preventing you from using their compiler with other people's chips right now.
Using an other ISA than x86 is something that prevents this compiler from being used for other chips.
The intermediate representation on which these optimizations are made is probably not related to x86.
Also, such compilers usually use models of machine resources and latencies to perform better scheduling.
But latency and resource models are micro-architecture dependent, so using it on a chip with the same architecture but different micro-architecture would produce non-optimal scheduling
If it was open source then the optimisations would be swiftly taken and adapted to other people's chips and Intel chips would no longer have an advantage.