|
Intel "cripples" competitor
|
|
Topic Started: Jan 4 2010, 07:34 AM (172 Views)
|
|
George K
|
Jan 4 2010, 07:34 AM
Post #1
|
- Posts:
- 88,966
- Group:
- Members
- Member
- #249
- Joined:
- August 4, 2005
|
Interesting (at least to me). Intel has, supposedly, the best compiler out there. Evidently, there's code in the compiler to deliberately impair performance on non-Intel (AMD) chips.
http://www.agner.org/optimize/blog/read.php?i=49
- Quote:
-
Will Intel be forced to remove the "cripple AMD" function from their compiler?
Many software programmers consider Intel's compiler the best optimizing compiler on the market, and it is often the preferred compiler for the most critical applications. Likewise, Intel is supplying a lot of highly optimized function libraries for many different technical and scientific applications. In many cases, there are no good alternatives to Intel's function libraries.
Unfortunately, software compiled with the Intel compiler or the Intel function libraries has inferior performance on AMD and VIA processors. The reason is that the compiler or library can make multiple versions of a piece of code, each optimized for a certain processor and instruction set, for example SSE2, SSE3, etc. The system includes a function that detects which type of CPU it is running on and chooses the optimal code path for that CPU. This is called a CPU dispatcher. However, the Intel CPU dispatcher does not only check which instruction set is supported by the CPU, it also checks the vendor ID string. If the vendor string says "GenuineIntel" then it uses the optimal code path. If the CPU is not from Intel then, in most cases, it will run the slowest possible version of the code, even if the CPU is fully compatible with a better version.
I have complained about this behavior for years, and so have many others, but Intel have refused to change their CPU dispatcher. If Intel had advertised their compiler as compatible with Intel processors only, then there would probably be no complaints. The problem is that they are trying to hide what they are doing. Many software developers think that the compiler is compatible with AMD processors, and in fact it is, but unbeknownst to the programmer it puts in a biased CPU dispatcher that chooses an inferior code path whenever it is running on a non-Intel processor. If programmers knew this fact they would probably use another compiler. Who wants to sell a piece of software that doesn't work well on AMD processors?
Because of their size, Intel can afford to put more money into their compiler than other CPU vendors can. The Intel compiler is relatively cheap, it has superior performance, and the support is excellent. Selling such a compiler is certainly not a profitable business in itself, but it is obviously intended as a way of supporting Intel's microprocessors. There would be no point in adding new advanced instructions to the microprocessors if there were no tools to use these instructions. AMD is also making a compiler, but the current version supports only Linux, not Windows.
Various people have raised suspicion that the biased CPU dispatching has made its way into common benchmark programs (link link). This is a serious issue indeed. We know that many customers base their buying decision on published benchmark results, and a biased benchmark means an unfair market advantage worth billions of dollars.
|
A guide to GKSR: Click
"Now look here, you Baltic gas passer... " - Mik, 6/14/08
Nothing is as effective as homeopathy.
I'd rather listen to an hour of Abba than an hour of The Beatles. - Klaus, 4/29/18
|
| |
|
Aqua Letifer
|
Jan 4 2010, 07:41 AM
Post #2
|
- Posts:
- 45,862
- Group:
- Members
- Member
- #262
- Joined:
- September 22, 2005
|
|
|
I cite irreconcilable differences.
|
| |
|
John D'Oh
|
Jan 4 2010, 08:03 AM
Post #3
|
- Posts:
- 53,798
- Group:
- Members
- Member
- #276
- Joined:
- October 19, 2005
|
Intel have struggled mightily to compete with AMD on a performance/price issue for years. I think it's a bit less critical than it used to be, since gaming isn't quite as hardware-challenging as it used to be, possibly because so much software is written to also run on consoles.
If you can't compete fairly, there's only really one alternative.
|
|
What do you mean "we", have you got a mouse in your pocket?
|
| |
|
Axtremus
|
Jan 4 2010, 09:49 AM
Post #4
|
- Posts:
- 35,678
- Group:
- Members
- Member
- #15
- Joined:
- April 18, 2005
|
Dude, of course an Intel compiler will optimize specifically for Intel when it "optimizes." You "optimize" for very specific things, and it's very common that the "optimization" for one very specific thing f* it up for everything else that is not that specific thing. That is the very nature of optimization.
Don't like Intel's compiler? Go use some other compilers.
|
|
|
| |
|
Mark
|
Jan 4 2010, 09:59 AM
Post #5
|
- Posts:
- 24,191
- Group:
- Members
- Member
- #192
- Joined:
- May 3, 2005
|
- Axtremus
- Jan 4 2010, 09:49 AM
Dude, of course an Intel compiler will optimize specifically for Intel when it "optimizes." You "optimize" for very specific things, and it's very common that the "optimization" for one very specific thing f* it up for everything else that is not that specific thing. That is the very nature of optimization.
Don't like Intel's compiler? Go use some other compilers. +1
|
___.___ (_]===* o 0 When I see an adult on a bicycle, I do not despair for the future of the human race. H.G. Wells
|
| |
|
Aqua Letifer
|
Jan 4 2010, 10:01 AM
Post #6
|
- Posts:
- 45,862
- Group:
- Members
- Member
- #262
- Joined:
- September 22, 2005
|
- Axtremus
- Jan 4 2010, 09:49 AM
Dude, of course an Intel compiler will optimize specifically for Intel when it "optimizes." You "optimize" for very specific things, and it's very common that the "optimization" for one very specific thing f* it up for everything else that is not that specific thing. That is the very nature of optimization.
Don't like Intel's compiler? Go use some other compilers.
- Quote:
-
If the vendor string says "GenuineIntel" then it uses the optimal code path. If the CPU is not from Intel then, in most cases, it will run the slowest possible version of the code, even if the CPU is fully compatible with a better version.
|
|
I cite irreconcilable differences.
|
| |