Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Intel's compiler and non-Intel processors, fact or fiction? (Read 8186 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Intel's compiler and non-Intel processors, fact or fiction?

Quite OT:

Quote
Here's something you probably don't know, but really should - especially if you're a programmer, and especially especially if you're using Intel's compiler. It's a fact that's not widely known, but Intel's compiler deliberately and knowingly cripples performance for non-Intel (AMD/VIA) processors.


Hybrid Multimedia Production Suite will be a platform-indipendent open source suite for advanced audio/video contents production.
Official git: https://www.forart.it/HyMPS/

Intel's compiler and non-Intel processors, fact or fiction?

Reply #1
Not only OT, but sounds very much like typical conspiracy theory. If you want your code to be well optimized for AMD processors, why on earth would you use Intel compiler in the first place? I'd be grateful that it supports AMD processors at all.
CUETools 2.1.6

Intel's compiler and non-Intel processors, fact or fiction?

Reply #2
It isn't a conspiracy theory if you had bothered to follow the link and performed a series of small Google searches on your own. The fact is that the Intel compiler almost always compiles better than Microsoft's. After the offending CPU check was bypassed, the AMD processors received a nice speed-up.

Intel's compiler and non-Intel processors, fact or fiction?

Reply #3
If i didn't follow the link i wouldn't comment on it, would i? There was no evidence presented in favor of this alleged conspiracy. So Intel is basically guilty of creating too good a compiler for their own processors? Lol.
CUETools 2.1.6

Intel's compiler and non-Intel processors, fact or fiction?

Reply #4
If i didn't follow the link i wouldn't comment on it, would i? There was no evidence presented in favor of this alleged conspiracy.

How about this one?

Hopefully that kind of crap won't happen with future iterations of ICC, now that Intel has settled with AMD and agreed not to engage in any anti-competitive behavior (you know, the kind they never engaged in in the first place, but made them sign a big fat check to AMD anyway).

Intel's compiler and non-Intel processors, fact or fiction?

Reply #5
For starters, It has nothing to do with Intel Compiler. It comes down to
Quote
None of this constitutes proof of wrongdoing, but it flies in the face of Futuremark's neutrality claims.
.

You want good optimization for AMD's processors - ask AMD to make a compiler.

There's really no point for us to take part in wars between PR and legal departments of Intel, AMD and VIA. I honestly don't care about those fat checks they sign to each other. I prefer to stay neutral in these matters. I just don't like unproven conspiracy theories.
CUETools 2.1.6

Intel's compiler and non-Intel processors, fact or fiction?

Reply #6
Quote
None of this constitutes proof of wrongdoing, but it flies in the face of Futuremark's neutrality claims.

I'm not a conspiracy nut, so I didn't dig deep into it. The tests are pretty damning though. And even if ICC is not the culprit there, but FutureMark's code, why would they favor Intel CPUs if Intel didn't give them incentive to?

You want good optimization for AMD's processors - ask AMD to make a compiler.

They do contribute to GCC, offer optimized libraries for download, and there are at least two highly-optimized compilers for AMD CPUs (PGI and PathScale, IIRC). Do you, as a developer, bother to use them?

I just don't like unproven conspiracy theories.

But you like to ignore evidence of something fishy going on?

Intel's compiler and non-Intel processors, fact or fiction?

Reply #7
I wouldn't ignore evidence if there was any.

The tests in fact only show that FutureMark doesn't handle VIA processors too good, and that VIA processors are closer to Intel than to AMD. Of course it could be because of Intel, but it could be due to alien invasion as well. The simplest explanation however is that FutureMark's programmers didn't do a very good job.

Personally i, as a developer, now prefer writing processor independent code, using Microsoft .NET framework. It's slightly slower than explicitly optimized code for a given platform, but i don't have to recompile it for every platform and i can be sure it will work more or less efficient on each of them. So it's now up to Microsoft and Mono developers to make sure .NET JIT compiler makes good code for various processors.
CUETools 2.1.6

Intel's compiler and non-Intel processors, fact or fiction?

Reply #8
The simplest explanation however is that FutureMark's programmers didn't do a very good job.

Never ascribe to malice that which is adequately explained by incompetence, I know, but that would be a surprisingly big mistake, coming from guys who make a living on benchmarking. Too big in my opinion to ascribe it to incompetence.

So it's now up to Microsoft and Mono developers to make sure .NET JIT compiler makes good code for various processors.

(OT) Does FlaCuda run under Linux with Mono?

 

Intel's compiler and non-Intel processors, fact or fiction?

Reply #9
heres a responce to those saying its a conspiricy theory

Quote
Intel Forced to Remove "Cripple AMD" Function from Compiler?
posted by Thom Holwerda on Sun 3rd Jan 2010 20:32 UTC
Here's something you probably don't know, but really should - especially if you're a programmer, and especially especially if you're using Intel's compiler. It's a fact that's not widely known, but Intel's compiler deliberately and knowingly cripples performance for non-Intel (AMD/VIA) processors.

Agner Fog details this particularly nasty examples of Intel's anticompetitive practices quite well. Intel's compiler can produce different versions of pieces of code, with each version being optimised for a specific processor and/or instruction set (SSE2, SSE3, etc.). The system detects which CPU it's running on and chooses the optimal code path accordingly; the CPU dispatcher, as it's called.

"However, the Intel CPU dispatcher does not only check which instruction set is supported by the CPU, it also checks the vendor ID string," Fog details, "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."

It turns out that while this is known behaviour, few users of the Intel compiler actually seem to know about it. Intel does not advertise the compiler as being Intel-specific, so the company has no excuse for deliberately crippling performance on non-Intel machines.

"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," Fog writes, "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?"

In fact, Fog points out that even benchmarking programs are affected by this, up to a point where benchmark results can differ greatly depending on how a processor identifies itself. Ars found out that by changing the CPUID of a VIA Nano processor to AuthenticAMD you could increase performance in PCMark 2005's memory subsystem test by 10% - changing it to GenuineIntel yields a 47.4% performance improvement! There's more on that here [print version - the regular one won't load for me].

In other words, this is a very serious problem. Luckily, though, it appears that the recent antitrust settlement between AMD and Intel will solve this problem for at least AMD users, as the agreement specifically states that Intel must fix its compiler, meaning they'll have to fix their CPU dispatcher.


The Federal Trade Commission is investigating Intel too, and it is also seeking a resolution of the compiler issue, but the FTC takes it all a step further than the Intel-AMD settlement. Since the latter only covers AMD, VIA could still be in trouble. Consequently, the FTC asks that Intel do a lot more than what's described in the AMD settlement:

Quote
Requiring that, with respect to those Intel customers that purchased from Intel a software compiler that had or has the design or effect of impairing the actual or apparent performance of microprocessors not manufactured by Intel ("Defective Compiler"), as described in the Complaint:


Intel provide them, at no additional charge, a substitute compiler that is not a Defective Compiler;

Intel compensate them for the cost of recompiling the software they had compiled on the Defective Compiler and of substituting, and distributing to their own customers, the recompiled software for software compiled on a Defective Compiler; and

Intel give public notice and warning, in a manner likely to be communicated to persons that have purchased software compiled on Defective Compilers purchased from Intel, of the possible need to replace that software.


Fog also offers up a number of workarounds, such as using GNU GCC, whose optimisations are similar to that of Intel's compiler, "but the Gnu function library (glibc) is inferior". You can also patch Intel's CPU dispatcher - Fog even provides a patch to do so in "Optimizing software in C++: An optimization guide for Windows, Linux and Mac platforms".

This is a particularly nasty kind of anticompetitive practice, as it really requires deep knowledge of matters in order to find it out. God knows how many benchmarks have been skewed in favour of Intel simply because people unknowingly used Intel's compiler in good faith. Intel's compiler is seen as the cream of the crop and delivers superior performance, but apparently only if you stick to GenuineIntel.


http://www.osnews.com/story/22683/Intel_Fo..._from_Compiler_

So yeah, Its a FACT and intel already agreed to stop doing it in their dealwith AMD, but the GOVT is going to requier them to be fair as well, so this is yet another layer of protection to help anybody whos not using an intel system insure they arent going to be artifically crippled.

Wonder if the x64 compile would be faster with the tricks to keep the intel compiler from crippling/hampering perf on amd cpus?

Intel's compiler and non-Intel processors, fact or fiction?

Reply #10
(OT) Does FlaCuda run under Linux with Mono?

There's no reason why it shouldn't, however this was not tested. I use VMWare to test my software on linux, unfortunately there are no CUDA drivers for VMWare at this point.

So yeah, Its a FACT and intel already agreed to stop doing it in their dealwith AMD, but the GOVT is going to requier them to be fair as well, so this is yet another layer of protection to help anybody whos not using an intel system insure they arent going to be artifically crippled.

There's too many twisted facts and unproven assumptions in this. For example, Intel didn't agree to stop doing anything, because it was never proven that they were doing it. Intel only promised never to do it in the future.

The most ridiculous unproven assumptions in those accusations are:
1) That benchmarks use Intel compiler generated code to test AMD and VIA processors
2) That Intel made them do it

Using Intel compiler generated code in benchmarks for all CPUs would not be fair, because it is certainly best optimized for GenuineIntel processors, and always will be.
On the other hand, using Intel compiler generated code for GenuineIntel processors and some other code for other processors can lead exactly to those test results which are presented as 'evidence': changing vendor id activates Intel code, which is faster.
CUETools 2.1.6

Intel's compiler and non-Intel processors, fact or fiction?

Reply #11
There's really no point for us to take part in wars between PR and legal departments of Intel, AMD and VIA. I honestly don't care about those fat checks they sign to each other. I prefer to stay neutral in these matters. I just don't like unproven conspiracy theories.


First of all, it's not an unproven conspiracy theory. Anyone with the Intel compiler can check and see that the "GenuineIntel" detection code is there, and if it's disabled, programs magically run much faster on AMD systems.

As for "staying neutral", as a developer, you have to know about this, or your application will run slower for a large amount of your users, for no good reason at all. If you don't have AMD systems, you won't even know about it, but you might be hurt because, for example, a competing program may be faster because your binaries are crippled.

You can patch the produced binaries to disable the if-not-intel-use-slow-code detection and get good performance on all platforms.

The reason why it's an anti-competitive practice is exactly because the check is not checking for features, but for the manufacturer. It's also poor business practice to screw over your customers (the ones that buy the compiler) and it's particularly hazy that this "feature" was not documented anywhere.

Intel's compiler and non-Intel processors, fact or fiction?

Reply #12
seems intel is still at it, this time blocking AVX from being useable on non-intel chips, (same links)

http://www.agner.org/optimize/blog/read.php?i=49

so, if you want AVX for amd chips dont use the intel compiler, theres no patch to remove the AVX blocking.