Nutzen von SSE, SSE2
-
zb. im Gebiet der Bildverarbeitung, wo man schnell viele bits addieren, subtrahieren muss...
http://www.intel.com/cd/software/products/asmo-na/eng/302910.htm
http://infmath.uibk.ac.at/teaching/files/1098871690/Bakkarbeit_ChristianBauer1.pdf
http://www.cvl.isy.liu.se/ScOut/Publications/Papers/ssba05_sf.pdf#search=%22Intel%20IPP%20SSE%22
http://www.codeproject.com/cpp/sseintro.asp
-
ich nutze sse - uebrigens auf 'nem amd-prozessor.
-
atlastraeger schrieb:
Lohnt sich der Aufwand, SSE- oder SSE2-Instruktionen selbst zu nutzen, oder reicht Euch die Optimierung, die der Compiler erreicht?
Das kommt drauf an. Wenn man eine Funktion noch weiter optimieren muss (der Profiler weiß so etwas) und man den Code besser optimieren kann, als der Compiler es tut, warum nicht?
In anderen Fällen (was wohl den meisten entsprechen dürfte), ist dies natürlich nicht nötig.
-
Die Frage ist nur, woher weiß ich, ob ich besser bin als der Compiler? Verwendet Ihr dazu z.B. QueryPerformanceCounter?
Es geht konkret in der Tat um Aufgaben im Bereich der Bildverarbeitung (z.B. Spiegeln eines Bildes).
-
sofern keine floating-point-praezision fuer die pixel-berechnungen notwendig ist, kommt man bei bildverarbeitung meistens mit mmx aus, was auch auf mehr prozessoren zur verfuegung steht.
-
atlastraeger schrieb:
Die Frage ist nur, woher weiß ich, ob ich besser bin als der Compiler? Verwendet Ihr dazu z.B. QueryPerformanceCounter?
Dazu verwende ich nen Profiler.
-
Okay, schonmal vielen Dank für Eure Meinungen.
Bleibt mir noch zu fragen: was für Profiler verwendet Ihr?
-
Ich verwende CodeAnalyst von AMD gratis runter zu laden
Weiss aber grad nicht mehr ob der auf Intels auch funktioniert
-
Mein Profiler: Oszilloskop oder Hardwaretimer

-
Mit folgender Zeile kannst du feststellen ob dein Compiler überhaupt irgendwelche SSE Register verwendet (ist beim g++ standardmässig ausgeschaltet) und wie viele Instruktionen es sind. Ist aber nur ein ungefähres Maß für den Grad der Optimierung.
objdump -d MyFastApp | grep xmm | wc -lZum Einschalten von SSE Code dann die folgenden Flags (SSE2) verwenden:
-msse2 -mfpmath=sseDamit hab ich enorme Performancegewinne erzielt, war allerdings auch gutmütiger Bilverarbeitungscode.