Slashdot Mirror


AMD Alleges Intel Compilers Create Slower AMD Code

edxwelch writes "In AMD's recient anti-trust lawsuit AMD have examined the Intel compiler and found that it deliberatly runs code slower when it detects that the processor is an AMD. "To achieve this, Intel designed the compiler to compile code along several alternate code paths. ... By design, the code paths were not created equally. If the program detects a "Genuine Intel" microprocessor, it executes a fully optimized code path and operates with the maximum efficiency. However, if the program detects an "Authentic AMD" microprocessor, it executes a different code path that will degrade the program's performance or cause it to crash.""

56 of 912 comments (clear)

  1. Simply ludicrous by DeadSea · · Score: 5, Funny

    That is an outragous claim! No company would stoop so low. Why, that would be like claiming that Microsoft configured its servers to give broken HTML to browsers other than Internet Explorer. That would be like saying that Apple gave away free MP3s that work in the Ipod but that crash other music players. That would be like saying that Adobe publishes pdfs that b0rk XPDF.

    Anybody can see that this claim is ludicrous and that things like this just don't happen. (but I hope I'm not giving anybody any ideas.)

    Type your currency conversion into a free form text box

    1. Re:Simply ludicrous by cwebb1977 · · Score: 5, Funny

      Hey, Microsoft doesn't even know the difference between correct and broken HTML!

      --
      www.weberseite.at
    2. Re:Simply ludicrous by RootsLINUX · · Score: 5, Interesting

      Well, I don't think they would make such a claim without at least some sort of evidence. And we all know that Intel is a corporation that doesn't like to play nice with the other kids. During my senior year of undergrad my computer architecture professor consistently refered to Intel as "the evil empire", so who knows. I'd like to see AMD present some hard evidence though.

      --
      Hero of Allacrost, a FOSS RPG for *NIX/*BSD/OS X/Win
    3. Re:Simply ludicrous by ssyladin · · Score: 5, Funny

      Neither does Slashdot.

    4. Re:Simply ludicrous by wo1verin3 · · Score: 5, Funny

      >> Well, I don't think they would make such a claim
      >> without at least some sort of evidence

      We agree.

      - darl

    5. Re:Simply ludicrous by codeguy007 · · Score: 4, Informative

      This won't be hard to prove. Pretty much anyone who wants fast 32Bit code uses the Intel Compilers, even on AMD. However it is a known fact that you need to force the compiler to use optimizations if an Intel Processor is not detected.

    6. Re:Simply ludicrous by team99parody · · Score: 5, Informative

      If you're too lazy to read the postings here shows such evidence.

      It's an example showing the poor assembly-language code when it detects an AMD chip. And notice in that posting that the complier is perfectly capabile of producing efficient AMD code as well. It's sad but funny that the workaround to produce fast code for the AMD chip is to add the string "__intel_cpu_indicator=-512".

    7. Re:Simply ludicrous by yomahz · · Score: 5, Interesting

      Yes but, they knew enough to block W3C's validator from their site:

      http://validator.w3.org/check?uri=http%3A%2F%2Fwww .slashdot.org%2F

      --
      "A mind is a terrible thing to taste."
    8. Re:Simply ludicrous by HunterZ · · Score: 5, Funny
      --
      Arguing about vi versus Emacs is like arguing whether it's better to make fire by rubbing sticks or banging rocks.
    9. Re:Simply ludicrous by 10Ghz · · Score: 4, Insightful
      Pretty much anyone who wants fast 32Bit code uses the Intel Compilers, even on AMD


      yes, ICC generates faster code even on AMD-CPU's than GCC (for example) does. But that's not the point AMD is making. AMD claims that ICC detects whether the CPU is an AMD-CPU. If it is, it generates slower executables, even though there's no real technical reason to do so. It does so merely to put AMD at a disadvantage. Yes, the code might still be faster than GCC-generated code (you could say that it tells quite a bit about GCC as well....), but it's still crippled when compared to Intel-code.
      --
      Lesbian Nazi Hookers Abducted by UFOs and Forced Into Weight Loss Programs - -all next week on Town Talk.
    10. Re:Simply ludicrous by iPatch · · Score: 5, Informative

      A good investigation can be found at http://www.swallowtail.org/naughty-intel.html

  2. CmdrTaco == automated script by dame4jc · · Score: 4, Funny

    if ($submission) {
    $gotaco = "submit";
    $spellcheck = "no";
    $dupecheck = "definitelynot";
    } else {
    // I got nothing. *shrugs*
    }

    1. Re:CmdrTaco == automated script by Andrewkov · · Score: 5, Funny

      Hey, don't blame Taco, maybe the Intel perl compiler insterts random spelling errors into text strings!

  3. It's true--and they know about it by Eponymous+Cowboy · · Score: 5, Interesting

    I noticed this problem back in January of 2004, with Intel C++ 8.0, and went through heck over nine months with Intel's customer support to get it fixed until I eventually had to abandon their compiler.

    On any non-Intel processors, it specifically included an alternate code path for "memcpy" that actually used "rep movsb" to copy one byte at a time, instead of (for example) "rep movsd" to copy a doubleword at a time (or MMX instructions to copy quadwords). This was probably the most brain-dead memcpy I'd ever seen, and was around 4X slower than even a typical naive assembly memcpy:

    push ecx
    shr ecx, 2
    rep movsd
    pop ecx
    and ecx, 3
    rep movsb

    They responded with completely ridiculous answers, such as:

    "Our 8.0 memcpy was indeed optimized for a Pentium(r)4 Processor,when we reworked this routine we used the simplest, most robust, and straightforward implementation for older processors so that we didn't need the extra code to check for alignment, length, overlap, and other conditions."

    BS. I went and added the following line to the beginning of my source code:

    extern "C" int __intel_cpu_indicator;

    then I added:

    __intel_cpu_indicator = -512;

    to the "main" function.

    This forced Intel C++ to use the "Pentium 4" memcpy regardless of which processor in in the machine. It turns out that their special "Pentium 4" memcpy which I tested thoroughly in all kinds of situations, and it worked perfectly fine on an AMD Athlon and a Pentium III. I pointed this out to them.

    I received the following response:

    "The fast mempcy is over 2000 lines of hand coded assembly, with lots of special cases where different code paths are chosen based on relative alignment of the source and destination. ... If the performance of memcpy/memset only are improved for Pentium III will that satisfy you?"

    I answered "No," saying that I needed support for AMD processors as well. I also gave them a copy of my own memcpy routine that was 50% faster than theirs--and just used MMX. They closed the support issue and did nothing to resolve it.

    I switched back to Visual C++.

    --
    It's hard for thee to kick against the pricks.
    1. Re:It's true--and they know about it by Penguin+Programmer · · Score: 5, Funny

      I switched back to Visual C++.

      And when a Microsoft product is the lesser of two evils, you know for sure that there's something fishy going on.

    2. Re:It's true--and they know about it by bugnuts · · Score: 4, Funny

      You forgot this code at the bottom:

      push parent, @AMDsubpoena_list

    3. Re:It's true--and they know about it by bitplayer · · Score: 4, Interesting

      While the focus of these threads is Intel vs. AMD competition, I think that it is worth pointing out that Intel is also crippling (or, at least, "not improving") the performance of their own PIII processors. For what reason would anyone do that, other than an desire to sell more P4 processors when a PIII processor might suffice?

    4. Re:It's true--and they know about it by springbox · · Score: 4, Insightful

      It's one thing if you don't go out of your way to support an entirely different architecture that you don't make yourself, but it's entirely different to intentionally cripple your program when it finds out it's running on your competitor's hardware that's fully compatible with your own.

    5. Re:It's true--and they know about it by greed · · Score: 5, Insightful
      Intel is not detecting the supported instruction set, they are detecting the actual CPU.

      The way a responsible compiler developer generates code in this situation is to say, "I need feature X, Y and Z for this code path--it will be used if all are present."

      The only thing the latest Pentium IVs have on the Athlons is the SSE3 extensions, and that is pretty much irrelevant to most code. "It must be true, Intel told us."

      If you switch the Intel compiler so that it does NOT generate multiple-CPU-supporting code, you can generate code that runs on Pentium III, IV, and Athlon just fine. (My overly-cheap ECS Duron board burned out, and who cares about Duron anymore anyway?)

      (The magic switches are -xK or -xW, BTW.)

      But there is no reason for code targetting a Pentium IV restricted to SSE2 at the highest to NOT run on an Athlon. You can "not support" it, sure, but to DELIBERATELY disable the code when you detect a competitor's chip is... well, anti-competitive.

      And this isn't a free compiler. You pay for ICC. (There's a for-free-software download, sure, but most people who really care about this stuff are more than willing to pay, and pay well, for the best compiler optimizations they can get.)

      The problem is not that they can't guarantee that the AMD chips work. The problem is they are generating instruction streams that run JUST FINE on AMD chips and their runtime code DISABLES that code path (if you use the recommended or default compiler settings).

      It's AMD's job to make sure their implementation of IA32 + whatever extensions is good, not Intel's job to disable code on their chips--except based on the processor capability word. (Whatever "flags" from /proc/cpuinfo is properly called.)

  4. Regulators Raid Intel Offices by dsginter · · Score: 4, Informative

    In other news...

    They'll probably be convicted and then buy the regulators like MS so they only get a slap on the wrist.

    On that note, was there *anything* negative that came of the Microsoft monopoly ruling?

    --
    More
    1. Re:Regulators Raid Intel Offices by Anonymous Coward · · Score: 5, Funny

      On that note, was there *anything* negative that came of the Microsoft monopoly ruling?

      Well for starters, Microsoft is still here.

    2. Re:Regulators Raid Intel Offices by rv8 · · Score: 4, Informative

      One might call the dropping of the price of MS's stock from above $120 to $20 within weeks of the judgment a negative result.

      And when would this dramatic stock price drop have happened? The data I can find doesn't show this at all. Stock price history. Be sure to consider the effect of stock splits too.

      --
      Kevin Horton
  5. I do that ... by Anonymous Coward · · Score: 5, Funny

    In version 1.0 of my software, I always throw in some loops that just count to a million to throw in some delays. That way you can include "optimization" as a deliverable for version 2.0.

    profit!

  6. Re:How can this be done? by pcidevel · · Score: 4, Informative

    Because a compiler just spits out machine instructions, it's a trivial task to compare the instructions from one code path to another.

    For example, you write some code that would typically use SSE2 regisers when compiled, then you compile the code for each processor, and check to see if it used SSE2 registers on each, or if it ouput slower "emulation" style instructions on the AMD.

    --

    I thought someone said there was going to be free beer!

  7. Re:How can this be done? by the_weasel · · Score: 5, Interesting

    Which is exactly what we did when we discovered this. And sure enough, when the Intel compiler thought our AMD was a Genuine Intel certain functions increased dramatically.

    The company I work for submitted a few reports on this a few months ago, as I am sure did many others. I am very pleased to see them following up on it.

    --
    - sarcasm is just one more service we offer -
  8. This is old news, however Intel EU raid today... by Jarnis · · Score: 5, Informative

    The submission is old news. Anyone who read the earlier AMD antitrust documentation knew about this claim. It's among the things Intel has done to drive AMD to dirt.

    However, what's news, is that EU antitrust investigators raided Intel and some OEMs today...

    http://theinquirer.net/?article=24554

    They probably were hunting for some documents related to alleged antitrust violations - nice free additional ammo for AMD and their case, methinks...

  9. Another EXCELLENT reason to use open source.. by ylikone · · Score: 5, Insightful

    ...software. Something like this would never be implemented in an open source compiler. With open source, you know exactly what you get... with closed, you get what the owners want you to get, which will help their bottom line.

    --
    Meh.
    1. Re:Another EXCELLENT reason to use open source.. by BadDoggie · · Score: 5, Insightful
      You've obviously forgotten (or more likely, never heard of) Ken Thompson. He was the guy that put the self-replicating backdoor in the UNIX compiler which, even if you removed from source, would be re-inserted if the compiler saw that you were compiling kernel or compiler.

      He did it to show that the further down you go, the harder it gets to detect such things. So you wrote a new compiler to get around that? Great. How're you planning on compiling it?

      Never forget that Open Source is no guarantee of security in and of itself.

      woof.

  10. Re:It's called good business by cens0r · · Score: 4, Informative

    That's not what AMD is saying. RTFA. AMD is saying that their chip will run the same binary code produced for the Intel chip. They are saying that Intel deliberately creates substandard code when it detects and AMD chip.

    --
    Jack Valenti and Orrin Hatch will be first up against the wall when the revolution comes.
  11. Re:Where is all this going by Rosco+P.+Coltrane · · Score: 5, Funny

    I am huge AMD fan myself

    Well, they do require quite a lot of cooling, don't they?

    --
    "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
  12. Relevant Section by Dakrin1 · · Score: 5, Informative

    The filing actually has a ton more complaints than just what the poster mentioned. Here is the relevant section:

    c. Intel's Leveraging of Its Other Product Lines to Unfairly Disadvantage

    AMD in the Marketplace
    122. Intel has also designed and marketed microprocessor-related products with the
    goal of compromising performance for those who opt for AMD solutions, even if it requires
    sacrificing its own product quality and integrity.
    123. An example is Intel's compilers. Generally, independent software vendors
    ("ISVs") write software programs in high-level languages, such as C, C++, or Fortran. Before
    these programs can be understood by a computer system, they must be translated into object
    code - a machine-readable language - by a software program called a compiler. Different
    companies write compilers for different operating systems (Windows, Linux, etc.) and for
    different programming languages (C, C++, Fortran, etc.). Intel offers compilers for use with a
    variety of different operating systems and programming languages.
    124. Intel's compilers are designed to perform specialized types of optimizations that
    are particularly advantageous for ISVs developing software programs that rely heavily upon
    floating point or vectorized mathematical calculations. Such programs include, for example,
    mathematical modeling, multimedia, and video game applications.
    125. Intel has designed its compiler purposely to degrade performance when a program
    is run on an AMD platform. To achieve this, Intel designed the compiler to compile code
    along several alternate code paths. Some paths are executed when the program runs on an Intel
    platform and others are executed when the program is operated on a computer with an AMD
    microprocessor. (The choice of code path is determined when the program is started, using a
    feature known as "CPUID" which identifies the computer's microprocessor.) By design, the
    code paths were not created equally. If the program detects a "Genuine Intel" microprocessor,
    it executes a fully optimized code path and operates with the maximum efficiency. However,
    if the program detects an "Authentic AMD" microprocessor, it executes a different code path
    that will degrade the program's performance or cause it to crash.
    126. ISVs are forced to choose between Intel's compilers, which degrade the
    performance of their software when operated with AMD microprocessors, or third-party
    compilers, which do not contain Intel's particular optimizations. Sadly for AMD and its
    customers, for legitimate reasons Intel's compilers appeal to certain groups of ISVs, especially
    those developing software programs that rely heavily on floating point and vectorized math
    calculations. Unbeknownst to them, performance of their programs is degraded when run on
    an AMD microprocessor not because of design deficiencies on the part of AMD, but
    deviousness on the part of Intel.

  13. Re:How can this be done? by thalakan · · Score: 4, Informative
    Because the Intel compiler actually generates multiple copies of routines, then figures out which one to call at run-time based on a processor detection routine they stick in the program. Example:
    [thalakan@shaitan ~]> icc -axKWNPB -c test5.c -o test5.o
    test5.c(3) : (col. 16) remark: main has been targeted for automatic cpu dispatch.
    [thalakan@shaitan ~]> nm test5.o
    00000000 r _2il0floatpacket.1
    00000008 r _2il0floatpacket.3
    00000020 r _2il0floatpacket.5
    00000028 r _2il0floatpacket.7
    U __intel_cpu_indicator
    U __intel_cpu_indicator_init
    U __intel_proc_init
    00000000 T main
    000000f2 t main.A <-- SSE version
    00000028 t main.H <-- x87 version
    U printf
    U rand
    U targets
    U time
    [thalakan@shaitan ~]>
    The remark about automatic CPU dispatch is the compiler notifying you it's going to generate multiple copies of the routine.
    --
    -- thalakan
  14. as someone who worked at a compiler company by MatD · · Score: 5, Interesting

    I know how this can happen (and it has nothing to do with being evil).
    The engineers get the specs for the next version of the compiler. They also get a slew of bug reports from the last version. They have a short amount of time to impliment the new specs, and fix the bugs.
    The bug reports will be something like, "on AMD processors when doing a memcopy with optimization xyz turned on, the processors mispredicts half the time. This makes it very slow."
    The engineer in that case, turns the optimization off for that generated code, thereby 'fixing' the bug (but not really). It happens all the time.
    It's not a nefarious plot, it's the same time crunch issue that every software engineer has to deal with.

    --
    Since when did operating systems become a religion?
  15. Re:Never by slavemowgli · · Score: 4, Insightful

    They key point here is that in order to invoke Hanlon's razor, you have to be able to *adequately* explain the issue by assuming stupidity instead of malice, though. In other words, the explanation of the issue by means of stupidity must be reasonable; if you (as an unprejudiced, objective person) can instantly dismiss that explanation because it's obviously untrue, then Hanlon's razor does not apply.

    Now ask yourself again: do you believe that it's PURE COINCIDENCE that Intel's compiler produces slow code for its competitor's processors? Code that even a novice Assembler programmer would be able to improve instantly (see the rep movsb vs. rep movsd issue mentioned in a comment above, for example?) Do you believe that, for some funny reason, they never happened to notice? That noone ever complained to them about it? That they're really just an innocent victim here?

    Well, do you? If yes, please get back to me, I have a used car to sell you. :)

    --
    quidquid latine dictum sit altum videtur.
  16. Re:The Limit of Lawsuits by AKAImBatman · · Score: 4, Insightful

    Part of AMD's claims is outrageous. Why would AMD expect its competitor, Intel, to write software that supports AMD's own products? We would not expect IBM to modify AIX or any other IBM software package to run on SPARC, which is a poorly designed processor.

    1. AMD's claim is that the Intel Compiler produces code that actively detects the AMD CPU, then intentionally runs slower code. That's not the same thing as Intel optimizing their compiler for the Pentium Architecture.

    2. If you think the SPARC is a poorly designed processor, you need your head checked.

    By restricting the GCC compilers to generating only a simple but fast subset of instructions, we could encourage both AMD and Intel to deprecate and, ultimately, eliminate the more complex x86 instructions. Linux and the bulk of open-source software use the GCC compilers and would provide a critical mass of support for a new streamlined transistor-count-reduced x86 chips. Here, I am thinking, "shockingly reduced in power due to using 1/3 of the transistors."

    Wouldn't that make the x86 Platform act like one of those "Poorly Designed RISC Processors" you were just complaining about?

    In any case, you won't see much of a transistor reduction. Most of the instructions you're trying to avoid are implemented in MicroCode and add no significant overhead to the chip. What *does* add all the transistors is the 20 stage pipeline, branch prediction, superscalar execution, Out Of Order instructions, etc, etc, etc.

  17. Compiler + host platform + target platform combo.. by Gopal.V · · Score: 4, Insightful
    > wouldn't there be programs all over that ran fine on Intel but crashed on AMD?

    Most Linux development is done using GCC , Most of windows with MSVC++. Only true hard-core inner-loop optimising geeks usually use Intel C/C++ compilers. These are people like game devs, crypto developers and HPC programmers.

    So yeah, there's a lot of code that doesn't work with Amd64 when compiled with ICC. But how many people build stuff on Amd64 with an Intel compiler ?. (remember this is not valid for stuff compiled on a pentium 4 but running on amd64)
  18. Re:What's surprising about this? by 99BottlesOfBeerInMyF · · Score: 4, Informative

    If they intentionally bloated the machine code for AMD processors, then that is wrong.

    If you RTFA you'll see that AMD is charging (and numerous sources are confirming) that Intel did extra work to specifically make things slower when programs compiled with their compiler were run on an AMD. On previous poster even posted his two line partial fix for the issue that drastically improved code speed and which he gave to Intel while trying to solve this issue with the compiler. Basically it just tricked the compiler into always using the copy function for Intel processors. This was obviously malicious.

  19. Re:Instruction timing??? by WhiteWolf666 · · Score: 5, Informative

    Yes, and no.

    No, if it was using proprietary 'processor specific improvements (TM)'.

    However, it is *not*.

    The real answer (not Intel's answer), is Yes, because Intel's compiler (which is widely regarded as producing some of the fastest binaries out there) produces code that will only take advantage of standard processor extensions (MMX, SSE, SSE2, SSE3) on 'Genuine Intel' Processors. Regardless of whether or not AMD processors support these extensions, the code excutes in slower, emulation mode if it does not detect 'Genuine Intel'.

    When you 'fake' the compiler out by having all processors return 'Genuine Intel', the compiler generates code that will utilize standard extensions that it recognizes (everything but 3DNow, and 3DNow-2), on *any* processor that supports them.

    This means your athlon will run SSE code, and your athlon 64 will run SSE,SSE2, and SSE3 code.

    Not to mention MMX code, which Intel even disables for non-Pentium 4 Intel processors, even though Intel processors have supported MMX since the Pentium MMX!

    This kind of manipulation is clear, and the only purpose is to portray the Pentium 4 as superior, and both older Intel processors and all AMD processors would appear siginificantly faster if the compiler simply utilized whatever extensions where avaliable (on the order of 10-40% for some programs) rather than relying upon the 'Genuine Intel' flag.

    Intel *is* a monopoly, and although it is not illegal for a monopoly to exist, monopolies, under current U.S. law, are not permitted to use predatory tactics, especially when going from one market to another (compilers->processors).

    --
    WhiteWolf666 an exBush supporter. All you new-school,compassionate,save the children Republicans can rot in hell
  20. The story here is the marketing practices... by asdfasdfasdfasdf · · Score: 4, Informative
    From TFA:


    As a result of Intel's coercion, the HP-AMD desktop
    offering was dead on arrival. HP ended up taking only 160,000 of the million microprocessors
    AMD offered
    • for free.


    You should really read this, it's pretty amazing. After AMD offerred HP 1 million processors to compete with Intel Retaliation, Intel upped the stakes, and HP backed down.

    I for one am VERY scared about the new Apple Intel adoption. I've always been an AMD fan, but prices of late, as well as difficulting getting "approved" systems for my video editing software has made me purchase Intel for my last 2 machines. (Though I type this on a barton 3000).

    I don't think Intel has been driving the innovation bus, and if you thought Microsoft was the bad guys, I have a feeling you aint seen nothin yet.

  21. Re:Where is all this going by faraway · · Score: 4, Informative

    Not for the last few years, in fact AMDs x64 line runs a lot cooler than any Intel processor I've seen.

  22. Re:How can this be done? by Rycross · · Score: 5, Informative

    Maybe you can do what this guy did, if you haven't already seen it.

  23. Re:The Limit of Lawsuits by AKAImBatman · · Score: 4, Insightful

    Isn't Prescott 32 stages nowadays? Silly Intel. Gotta have the bigger pipeline, huh?

    Indeed. Only Crays and DSPs used to have pipelines that long. A single jump instruction, and you have to flush the entire pipeline! In super-computing and DSP, you almost never see a jump, so there's no concern. But in Intel's zeal to win the clock rate wars, they maxed out the pipeline to an absolutely ungodly length. And a 2.2 GHz AMD64 *still* outperforms a 3.2 GHz Pentium!

    Seems that Intel's P4 design backfired on them. Of course, that may be due to Intel's belief that the Itanium would take the market by storm. They did learn from their iAPX 432 chip by at least producing a method for emulating x86, but they failed to take into account how deeply entrenched the x86 performance crowd was. Now AMD64 is eating Intel's lunch! (Oops!)

    And as a person who's designed a simple (can't do too much in 10 weeks) 2-issue out of order machine, let me tell you, that's fun stuff. Really makes you appreciate how insanely complex real processors are. And don't even get me started on their branch prediction...

    I hear you. Trying to cram a reasonable chip into an FPGA can be quite a challenge. If MicroCode hadn't been invented, it might not be possible to fit one in so few transistors. At least we can finally stop the CISC vs. RISC debate. The MicroCode designs provide CISC instructions on top of RISC cores just to confuse the heck out of both sides. Next up, writing a VI clone in LISP! ;-)

  24. Work on GCC! by XanC · · Score: 4, Interesting
    Maybe they will have to use their own [compiler] (after they make it).

    Come on, AMD... If you do need to do your own compiler work, optimize GCC! The whole idea is to make code run fast on your chips, right? And think of the tremendous goodwill you'd build up, especially around here.

  25. Re:The Limit of Lawsuits by dbrutus · · Score: 4, Insightful

    It's very simple. If I were a programmer buying Intel compilers (I mostly do administrator work) would I have been reasonably led astray by their advertising to think that what Intel was selling was an X86 compiler that didn't play favorites? There's an enormous class action waiting out there for programmers who thought they were getting something (an honest x86 compiler) but werent and had to deal with user complaints from customers who suffered. There's a similar end user class action just waiting for an enterprising lawyer to set up.

    End users and programmers have no interest in supporting Intel processor dominance but were tricked into that by Intel's underhanded dealing.

  26. Sure are alot of people not RTFA'ing. by digital+photo · · Score: 5, Informative

    Look, the issue is this:

    • There are AMD processors that support MMX, SSE, SSE2 (Intel Processor extensions)
    • The Intel Compiler is a widely used one for a segment of developers.
    • The compiler should create code which will use any and all of Intel's own optimizations( MMX, SSE, SSE2 )
    • The compiler will do this for Intel Processors.
    • The compiler will not use those very same extensions/optimizations when it detects an AMD cpu.
    • Those extensions are implemented by AMD to INTEL's specifications(licensed from them).
    • The compiler SHOULD make use of them.
    • They are NOT AMD specific extensions/optimizations.
    • The allegation is that INTEL made their compiler to work properly when compiling for INTEL chips, but not use ANY optimization extensions(intel or otherwise) when it detects an AMD chip.

    The compiler doesn't need to be optimized for AMD's chips. But it does need to be optimized for extensions which Intel supports. The claim is that Intel's compiler DOES NOT support their own extensions when an AMD chip is detected.

    This is important because the Intel Compiler is used to compile benchmarks, enterprise level code, demonstrations, etc. Business decisions to go with one chip or another are based on the performance of the software, which was compiled from the Intel Compiler, which claims to be able to support the INTEL extensions.

    By crippling the resulting code when the compiler detects an AMD CPU, Intel is essentially LYING about the performance of their processor and about the performance of the AMD processor through resulting benchmark software(s) and applications compiled with the Intel compiler.

    Yes, AMD can make their own compiler, but people have to choose to use it. People who are already using the Intel compiler invested time and money into creating a development environment based on it. Switching isn't easy. If the compiler makes the AMD cpu look bad, businesses will choose to go with Intel thinking those processors gave them better bang for their buck, when the opposite might be true.

    It's like having two cars that can do 125MPH, but one has been electronically locked to max out at around 85MPH, then putting them on a racetrack to determine which car is faster.

    That isn't a valid comparison. And if INTEL's compiler IS purposefully generating substandard code that doesn't even support their own extensions in AMD's cpus, then benchmarks compiled with the Intel compiler are similarly invalid.

    This could also mean contractual violations between AMD and INTEL since AMD licenses the enhanced extensions from INTEL.

    It ISN'T about INTEL's compiler not optimizing itself for AMD specific instruction sets. It is about INTEL's compiler not optimizing itself for INTEL specific extensions on AMD CPUs, which AMD has license from INTEL and implemented in their processors.

    Another way of looking at it is that AMD has licensed enhancements believing that INTEL's compiler will similarly take advantage of those enhancements. Perhaps that was in the agreement, perhaps not.

    If it was the case, then AMD should be furious. They basically licensed and implemented extensions, from INTEL, into their processors that INTEL is choosing to not support. Not because it isn't compatible, the extensions were implemented to their specifications, but to be anti-competitive and deceptive in the intent of their licensing of the extensions.

    A simple: if ( intel cpu) { optimized code + extensions } else-if ( amd cpu ) { standard code w/o extensions} is overly simplistic for an engineering organization like Intel and would be difficult to explain away since they are licensing their extensions.

    The compiler should be checking for the existence of extensions and choosing to compile in functionality or not. Most games and graphics packages use dynamic libraries and alternate blocks of code for different extensions detected. If small, mid-sized, and large game companies can do thi

  27. For the rest of us... by Gruneun · · Score: 4, Insightful

    who depend on sites like Slashdot to cull the most newsworthy items from the multitude of sites, mail lists, and other sources, it is news.

    Congratulations. You're on the gcc mailing list and the rest of us must now bow before your mad news reading skills. You are truly one to behold.

  28. Re:Write Your Own Damn Compiler, AMD! by Anonymous Coward · · Score: 5, Informative

    If the GNU people can make a compiler for every fricking chip on the planet on their own dime, surely AMD can write a good C / C++ compiler for their chips.

    Hey, maybe instead AMD could pay people to work on GCC. Oh, wait, they do that already. Why do you think GCC was ported so quickly to AMD64? GCC development is not, AFAIK, funded much (if at all) by the FSF anymore. It's all Apple, AMD, IBM, the various Linux vendors, etc.

    I'll take an open source compiler that is installed everywhere over a commercial one that is only on a handful of machines.

  29. Old news... by coats · · Score: 4, Informative
    Within a month after the Opteron release, computer scientists at the Fraunhoffer Institute in Germany had a "perl" script that would modify Intel-compiler generated executables to bypass the "Genuine Intel" test embedded in the executables, and use the optimized code path.

    --
    "My opinions are my own, and I've got *lots* of them!"
  30. Re:Send that to AMD's legal team! by hackstraw · · Score: 4, Insightful

    Wow... that's a great example, and you should gather as much evidence of it as you can, especially Intel's responses, and send it to AMD's legal team.

    If I were Intel, I would respond with the product description of the Intel compiler, as found here http://www.intel.com/cd/software/products/asmo-na/ eng/compilers/clin/index.htm or here http://www.intelcompiler.com/.

    The product is clearly labeled as a high performance compiler for Intel CPUs. The grandparent used the wrong tool for the job which required a generic compiler.

  31. Re:The Limit of Lawsuits by mog007 · · Score: 4, Interesting

    If they put a warning in the EULA for the compiler about it not being efficient in non-Intel processors, then Intel would definitely be in the clear, but if they sold their product as simply a vanilla x86 compiler, then they've got shit to be responsible for.

  32. A workaround for one of the compiler's tricks by spworley · · Score: 5, Informative

    For about a year, I've been patching my Intel Compiler compiled code because of this issue. I have to give credit to a poster on the comp.arch newsgroup for an explaination of ONE of the issues, and a workaround.
    This is not the only anti-Athlon trick in the compiler, but it's an easy one to verify and understand.

    From: iccOut (iccout2004@yahoo.com)
    Subject: sleazy intel compiler trick (SOURCE ATTACHED)
    View: Complete Thread (4 articles)
    Original Format
    Newsgroups: comp.arch
    Date: 2004-02-09 14:38:40 PST

    As part of my study of Operating Systems and embedded systems, one of
    the things I've been looking at is compilers. I'm interested in
    analyzing how different compilers optimize code for different
    platforms.As part of this comparison, I was looking at the Intel
    Compiler and how itoptimizes code.The Intel Compilers have a free
    evaluation download from here:
    http://www.intel.com/products/software/index.htm?i id=Corporate+Header_prod_softwr&#compilers

    One of the things that the version 8.0 of the Intel compilerincluded
    was an "Intel-specific" flag.According to the documentation,binaries
    compiled with this flag would only run on Intel processors andwould
    include Intel-specific optimizations to make them run faster. The
    documentation was unfortunatelylacking in explaining what these
    optimizations were, so I decided to do some investigating.

    First I wanted to pick a primarily CPU-bound test to run, so I chose
    SPEC CPU2000.The test system was a P4 3.2G Extreme Edition with1 gig
    of ram running WIndows XP Pro. First I compiled and ran spec with the
    "generic x86 flag" (-QxW),which compiles code to run on any x86
    processor.After running the generic version, I recompiled and ran
    spec with the "Intel-specific flag" (-QxN) to see what kind of
    difference that would make.For most benchmarks, there was not very
    much change, but for 181.mcf, there was a win of almost 22% !

    Curious as to what sort of optimizations the compiler was doing to
    allow the Intel-specific version to run 22% faster,I tried running
    the same binary on my friend's computer.His computer, the second test
    machine, was an AMD FX51, also with 1 gig of ram, running Windows XP
    Pro. First I ran the "generic x86" binaries on theFX51, and then
    tried to run the "Intel-only" binaries. The Intel-specific ones
    printed out an error message saying that the processor was not
    supported and exited.This wasn't very helpful, was it true that only
    Intel processors could take advantage of this performance boost?

    I started mucking around with a dissassembly of the Intel-specific
    binary and found one particular call (proc_init_N) that appeared to be
    performing this check. As far as I can tell, this call is supposed to
    verify that the CPU supports SSE and SSE2 and it checks the CPUID to
    ensure that its an Intel processor. I wrote a quick utility which I
    call iccOut, to go through a binary that has been compiled with this
    Intel-only flag and remove that check.

    Once I ran the binary that was compiled with the Intel-specific flag
    (-QxN) through iccOut, it was able to run on the FX51. Much to my
    surprise, it ran fine and did not miscompare. On top of that, it got
    the same 22% performance boost that I saw on the Pentium4 with an
    actual Intel processor. This is very interesting to me, since it
    appears that in fact no Intel-specific optimization has been done if
    the AMD processor is also capable to taking advantage of these same
    optimizations. If I'm missing something, I'd love for someone to point
    it out for me. From the way it looks right now, it appears that Intel
    is simply "cheating" to make their processors look better against
    competitor's processors.

    Links:
    Intel Compiler:http://www.intel.com/products/software/in dex.htm?iid=Corporate+H

  33. Re:It wouldn't be optimized for Athlon anyway by Edgewize · · Score: 4, Insightful

    What people seem to be saying is that by patching the binary to force the P4 path, there is a significant performance increase on the Athlon. In other words, even though the P4-optimization is not optimal for the Athlon, it exceeds the performance of the "baseline" path and there is no reason to disable it -- other than to cripple AMD's performance.

  34. Re:The Limit of Lawsuits by Rimbo · · Score: 4, Funny
    Next up, writing a VI clone in LISP! ;-)


    Hello, did someone say "Vi clone in LISP?"
    bash$ emacs -nw -f vi-mode
    Ya mean, like that? :D
  35. Re:Simple Solution: WRITE YOUR OWN COMPILER!!! by Chris+Burke · · Score: 4, Informative

    That's just not feasible. Unlike Intel, AMD isn't huge and they don't have a massive software team. However, they aren't stupid and have funded and helped develop compilers. In particular gcc received a lot of help from AMD, especially in developing the AMD64 target.

    --

    The enemies of Democracy are
  36. Link by rangek · · Score: 4, Interesting

    This seems to be it. I haven't tested it yet.

  37. AMD and GCC by Michael+Meissner · · Score: 4, Informative

    AMD is currently working with the Free Software communinity (including working with both SUSE and Red Hat) to improve GCC support on its platforms. At present, there are no direct contributions from AMD to the Free Software Tools, but that will change in the future.