Suche SSE-Tutorial
-
Badestrand schrieb:
Evtl wirst du eher im Assembler-Forum oder -FAQ fündig

Hab ich nachgesehen aber nichts gefunden wie ich das ganze ansatzweise in c++ implmentieren könnte und außerdem bin ich nicht so für assembler sondern wollte einfach nur beschleunigung der funktionen
-
Aber du willst schon per Hand den Assembler-Code eintippen und nicht den Compiler auf SSE/MMX optimieren lassen, oder?
Hab doch noch was gefunden:
http://developer.intel.com/design/pentiumiii/sml/245043.htm
-
THX

-
Was kann man mit SSE eigentlich machen und vorallem wie? Die Links helfen mir irgendwie nicht weiter
-
TuT schrieb:
Was kann man mit SSE eigentlich machen und vor allem wie? Die Links helfen mir irgendwie nicht weiter
Mal schauen ob ich als Erklärbär was tauge:
Der Prozessor hat intern ein paar eigene Variablen (auch Register genannt) und kann mit denen und mit Werten aus dem Arbeitsspeicher rechnen. Am Anfang konnte er halt nur so Sachen wie "Verschiebe den Wert von der Adresse 0x987378 aus dem Arbeitsspeicher in dein Register 'eax'" oder "Multipliziere das Register eax mit 5" oder so. Aus solchen Befehlen sind auch alle normalen Programme aufgebaut.
Da man für Audio- und Videobearbeitung ziemlich viel Rechenpower braucht (ebenso wie für mathematische Sachen wie Matrizen-Operationen), hat man extra neue Befehle eingeführt, die für eben solche Anwendungen zugeschnitten sind.
Mit den neuen Befehlen können z.B. acht 8-Bit-Variablen in einem großen Register in der CPU gehalten werden und mit einem Befehl werden diese 8 Werte alle addiert - was mit normalen Instruktionen ne ganze Reihe an Befehlen gebraucht hätte.Anwenden kann man die SSE-/MMX-/Sonstwas-Befehle in C++ mit Inline-Assembler (Assembler-Code sind die Prozessor-Befehle). Dein Compiler erzeugt aus deinem normalen C++-Code immer Assembler-Code, zusätzlich hast du noch die Möglichkeit, direkt Assembler-Befehle einzubetten, eben auch SSE-Befehle. Das wird vor allem im Bereich 3D-Grafikprogrammierung und Video-(De-)Kodierung benutzt

-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hat sich schonmal jemand die Mühe gemacht diesen Assembler-Code in brauchbare C++ Funktionen zu packen wie (nur so dahergeholt) "void BerechneWurzel(float *f)" der man ein float-array gibt und dann die wurzeln berechnet (und in dem array speichert) ???
-
make it work, make it fast. in der reihenfolge, sonst wird das nichts

-
rapso schrieb:
make it work, make it fast. in der reihenfolge, sonst wird das nichts

Häääää

Heißt das Ja oder Nein ???

-
Hat das jemand in funktionen gepackt oder nicht? Wenn ja, wo finde ich die?
-
Weiß anscheinend keiner, musst du wohl suchen.
-
Ja das gibts schon in Funktionen, ist inzwischen bei den meisten compilern dabei
#include<emmintrin.h>
#include<xmmintrin.h>
#include<mmintrin.h>
#include<mm3dnow.h>
-
Die Datein hat mein Compiler aber wie finde ich heraus welche funktion was macht? Gibts da ne Übersicht auf Deutsch?
-
auf deutsch gibts das wohl nicht.
http://www.intel.com/design/processor/manuals/253666.pdf
http://www.intel.com/design/processor/manuals/253667.pdfDie Intel Manuals könnten helfen.
-
In der MSDN sind AFAIK die ganzen SIMD intrinsics dokumentiert, also MMX, SSE und SSE2 halt.