SSE2 optimierung ?
-
SSE2 wird vom Athlon XP nicht unterstützt.
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
camper schrieb:
SSE2 wird vom Athlon XP nicht unterstützt.
Weis wer wie das VS das SSE reinnimmt?
Also fügt der selbst ne Abfrage zum Code hinzu, ob SSE2 da ist und führt dann entsprechenden Code aus, je nachdem ob was da ist oder nicht.
Oder wird einfach SSE2 kompiliert und wenn das Zielsystem dieses nicht hat, gibts nen Crash?
-
AFAIk wird hier nichts überprüft... wenn Du also /arch:SSE(2) aktivierst, dann muss es der Prozessor auch unterstützen, sonst gibt es Probleme (hab es aber nicht verifiziert!).
Ein
double a, b, c; a = 1; b = 2; c = a/b;erzeugt ohne SSE(2):
double a, b, c; a = 1; 00431A9E D9 E8 fld1 00431AA0 DD 5D F4 fstp qword ptr [a] b = 2; 00431AA3 DD 05 38 FD 48 00 fld qword ptr [__real@4000000000000000 (48FD38h)] 00431AA9 DD 5D E4 fstp qword ptr [b] c = a/b; 00431AAC DD 45 F4 fld qword ptr [a] 00431AAF DC 75 E4 fdiv qword ptr [b] 00431AB2 DD 5D D4 fstp qword ptr [c]mit SSE2 ein:
double a, b, c; a = 1; 00431A9E F2 0F 10 05 48 FD 48 00 movsd xmm0,mmword ptr [__real@3ff0000000000000 (48FD48h)] 00431AA6 F2 0F 11 45 F4 movsd mmword ptr [a],xmm0 b = 2; 00431AAB F2 0F 10 05 38 FD 48 00 movsd xmm0,mmword ptr [__real@4000000000000000 (48FD38h)] 00431AB3 F2 0F 11 45 E4 movsd mmword ptr [b],xmm0 c = a/b; 00431AB8 F2 0F 10 45 F4 movsd xmm0,mmword ptr [a] 00431ABD F2 0F 5E 45 E4 divsd xmm0,mmword ptr [b] 00431AC2 F2 0F 11 45 D4 movsd mmword ptr [c],xmm0
-
@ camper
also meinst du, bei irgendwem kommt mit folgendem code#include <math.h> #include <stdio.h> int main() { int i = _set_SSE2_enable(1); if (i) printf("SSE2 enabled.\n"); else printf("SSE2 not enabled; processor does not support SSE2.\n"); }auch die zeile " SSE2 enabled " ?
mfg
houseps.: aber sse schein ich auch nicht aktivieren zu können mit /arch:sse
- die geschwindigkeit ist exakt gleich ...weiß jemand zufällig, wo bei visual c++ 2006 expr. dieser knopf, den groovemaster erwähnte liegt? hat hier jemand selbst die oberfläche und keine probleme, das zu aktivieren ?
-
don-house schrieb:
weiß jemand zufällig, wo bei visual c++ 2006 expr. dieser knopf, den groovemaster erwähnte liegt? hat hier jemand selbst die oberfläche und keine probleme, das zu aktivieren ?
Project|Properties|Configuration Properties|C/C++|Code Generation|Enable Enhanced Instructions Set: "Not Set" / "Streaming SIMD Extensions" / "Streaming SIMD Extensions 2"
-
don-house schrieb:
ps.: aber sse schein ich auch nicht aktivieren zu können mit /arch:sse
- die geschwindigkeit ist exakt gleich ...Nochmal, lass dir ein Assembler Listing erstellen, dann siehst du, ob SSE verwendet wird. Allein von der Ausführungsgeschwindigkeit kann man das nicht unbedingt ableiten.
Zudem, was wird denn in der Anwendung gerechnet? SSE ist für Gleitkommaberechnungen mit einfacher Genauigkeit, also float. SSE2 ist für doppelte Genauigkeit, also double. Wenn deine Anwendung also nur mit double rechnet, wirst du trotz SSE keinen Performancegewinn haben.
-
Also ich würde nicht drauf wettem, dass die Express die Optimierung hat.
Als ich im November letzten Jahres(also 2005, muss man ja so kurz vor Silvester anfügen^^)die Express-Edition genutzt habe und Code-Optimierung einstellen wollte, kam sogar nen Compilefehler. Da wurde das Flag sofort abgewiesen.
-
Die Express besitzt auf jeden Fall den optimierenden Compiler und unterstützt auch SSE und SSE2. Das war früher mal, dass Schüler, Studenten, Autoren, ect.pp Versionen nur den Standard Compiler hatten. Wenn der Compiler deine Code-Optimierung nicht akzeptiert hat, dann lag das wahrscheinlich an anderen Flags, zB in Verbindung mit Debug Informationen, die das nicht zugelassen haben.
-
Pellaeon schrieb:
Also ich würde nicht drauf wettem, dass die Express die Optimierung hat.
Doch die EE hat keinerlei einschränkungen bis aus das "/analyze" Flag (also SAL-Code-Analyse kann die EE nicht).
-
Jochen Kalmbach schrieb:
Pellaeon schrieb:
Also ich würde nicht drauf wettem, dass die Express die Optimierung hat.
Doch die EE hat keinerlei einschränkungen bis aus das "/analyze" Flag (also SAL-Code-Analyse kann die EE nicht).
Profiler geht auch nicht, der geht ja auch bloss ab der Team Edition...