Immer noch: Intel Compiler benachteiligt AMD CPUs

Opteron

Redaktion
☆☆☆☆☆☆
Mitglied seit
13.08.2002
Beiträge
23.645
Renomée
2.254
  • SIMAP Race
  • Spinhenge ESL
  • BOINC Pentathlon 2012
Hallo,

sowas gabs ja schon mal vor Jahren:

http://www.swallowtail.org/naughty-intel.html
http://www.swallowtail.org/naughty-intel.shtml

Die alten intel Compiler fragten dort nicht nach den feature Set ab, das die CPU kann ( also MMX, SSE, SSE2, SSE3 ...) sondern er fragt erstmal, ob ne "Genuine Intel" CPU im PC steckt.

Das hatte AMD auch mit in die Klage gegen Intel mitaufgenommen:

http://www.amd.com/us-en/assets/content_type/DownloadableAssets/AMD-Intel_Full_Complaint.pdf
Seite 40

und schwupps, gabs im ICC 10.x eine neues Compiler Flag /QxO. Funktion laut Intel help file:
Can generate SSE3, SSE2, and SSE instructions. Generated code might operate on processors not made by Intel that support SSE3, SSE2 and SSE instruction sets.

Can optimize for Intel processors based on Intel® Core™ microarchitecture or Intel NetBurst® microarchitecture.

This value does not enable some optimizations enabled when using the S, T, or P processor values.
Soweit so schön ... allerdings gibts immer noch das alte Intel Flag /QxP, laut Intel hat das die folgende Aufgabe:
Can generate SSE3, SSE2, and SSE instructions and can optimize for Intel processors, like the following:

Intel® Core™ Duo processors

Intel® Core™ Solo processors

Pentium® D processors

Intel Pentium® 4 processors with SSE3

Intel Celeron® M processors

Intel Celeron® D processors

Intel® Xeon® processors with SSE3

Other Intel processors based on Intel® Core™ microarchitecture or Intel NetBurst® microarchitecture

Mac OS X: Supported on IA-32 and Intel® 64 architectures.
Quelle: http://cache-www.intel.com/cd/00/00/34/76/347618_347618.zip

So alles in Butter könnte man meinen ... nein leider nicht. Das für Intel compilierte binary läuft auf AMD CPUs immer noch 50-100% schneller, als die Alibi /QxO Version, aber natürlich erst, nachdem man die Intel Abfrage entfernt hat. Selbige fragt jetzt nichtmehr nach Genuine Intel, sondern die erweiterte Familie ab ... Supi. Um das Ganze jetzt zu umgehen, hat der nette Wissenschaftler von der Universität Kopenhagen, der den Sachverhalt herausgefunden hat, eine sehr gute Anleitung bereitgestellt:

http://www.agner.org/optimize/optimizing_cpp.pdf
Der betreffende Abschnitt ist um S.118

Dabei wird die Intel eigene "suboptimale" Abfragefunktion durch eine neutrale ersetzt, die schlicht und einfach nur die feature flags abfragt und die CPU Familie ignoriert.

Aufgabe für alle interessierten Crunsher:

Fragt mal bei Euren Favoritenprojekten nach, ob Sie Intel Compiler verwenden. Falls ja gebt Ihnen mal den Tipp über obiges Optimierungs PDF, vielleicht gibts dann demnächst mit einer neuen Programmversion bessre AMD Ergebnisse & mehr Credits.

Viele Projekte nützen meines Wissens nach GCC, aber nachdem ich nicht ausschließen kann, dass es auch das ein oder andre ICC Projekte gibt, wollte ich das hier mal melden.

Fortlaufende Diskussion bei aceshardware:
http://aceshardware.freeforums.org/...d-because-of-flaw-in-intel-compiler-t428.html

ciao

Alex
 
Zuletzt bearbeitet:
Tja, ein zweischneidiges Schwert würde ich sagen *noahnung* Es ist Intels eigener Compiler, der mit eigenen R&D-Geldern entwickelt wurde. Man könnte die Meinung vertreten, dass Intel alles Recht der Welt hat sicherzustellen, dass nur die hauseigenen Prozessoren von den Optimierungen profitieren. Andererseits ist es natürlich ärgerlich für AMD. Wenn AMD einen eigenen Compiler anbieten würde oder die anderen Compiler besser wären, gäbe es diese Diskussion gar nicht, denn dann könnte man für AMD-Prozessoren einfach zu GCC, PGI, etc. greifen. Aber meistens ist der ICC ja selbst inklusive der künstlichen Bremsen noch besser, als die anderen Compiler in der höchsten Optimierungsstufe.
http://www.planet3dnow.de/cgi-bin/newspub/viewnews.cgi?category=1&id=1097500346
 
Tja, ein zweischneidiges Schwert würde ich sagen *noahnung* Es ist Intels eigener Compiler, der mit eigenen R&D-Geldern entwickelt wurde. Man könnte die Meinung vertreten, dass Intel alles Recht der Welt hat sicherzustellen, dass nur die hauseigenen Prozessoren von den Optimierungen profitieren. Andererseits ist es natürlich ärgerlich für AMD. Wenn AMD einen eigenen Compiler anbieten würde oder die anderen Compiler besser wären, gäbe es diese Diskussion gar nicht, denn dann könnte man für AMD-Prozessoren einfach zu GCC, PGI, etc. greifen. Aber meistens ist der ICC ja selbst inklusive der künstlichen Bremsen noch besser, als die anderen Compiler in der höchsten Optimierungsstufe.
http://www.planet3dnow.de/cgi-bin/newspub/viewnews.cgi?category=1&id=1097500346

Jupp Zweischneidig.

Man muss aber unterscheiden zwischen:

a) Befehlssatzoptimierung (wozu gibts sonst die feature flags ...)
b) CPU Optimierung (nach der CPU Family)

Intel vermischt jetzt beides und optimiert über die CPU family Abfrage gleichzeitig die Befehlssätze. Böse Zungen mögen da von "Mißbrauch" sprechen ...

Ich halts auf alle Fälle kindisch, ja sogar gefährlich für Intel, nachdem zuvor schon die GenuineIntel Abfrage von AMD angeprangert wurde. Das kann ganz schnell als Mißbrauch von Marktmacht interpretiert werden, jetzt sogar im Wiederholungsfall, wenn das die EU Kommission mitbekommt .. die fackelt da nicht lange. Könnte noch sehr teuer für Intel werden...

ciao

Alex
 
Ich hätte echt gedacht, das Thema wäre allmählich "entschärfter".
Andreas Stiller hat das in der c't ja früher schonmal angemahnt.

Eine Frage würde mich aber brennend interessieren - sind SpecInt/SpecFP/usw.-Eintragungen mit hand-gepatchtem Code rechtens oder nicht?
Viele Optimierungen sind oft nur dazu da eben diesen Code zu verbessern.

Grüße,
Tom
 
Das ist eindeutig wettbewerbswidriges Verhalten, CPUs auszuschließen, die mit offiziell lizenzierten Befehlssätzen arbeiten. Dabei spielt es überhaupt keine Rolle, ob man selber den Compiler entwickelt. Das wird sicherlich eine der EU Auflagen werden, diese Abfrage aus dem Compiler zu nehmen.
 
Das ist eindeutig wettbewerbswidriges Verhalten, CPUs auszuschließen, die mit offiziell lizenzierten Befehlssätzen arbeiten. Dabei spielt es überhaupt keine Rolle, ob man selber den Compiler entwickelt. Das wird sicherlich eine der EU Auflagen werden, diese Abfrage aus dem Compiler zu nehmen.

nun es zwingt dich niemand diesen compiler zu verwenden oder?

warum muss/soll Intel für AMD die Entwicklungsarbeit abnehmen? Wenn das AMD wirklich so wichtig wäre, dann hätten sie schon längst einen EIGENEN kommerziellen Compiler.
 
nun es zwingt dich niemand diesen compiler zu verwenden oder?

warum muss/soll Intel für AMD die Entwicklungsarbeit abnehmen?
So könnte man argumentieren wenn der für Intel-CPUs generierte Code von Haus aus auf AMD-CPUs langsam wäre. Aber es ist ja so, dass der für Intel-CPUs generierte Code zufällig auch auf AMD-CPUs sehr gut läuft. Intel schmeckt das nicht, also bauen sie die Abfrage ein, ob es eine Intel-CPU ist und bremsen AMD-CPUs künstlich aus.
Ein Polemiker würde jetzt behaupten, dass durch die Abfrage Intel sogar mehr Aufwand betreiben muss als wenn sie AMD-CPUs gleichwertig behandeln würden.;)
 
So könnte man argumentieren wenn der für Intel-CPUs generierte Code von Haus aus auf AMD-CPUs langsam wäre. Aber es ist ja so, dass der für Intel-CPUs generierte Code zufällig auch auf AMD-CPUs sehr gut läuft. Intel schmeckt das nicht, also bauen sie die Abfrage ein, ob es eine Intel-CPU ist und bremsen AMD-CPUs künstlich aus.
Ein Polemiker würde jetzt behaupten, dass durch die Abfrage Intel sogar mehr Aufwand betreiben muss als wenn sie AMD-CPUs gleichwertig behandeln würden.;)

das mag ja alles richtig sein, aber wo ist da das Problem für Intel? ;)
Versteht mich nicht falsch, mir schmeckt das genauso wenig, aber Intel bewegt sich da in einem legitimen Raum. Es ist ihr Produkt, sie haben es entwickelt, sie verkaufen es, sie entscheiden wie es funktioniert, niemand MUSS es verwenden.

Wenn AMD etwas ähnliches im Angebot hätte, würde sie es ja bestimmt auch so machen :]
 
Zuletzt bearbeitet:
Versteht mich nicht falsch, mir schmeckt das genauso wenig, aber Intel bewegt sich da in einem legitimen Raum. Es ist ihr Produkt, sie haben es entwickelt, sie verkaufen es, sie entscheiden wie es funktioniert, niemand MUSS es verwenden.
Gleiches gilt für Microsoft Windows und trotzdem gibts für Microsoft regelmäßig auf den Deckel.;) Das Problem ist die marktbeherrschende Stellung. Die ist zugegeben bei Intel weniger stark ausgeprägt als bei Microsoft.
 
Gleiches gilt für Microsoft Windows und trotzdem gibts für Microsoft regelmäßig auf den Deckel.;) Das Problem ist die marktbeherrschende Stellung. Die ist zugegeben bei Intel weniger stark ausgeprägt als bei Microsoft.

das ist richtig. der markt würde auch ganz gut ohne intel compiler funktionieren (klar nicht für alle, der MS compiler tut es auch, auch wenn er zum kotzen ist), bei MS Windows ist das natürlich aufgrund der Markmacht kritischer zu betrachten, das muss von außen reguliert werden.
 
Intel hat ja wegen der Sache schon einmal eine auf den Deckel bekommen. Gerade wo jetzt die EU und einige andere Kartellbehörden genauer hinschauen, ist so etwas einfach nur dumm.

AMD hatte schon mal in der Richtung Anlauf genommen - nur wird das bei AMD einfach ein Ressourcen-Problem sein. Alles was sich nicht in relativ kurzer Zeit in Euro und Cent auszahlt, ist bei deren Lage im Moment leider nur rausgeschmissen.
 
Intel hat ja wegen der Sache schon einmal eine auf den Deckel bekommen. Gerade wo jetzt die EU und einige andere Kartellbehörden genauer hinschauen, ist so etwas einfach nur dumm.

AMD hatte schon mal in der Richtung Anlauf genommen - nur wird das bei AMD einfach ein Ressourcen-Problem sein. Alles was sich nicht in relativ kurzer Zeit in Euro und Cent auszahlt, ist bei deren Lage im Moment leider nur rausgeschmissen.
... und seswegen dürfen sie "kostenlos" auf das konkurrenzprodukt verweisen bzw. sich beschweren wenn sie künstlich ausgebremst werden?
 
... und seswegen dürfen sie "kostenlos" auf das konkurrenzprodukt verweisen bzw. sich beschweren wenn sie künstlich ausgebremst werden?

Ich sag ja nicht, das es richtig ist ;) Intel sollte in dieser Richtung nur einfach mal die Füße stillhalten, sonst fällt was drauf. Wer die Steuerfahnder im Hause hat, wird doch auch nicht nebenbei anfangen auf seinen luxemburger Konten zu traden ;D
 
Ich sag ja nicht, das es richtig ist ;) Intel sollte in dieser Richtung nur einfach mal die Füße stillhalten, sonst fällt was drauf. Wer die Steuerfahnder im Hause hat, wird doch auch nicht nebenbei anfangen auf seinen luxemburger Konten zu traden ;D

Warum sollten sie, sie machen ja nichts illegales.
 
Als was würdest du es denn dann bezeichnen?`

Ich würde sagen "fieß" aber "legal" :(

Bei kleineren Firmen würde kein Hahn nach krähen - da wäre es wohl "clever". Bei eindeutig marktbeherrschenden Firmen gelten nach dem Kartellrecht andere Maßstäbe. Und da nun mal bekannt ist, das der blaue Riese nicht immer nur kartellrechtlich sauber vorgegangen ist, wäre so eine Sache nur eine Provokation an die Kartellbehörden*noahnung* muß man nicht unbedingt haben...
 
Bei kleineren Firmen würde kein Hahn nach krähen - da wäre es wohl "clever". Bei eindeutig marktbeherrschenden Firmen gelten nach dem Kartellrecht andere Maßstäbe. Und da nun mal bekannt ist, das der blaue Riese nicht immer nur kartellrechtlich sauber vorgegangen ist, wäre so eine Sache nur eine Provokation an die Kartellbehörden*noahnung* muß man nicht unbedingt haben...

Warum soll Intel die Firma AMD kostenlos unterstützen? Ich sehe da kein Kartellrecht, da die Welt auch ohne Intelcompiler funktionieren würde, es gibt ja noch zig andere Compiler.
 
Das Kartellrecht spielt deshalb da mit rein, weil Intel künstlich dafür sorgt, dass 2 Intel-Produkte besser zusammenspielen als eines der beiden Intel-Produkte mit einem Fremdhersteller-Produkt und Intel bei einem der beiden Produkte eine marktbeherrschende Stellung hat.
 
Das Kartellrecht spielt deshalb da mit rein, weil Intel künstlich dafür sorgt, dass 2 Intel-Produkte besser zusammenspielen als eines der beiden Intel-Produkte mit einem Fremdhersteller-Produkt und Intel bei einem der beiden Produkte eine marktbeherrschende Stellung hat.

was wäre wenn der code, der vom intelcompiler erzeugt wird, überhaupt nicht mehr auf nicht-intel cpus laufen würde?

warum darf nvidia per treiber unterbinden das sli nur auf teueren nvidia boards funktioniert (abgesheen vom skulldings)? ist doch fast das gleiche oder?
 
naja sogesehen ist das mit sli bei nvidia ja das gleiche wie wenn microsoft seine schnittstelle nicht offenlegt oder etwa nicht?
 
Warum soll Intel die Firma AMD kostenlos unterstützen? Ich sehe da kein Kartellrecht, da die Welt auch ohne Intelcompiler funktionieren würde, es gibt ja noch zig andere Compiler.

Es geht nicht um "nicht unterstützen" sondern um explizites Ausschließen von vorhandenen Optimierungsmöglichkeiten. Und das ist schon was anderes als Unterstützung.
 
Es geht nicht um "nicht unterstützen" sondern um explizites Ausschließen von vorhandenen Optimierungsmöglichkeiten. Und das ist schon was anderes als Unterstützung.

wo ist da jetzt der unterschied aus Intels Sicht?

Sie sagen (lügen :]) einfach, dass deren SSE2/3 etc. optimiert code nicht zu 100% korrekt auf nicht Intel-cpus läuft, somit wird er deaktiviert :] - legal?
 
Aus Intels sich ist wohl jeglicher Wettbewerb Ursache für eine Minimierung des Gewinnes und deshalb äußerst unerwünscht ....ohne WB könnte sehr viel Geld gespart werden. Vermutlich hätten wir dann alle gaaaanz tolle P4 für genausoviel Kohle wie MHz...

Aus diesem Grunde habe ich stark eingeschränkte Sympathien für Monopolisten aller Art - da macht sich so eine unsympatische Arroganz der Macht breit:[
 
Aus Intels sich ist wohl jeglicher Wettbewerb Ursache für eine Minimierung des Gewinnes und deshalb äußerst unerwünscht ....ohne WB könnte sehr viel Geld gespart werden. Vermutlich hätten wir dann alle gaaaanz tolle P4 für genausoviel Kohle wie MHz...

Aus diesem Grunde habe ich stark eingeschränkte Sympathien für Monopolisten aller Art - da macht sich so eine unsympatische Arroganz der Macht breit:[

dem stimem ich ja auch zu, nur geht es hier um das "darf Intel es oder darf Intel das nicht" und ich bin der Meinung, das Intel es darf (damit meine ich die Compilersache).
 
Zurück
Oben Unten