Immer noch: Intel Compiler benachteiligt AMD CPUs

Agnern hat eine Zusammenfassung geschrieben:

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

Guten Rutsch

Alex
Obs diese es Wert ist?

Wenn ich schon lese was er im 2. Block, 2. Absatz schreibt:
1998, AMD was the first to introduce Single-Instruction-Multiple-Data (SIMD) instructions in their so-called 3DNow instruction set. Intel never supported the 3DNow instructions. Instead, they introduced the SSE instruction set a few years later.
Das ist Käse! Intel hatte als erster SIMD mittels MMX realisiert und zwar 1996.
 
Zuletzt bearbeitet:
Obs diese es Wert ist?

Wenn ich schon lese was er im 2. Block, 2. Absatz schreibt:
Das ist Käse! Intel hatte als erster SIMD mittels MMX realisiert und zwar 1996.

Richtig, aber da Du das gerade zitierst, fällt mir auf, dass ich den falschen Link gepostet habe :]

Das ist der Link zum alten Blog Eintrag, der schon früher genannt wurde, aktuell - und den ich eigentlich meinte - ist das hier:

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

Hat also anscheinend keinen interessiert, dass er MMX unterschlagen hat :(

ciao

Alex
 
Es liest sich ja auch besser, wenn es AMD ist, wer als erster etwas einführt und Intel es kopiert, als umgekehrt.
 
Es liest sich ja auch besser, wenn es AMD ist, wer als erster etwas einführt und Intel es kopiert, als umgekehrt.
Hm, achso Du meinst er hats absichtlich getan ... Möglich - aber da gäbs sicherlich auch noch effektivere Sachen.

Abgesehen davon, die Kommentare sind interessant, iXBT patch ein paar Programme für einen kommenden Artikel:
We're at iXBT.com are doing this right now and will publish test results soon (Intel & AMD CPU's, „Intel“—>„AMD“ & „AMD“—>„Intel“ string change, 4-6 runs per app, 50-100 app's). If it is OK to use your findings (with all the copyrights), we will :)

Bin mir zwar nicht sicher ob das reicht, die (extended) familiy bits gibts ja auch noch, aber warten wirs mal ab, was kommt :)

ciao

Alex
 
kann es sein, dass er 3dnow bzw. sse als erste richtige Befehlssatzerweiterung ansieht, weil sie im Gegensatz zu mmx nicht auf Integer beschränkt sind, sondern auch Gleitkommazahlenberechnungen beschleunigen?

Wird mmx heute überhaupt noch genutzt?


MfG @
 
Wo steht geschrieben das SIMD sich (Single Instruction Multiple Data) auf Fließkommazahlen beschränkt? MMX wird heute deshlab nicht mehr verwendet, weil es durch SSE "ersetzt" wurde bzw. über die SSE-Unit abgewickelt wird. Macht also keinen Sinn eine Anwendung per MMX zu beschleunigen, wenn man das gleiche auch mit SSE könnte.
.
EDIT :
.

Hm, achso Du meinst er hats absichtlich getan ... Möglich - aber da gäbs sicherlich auch noch effektivere Sachen.

Abgesehen davon, die Kommentare sind interessant, iXBT patch ein paar Programme für einen kommenden Artikel:


Bin mir zwar nicht sicher ob das reicht, die (extended) familiy bits gibts ja auch noch, aber warten wirs mal ab, was kommt :)

ciao

Alex
Absicht möchte ich ihm jetzt nicht unterstellen, war nur eine Feststellung meinerseits. Wer außer AMDler liest so einen Blog schon? (und diese stört es bestimmt nicht) *buck*

Interessant wäre es zu wissen um welche Apps es sich da handelt. (und nein ich habe den blog [noch] nicht weiter gelesen)
 
Absicht möchte ich ihm jetzt nicht unterstellen, war nur eine Feststellung meinerseits. Wer außer AMDler liest so einen Blog schon? (und diese stört es bestimmt nicht) *buck*
Haha, ja da mag in der Tat was dran sein :)
Interessant wäre es zu wissen um welche Apps es sich da handelt. (und nein ich habe den blog [noch] nicht weiter gelesen)
Na das müssen die xbt Leute noch festlegen, aber ich denke schon, dass sie eine gute Badbreite haben werden.

ciao

Alex
 
Da bin ich gespannt darauf, weil je nach Wahl und Ergebnisse, lassen sich Rückschlüssen auf die Verbreitung des ICC schließen. (das interessanteste mMn)
 
Wo steht geschrieben das SIMD sich (Single Instruction Multiple Data) auf Fließkommazahlen beschränkt? MMX wird heute deshlab nicht mehr verwendet, weil es durch SSE "ersetzt" wurde bzw. über die SSE-Unit abgewickelt wird. Macht also keinen Sinn eine Anwendung per MMX zu beschleunigen, wenn man das gleiche auch mit SSE könnte.


Wo schreibe ich was anderes?
Willst du mich immer absichtlich falsch verstehen, oder wie muss man das verstehen?

SSE deckt Integer und Gleitkommazahlen ab und hebt einige Beschränkungen von MMX die die Register (Größe, Umschalten) betrafen auf. MMX und mmx2 waren doch mehr ne fummelei die nie wirklich Bedeutung erlangt hat. Deswegen die Frage, ob Experten vielleicht wirklich erst 3dnow und SSE als die ersten wirklichen Befehlssatzerweiterung ansehen.


Aber darauf werde ich von dir sowieso entweder keine oder nur ne blöde Antwort bekommen.


MfG @
 
Wo schreibe ich was anderes?
SIMD != SIMD = Käse

Willst du mich immer absichtlich falsch verstehen, oder wie muss man das verstehen?
Tue ich das wirklich? Oder täuschst du dich nur?

SSE deckt Integer und Gleitkommazahlen ab und hebt einige Beschränkungen von MMX die die Register (Größe, Umschalten) betrafen auf. MMX und mmx2 waren doch mehr ne fummelei die nie wirklich Bedeutung erlangt hat. Deswegen die Frage, ob Experten vielleicht wirklich erst 3dnow und SSE als die ersten wirklichen Befehlssatzerweiterung ansehen.
Reden wir von Befehlssatzerweiterungen, welche Fließkomma beherrschen oder reden wir von SIMD wie im Blog erwähnt?
Aber darauf werde ich von dir sowieso entweder keine oder nur ne blöde Antwort bekommen.


MfG @
Warum müssen wir persönlich/beleidigend werden? :(
 
Ich kann mir aber auch vorstellen, dass es dem Schreiberling um Float-SIMDs ging.

MMX hat damals sicher was gebracht...zu Zeiten als auch noch jede Aufruestung selbst fuer Office was gebracht hat...aber heute?
 
Ich kann mir aber auch vorstellen, dass es dem Schreiberling um Float-SIMDs ging.
Möglich, aber solange er es nicht hinschreibt, bleibt es falsch. Keiner kann hier Gedanken lesen ;-)

Ist aber jetzt auch egal, die kleine Stelle sollte man nicht überbewerten. Fehler passieren.
Wer mag kann dem guten Agner im relevanten Blog Post am Ende eine Mitteilung reinschreiben, keine Registrierung benötigt.

Er wird es dann sicherlich ändern oder einfach komplett löschen.

ciao

Alex
 
Wer einen VIA Nano hat, kann jetzt mit den CPU IDs spielen, Agner hat ein kleines Utility geschrieben:
I have made a program that can manipulate the CPUID vendor string, family and model number on VIA Nano processors. You can download it from http://www.agner.org/optimize/cpuidfake.zip. It works only on VIA, not on AMD or Intel processors. Unfortunately, it is much more difficult to do this on AMD and Intel processors because it requires virtualization.

You can use my manipulation tool to test if a program runs faster if you cange the CPUID. All you need is a computer with a VIA processor (The VIA Mini-ITX board costs less than 200$ and fits into a standard desktop cabinet).

If you find any benchmarks or other commonly used programs with evidently unfair CPU dispatching then please let me know.
http://www.amdzone.com/phpbb3/viewt...13ad573aa2b9f6143fa1788648f7&start=50#p176208

http://www.agner.org/optimize/cpuidfake.zip

ciao

Alex
 
Ich glaube im Notebook-Forum hättest du da mehr Glück in Sachen Response ;D
Agner hat jetzt ein wenig rumgespielt, und Trommelwirbel, AMD ist der Bösewicht !

Die haben notgedrungen ihre Math Bibliothek mit Intels Fortran Compiler compiliert und sich somit das Problemchen ins Huas geholt *lol*

This issue is getting more and more absurd the more I dig into it. AMD makes a function library called AMD Core Math Library (ACML) to match Intel's Math Kernel Library (MKL). I have tested a Windows version of ACML and found that some of the functions run faster when the CPU vendor ID is artificially changed to "GenuineIntel". Maybe this is not so surprising after all, since this version of ACML is compiled with Intel's Fortran compiler.
(...)
The proposed settlement with FTC requires that Intel shall reimburse its compiler customers for the cost of recompiling their code with a different compiler. While this reimbursement program probably has little more than symbolic significance, it would be funny to see Intel compensating AMD for relying on their compiler. Unfortunately, it will be difficult for AMD to find a better Fortran compiler.
http://agner.org/optimize/blog/read.php?i=115#115
 
Jetzt noch einfacher testbar mit VM Ware:

Author: Agner Fog Date: 2010-08-16 12:24 Andrew Lofthouse wrote:
If VMWare is using hardware virtualization, all cpuid instructions are intercepted and hence can be spoofed.
Thanks a lot for the tip. Now everybody can test if their software has vendor-specific performance. You can get a 60 days evaluation from VMWare. By analogy to Andrew's code, I assume that you can make an AMD processor spoof to be "GenuineIntel" with these lines:

cpuid.0.ebx="0111:0101:0110:1110:0110:0101:0100:0111"
cpuid.0.edx="0100:1001:0110:0101:0110:1110:0110:1001"
cpuid.0.ecx="0110:1100:0110:0101:0111:0100:0110:1110"

The Intel software also checks the family number, which should be set to 6:

cpuid.1.eax="0000:0000:0000:0001:0000:0110:0111:0001"

You can verify this with CPUID. Anybody who finds software with a strong performance effect of the vendor string are welcome to post the details here of mail them to me.
I am currently testing this effect in various math programs. I will post the findings here soon.
http://www.agner.org/optimize/blog/read.php?i=49#118

Die Änderungen muss man in seinem .vmx File einfügen.

ciao

Aelx
 
Zuletzt bearbeitet:
Wenn AMD bei den Tests genauso aufholen kann wie der Nano dazumal gegen den Atom, dann Hallejulia ;D
 
Probier es gerade mal aus, sobald ich jedoch die CPU-IDs in die vmx Config File reinschreibe, gibt beim Starten der virtuellen Maschine einen BlueScreen. Entweder ich mach was falsch oder es funzt dann wohl doch nicht so einfach.
 
Zuletzt bearbeitet:
Also mit XP als VMWare bootet es schonmal, allerding haut die CPUID noch nicht so richtig hin

testg4ew.jpg


Hab momentan nur ein AMD-Intel Hybrid :D. Ich probier mal weiter.
 
Hmm,

der Name ist aus 3 Bit Feldern zusammengebastelt, das sollten eben die 3 Teile:

cpuid.0.ebx="0111:0101:0110:1110:0110:0101:0100:0111"
cpuid.0.edx="0100:1001:0110:0101:0110:1110:0110:1001"
epuid.0.ecx="0110:1100:0110:0101:0111:0100:0110:1110"
sein.

Sieht jetzt so aus, als ob das bei Dir nur für 1 Feld hinhaut. Hab einen Tippfehler in der letzten Reihe gesehen, anstatt epuid, muss das dort natürlich auch cpuid heißen ... hast Du den Tippfehler vielleicht per copy / past mitübernommen ?

Änder vielleicht auch noch die Reihenfolge, vielleicht ist das auch noch wichtig, wer weiss.
Kurz gesagt, versuchs mal so:

cpuid.0.ebx="0111:0101:0110:1110:0110:0101:0100:0111"
cpuid.0.ecx="0110:1100:0110:0101:0111:0100:0110:1110"
cpuid.0.edx="0100:1001:0110:0101:0110:1110:0110:1001"
Viel Erfolg !

Edit:
Aja, setzt mal die Family number vorsichtshalber auf "F", nicht auf 6. "F" sind die P4, dass passt eh ganz gut, da die P4 auch nur maximal SSE3 hatten. Passend dazu wäre noch Model Number 4 oder 6. Da - wenn ich mich recht erinnere - auch noch Abfragen danach, die die Modelnummer nehmen, anstatt die SSE Feature Flags abzufragen .. :(

Also anstatt:
The Intel software also checks the family number, which should be set to 6:

cpuid.1.eax="0000:0000:0000:0001:0000:0110:0111:0001"
Das:
cpuid.1.eax="0000:0000:0000:0001:0000:1111:0110:0010"
Sollte dann wie bei nem Pentium4-D 9x0 aussehen:
Intel%20%20D930%20Review-Intel%20D920%20Review-cpu-3010.png


Viel Erfolg

Alex
 
Zuletzt bearbeitet:
Danke Opteron. Leider startet mit diesen Zeilen XP nicht mehr ......
...
...

aber Windows 7 VMWare

test2z19b.jpg


Tests mach ich später
.
EDIT :
.

Wenn Ihr einen speziellen Benchmark wollt, sagt Bescheid.
 
Hmm, komische Sache, wieso läuft das eine OS, aber das andere nicht .. strange.

Eventuell müßte man noch die ganzen anderen CPUID Register setzen ... wenn mir langweilig ist, schreib ich Dir morgen noch ein paar zusammen.

In der Zwischenzeit könntest Du mal den üblichen 08/15 Krams laufen lassen.
Cinebench
3dmark CPU
Sandra CPU/MEM Benches
und Itunes (das Umwandeln) würde mich auch noch interessieren, gibts da nen Bench ?

Aja und noch ne Frage, hat die VM wirklich nur einen Kern ?

ciao

Alex
 
Nein läuft auf 2 Kernen, CPU-Z zeigt aber nur 1 Kern / Thread an, kann jedoch den 2. Kern auswählen. Keine Ahnung warum XP nicht bootet. Schon kurios..

Hab mal fix Cinebench jeweils 3 mal als AuthenticAMD und 3 mal als GenuineIntel durchlaufen lassen. Der Unterschied ist zwar marginal aber auf jedenfall messbar.

GenuineIntel : ~5800 Punkte
AuthenticAMD : ~5400 Punkte

Weiß nicht wie es sich verhält wenn er die FamilyID von einem C2D bekommt. Teste ich dann mal. Die anderen folgen später.

EDIT:

3dMark06 CPU Bench = kein Unterschied
 
Zuletzt bearbeitet:
Nein läuft auf 2 Kernen, CPU-Z zeigt aber nur 1 Kern / Thread an, kann jedoch den 2. Kern auswählen. Keine Ahnung warum XP nicht bootet. Schon kurios..

Hab mal fix Cinebench jeweils 3 mal als AuthenticAMD und 3 mal als GenuineIntel durchlaufen lassen. Der Unterschied ist zwar marginal aber auf jedenfall messbar.

GenuineIntel : ~5800 Punkte
AuthenticAMD : ~5400 Punkte

Weiß nicht wie es sich verhält wenn er die FamilyID von einem C2D bekommt. Teste ich dann mal. Die anderen folgen später.
Könnte mit der C2D ID in die Hose gehen, falls das Programm schlecht gecoded ist und dann meint es gäb da jetzt SSSE3. Aber probiers mal aus, mehr als abstürzen kanns nicht ;)
400 Punkte Unterschied sind aber schon nicht wenig, sind ja fast 10%.
Welcher Cinebench wars genau ? 10 oder 11.5, 32 oder 64bit ?

Edit:
Ach war wohl noch das 10er, da gabs noch Punkte, aktuell ist 11.5, kannst Du auch mal gegentesten:
Downloadlink bei Maxon
Thread:
http://www.planet3dnow.de/vbulletin/showthread.php?t=375939&highlight=cinebench

Beim 10er fehlte noch die K10 Optimierung, einen Unterschied hatte ich da schon fast erwartet. Jetzt bin ich mal gespannt, wies bei 11.5 ausschaut :)

Aja und was war das ? War das nun single thread, oder hat cinebench auch 2 Threads "gefunden" ?
In dem Fall könntest Du noch die single Thread Leistung testen.

Schon mal vielen Dank

Alex
.
EDIT :
.

So, hab mal noch ein bisschen gebastelt:

Versuchs erstmal damit:

cpuid.0.ebx="0111:0101:0110:1110:0110:0101:0100:0111"
cpuid.0.ecx="0110:1100:0110:0101:0111:0100:0110:1110"
cpuid.0.edx="0100:1001:0110:0101:0110:1110:0110:1001"
cpuid.1.eax="0000:0000:0000:0001:0000:1111:0110:0101"

cpuid.2.eax="0110:0111:0101:1011:0101:0000:0000:0001"
cpuid.2.ebx="0000:0000:0000:0000:0000:0000:0000:0000"
cpuid.2.ecx="0000:0000:0000:0000:0000:0000:0000:0000"
cpuid.2.edx="0000:0000:0111:1101:0111:0000:0000:0000"

Das sollten die P4 Cache Infos sein. 16kB L1 / 2MB L2 und 12kµOps

Wenn das genausogut mit Win7 klappt, dann füg noch das hinzu:


cpuid.80000002.eax="0010:0000:0010:0000:0010:0000:0010:0000"
cpuid.80000002.ebx="0000:0000:0000:0000:0000:0000:0000:0010"
cpuid.80000002.ecx="0000:0000:0000:0000:0000:0000:0000:0010"
cpuid.80000002.edx="0110:1110:0010:1001:0010:0000:0010:0010"


cpuid.80000003.eax="0010:1000:0110:1100:0110:0101:0111:0100"
cpuid.80000003.ebx="0101:0000:0010:0000:0010:1001:0101:0010"
cpuid.80000003.ecx="0110:1001:0111:0100:0110:1110:0110:0101"
cpuid.80000003.edx="0101:0010:0010:1000:0110:1101:0111:0101"



cpuid.80000004.eax="0010:0000:0011:0100:0010:0000:0010:1001"
cpuid.80000004.ebx="0010:0000:0101:0101:0101:0000:0100:0011"
cpuid.80000004.ecx="0011:0000:0011:0000:0011:0101:0011:0001"
cpuid.80000004.edx="0000:0000:0111:1010:0100:1000:0100:1101"


Das ist der Vendor String. Anstatt Phenom X6 sollte dann da stehen P4 mit 1,5 GHz.
Vielleicht verschluckt sich das XP dann auch nicht mehr so arg am Intel X6 ;-)

Bin mir aber nicht sicher ob das auch wirklich funktioniert. Versuchs einfach einmal.

Viel Erfolg und merci

Alex
 
Zuletzt bearbeitet:
Danke, werde ich dann gleich ausprobieren. Hier erstmal einen kurzen Überblick über Cinebench 10 .

Cinebench R10

Pentium 4 - Genuine Intel


32 BIt

1 CPU 3051
x CPU 5801
Speedup 1.91

64 Bit

1 CPU 3632
x CPU 6911
Speedup 1.91


Intel Core - Genuine Intel

32 Bit

1 CPU 3080
x CPU 5896
Speedup 1.92

64 Bit

1 CPU 3727
x CPU 7032
Speedup 1.89

Authentic AMD

32 Bit

1 CPU 2888
x CPU 5418
Speedup 1.88x

64 Bit

1 CPU 3641
x CPU 7055
Speedup 1.92

--------------------------------------------------------------------------
Interessant, dass bei 32 Bit der Pentium 4 Fake 7% gut macht aber bei 64 Bit sogar leicht verliert.



Cinebench R11.5

Pentium 4 - Genuine Intel

32 Bit - 1.82
64 Bit - 1.95

Intel Core - Genuine Intel

32 Bit - 1.83
64 Bit - 1.97

Authentic AMD

32 Bit - 1.78
64 Bit - 1.95

----------------------------------------------------------------------------------

PCMark05


Intel Core - GenuineIntel

9003

K10 - Authentic AMD

8116
 
Zuletzt bearbeitet:
Zurück
Oben Unten