4 ms·
The Intel compiler has been doing function multi-versioning for many years now. If you annotate a function for multi-versioning the compiler will build several
by giantrobot 6y ago
The Intel compiler has been doing function multi-versioning for many years now. If you annotate a function for multi-versioning the compiler will build several optimized versions of it, including a generic version, running the most optimal one for the host CPU based on a CPUID check.
Intel purposefully misidentifies AMD chips with the CPUID check so always runs the generic version of a function on AMD. It does this even if the host AMD chip supports 100% of the features as some Intel CPU that runs the optimized version.
So for any benchmark compiled with ICC any results for AMD chips are meaningless. You can only compare Intel to Intel or AMD to AMD. Compiling that same code without FMV so each CPU runs the exact same instructions will see the difference between them narrow or reverse.
Intel is free to optimize the shit out of their compiler but it's bullshit that they also actively sabotage AMD chips at the same time. It's very much a vendor lock-in tactic.
- ksec 6y ago>Intel is free to optimize the shit out of their compiler but it's bullshit that they also actively sabotage AMD chips at the same time. It's very much a vendor lock-in tactic. I would argue they actively make sure their compiler optimisation works only on Intel CPU. Which is actually a fair deal. Those optimisation work isn't free. It is BS tactics? Yes. Do I Like it ? No. It is wrong to do it? That is up to debate. The point is using an Intel Compiler on Non Intel CPU comparison makes the benchmarks pretty much useless. Something like GCC / LLVM should have been used to be vendor neutral.
- giantrobot 6y agoI don't find fault in Intel using insider knowledge to make their compilers work better on their own CPUs. If they make optimizations they know work on their CPUs but can't guarantee AMD CPUs will work exactly the same, I also don't find fault in them only supporting their CPUs with those optimizations. Where I find fault is bullshit marketing saying their CPUs are x% faster than AMD and then point to code compiled with their compiler. I'd be fine if they wanted to say ICC produced faster results than GCC or LLVM. There's no problem selling your CPU with your compiler to get the best performance possible. Instead they're saying our chips are faster than AMD. Full stop. Once you wade into the bullshit you see they're using ICC with FMV enabled. This means even if you know what compiler flags they used you still can't be sure what code is running on each CPU. It's bullshit marketing and I think it needs to be called out whenever it happens.