A blog about programming topics, mostly JVM, Linux kernel, and x86 related things.

Sunday, January 3, 2010

The Wonders of Proprietary Development Tools

Apparently the highly optimizing Intel compilers have a "cripple AMD" functionality built right into them. To make a long story short, Intel compilers generate multiple versions of a piece of code and select the "appropriate" version during run-time based on your CPU vendor. Unsurprisingly enough, the versions used on AMD and VIA CPUs don't use the full potential of the chips (apparently no SSE, for example) and thus perform much worse than the version used on Intel CPUs.

Now, I don't know whether this is intentional or not but it sure is a nice reminder of why Open Source development tools are so important. If such a fault would be found in, say, GCC, you'd better believe an AMD engineer would be submitting a patch to fix it as soon as possible. But with proprietary tools, you're at the mercy of your vendor and unfortunately what's best for your vendor is not always what's best for you. Intel's core business is to sell as many chips as possible so you can be damn sure they don't want to voluntarily spend money on making their proprietary compiler work well on AMD CPUs.

That's why it's so important that we have Open Source and Free Software infrastructure like the Linux kernel and GCC. As a developer, you can be reasonably sure no one is pulling dirty tricks on you and that all vendors are treated more or less equally based on their merits alone. And if you do find a fault that's not getting fixed, you have the luxury of fixing the damn problem yourself.

1 comment:

Anonymous said...

True that.