Agner`s CPU blog

Software optimization resources | E-mail subscription to this blog | www.agner.org

Intel's
Author: Agner Fog Date: 2010-01-04 03:28
inhahe wrote:
I think it's arguable whether or not Intel crippled AMD via an "affirmative engineering or design action" as opposed to a "failure to act" (as distinguished in the settlement).
Checking for vendor ID is an affirmative action. The grey area is whether they are optimizing for specific CPU models or for specific instruction sets. There is only one case where they distinguish between different CPU models that have the same instruction set, namely Pentium 4 versus Pentium M. In most cases, however, they use the same code path for both, or the two paths are identical or almost identical. The distinction may be unimportant from a technical point of view, but it may give Intel a legal excuse for claiming that they are optimizing for specific CPU models.
I doubt Intel can be required to optimize specifically for a CPU that's not theirs
The settlement doesn't require that.
Another reason it's a gray area is that it's possible that the code path optimizations they took were obvious and would likely apply to any modern x86 CPU (though the fact that AMD and Intel are the only two players in the game sort of makes it beg the question),
Most optimizations are indeed obvious applications of the available instruction set. If you have SSE2 you can do four additions in one instruction. That's an obvious thing to do regardless of CPU model. Don't forget there is a third player, VIA. Their chips are fast enough for being relevant here.
given the small excerpt of the settlement shown, it seems possible to me that what they *actually* did is make something up that will sate AMD's lawyers while at the same time leaving the door open for them to either continue the same practice, or cease the practice (if it's too obviously anti-competitive or if they explicitly said they'd cease it elsewhere) but instate similar and/or related practices in the future, on account of the fact that those practices can easily be classified as "failures to act." [...] However, if the decisions for how and when to use SSE instructions are intricately tied in with the rest of their code path algorithm (and possibly rely on internal structure of the CPU design), then the caveats I brought up earlier still apply.
Yes, they will probably be able to claim that. From a merely technical perspective, I think it's a bad idea to make different code paths for two processors that support the same instruction set based on whether a particular instruction runs a little faster on one than on the other. If you consider the time it takes to develop a complete program plus the time it takes to market it, then it is likely that the processors you optimized for will be obsolete for your most demanding customers before the time your software peaks on the market. My advise would certainly be to optimize for the newest processor, but make sure you maintain compatibility with older processors.

But of course Intel compiler engineers are not obliged to listen to my advice if doing otherwise enables them to harm their competitors.

In any case, whether not supporting optimizations on AMD's CPUs was an affirmative design decision to undermine AMD machines or merely a failure to act (to benefit AMD machines), either way, it's clearly wrong for them to publish benchmarks to OEMs, etc. comparing AMD CPUs to Intel CPUs using their own compiler that specifically optimizes for Intel CPUs (based on Vendor ID no less!, but either way) and not for AMD CPUs. It's misleading, and according to the UTC, even when specifically confronted with the issue they would habitually either mislead or directly lie about the cause for the speed difference and whether it could be solved. So *that's* the part that's really devious, and I can see why the FTC sued them. I *hate* companies like that. Incidentally, though, all companies are companies like that.
Fortunately, not all companies are like that. I am sure this case has harmed Intel's reputation. They can be damn sure that their next compiler version will be thoroughly scrutinized. Hopefully, they will take their reputation into account when they design the next compiler version and function libraries.
 
thread Intel's "cripple AMD" function - Agner Fog - 2009-12-30
reply Intel's - Felid - 2010-01-01
replythread Intel's "cripple AMD" function - inhahe - 2010-01-03
last replythread Intel's - Agner Fog - 2010-01-04
replythread Intel's compiler is the best? - Weber - 2010-01-04
last reply Intel's compiler is the best? - Agner Fog - 2010-01-09
last reply Intel article - Agner Fog - 2010-01-22
replythread Web Parallels - Jeff Craig - 2010-01-04
last replythread More Parallels - Agner Fog - 2010-01-23
reply Early Examples - Yuhong Bao - 2010-02-01
last reply More Parallels - Yuhong Bao - 2010-02-20
replythread New CPUID manipulation program - Agner Fog - 2010-01-22
replythread CPUID manipulation through virtualization - Andrew Lofthouse - 2010-08-16
reply CPUID manipulation through virtualization - Agner Fog - 2010-08-16
replythread CPUID manipulation program for AMD - Agner - 2010-10-01
last replythread CPUID manipulation program for AMD - Ralf - 2012-01-30
last reply CPUID manipulation program for AMD - Agner - 2012-01-31
last reply CPUID manipulation through virtualization - akshay - 2015-07-08
last replythread New CPUID manipulation program - AVK - 2011-02-09
last reply New CPUID manipulation program - Agner - 2011-02-09
reply AMD Blog on compilers/benchmarch - margaret lewis - 2010-02-01
replythread New version is still crippling Intel's competitors - Agner Fog - 2010-06-29
last reply New version is still crippling Intel's competitors - granyte - 2014-09-16
reply Out of court settlement with FTC - Agner Fog - 2010-08-05
reply AMD library contains Intel's cripple-AMD function! - Agner Fog - 2010-08-11
replythread Common math programs are affected - Agner Fog - 2010-08-20
last reply Preliminary test results for Matlab - Agner Fog - 2010-09-16
reply Overview of CPU dispatching in Intel software - Agner Fog - 2010-08-23
replythread New Intel compiler version - still the same! - Agner Fog - 2010-09-22
reply GCC now has support for function dispatch - Jean-Luc - 2010-09-27
replythread Intel compiler question - James Russell - 2010-10-11
last reply Intel compiler question - Agner - 2010-10-12
reply New Intel compiler version - still the same! - Don Kretsch - 2010-11-29
last replythread New Intel compiler version - still the same! - Daniel - 2011-12-23
last replythread New Intel compiler version - still the same! - Agner - 2011-12-25
last replythread New Intel compiler version - still the same! - Stanley Theamer - 2012-02-12
last reply New Intel compiler version - still the same! - Stretcho - 2012-03-14
last replythread Still no library that is optimal on all processors - Agner - 2012-04-18
replythread Still no library that is optimal on all processors - Guest - 2012-05-17
last replythread Still no library that is optimal on all processors - Agner - 2012-05-17
last replythread Still no library that is optimal on all processors - David - 2012-05-19
last replythread Still no library that is optimal on all processors - Agner - 2012-05-20
last reply Still no library that is optimal on all processors - Bubba_Hotepp - 2012-06-16
last replythread Still no library that is optimal on all processors - Marat Dukhan - 2013-05-20
last reply Still no library that is optimal on all processors - Agner - 2013-05-21