Nee, also das wird schon parallelisiert (also für jedes Element ein Thread).
Ich wollte nur zeigen, was eigentlich errechnet wird.
vec==vec*2; hat keine Funktion, oder ist das in einer if-Schleife?
Wie wärs mit vec=vec*2; ?
Die Funktionsweiße ähnelt der einer SSE Einheit, es sind halt nur 160 in deiner Grafikkarte statt den 12 in deiner CPU (wenn du ein Quad hast).
Du musst dir float3 als "echte" Variable vorstellen, also wie float,int,...
du kannst dann natürlich auch diese zu mehrt in einen Stream einfügen.
wenn du dann den Kernel auch für float3 schreibst, dann kann jeder Streamprozessor pro Takt 3 float Einheiten berechnen. (750 MHz * 800 SIMDs(128bit breit)*0.75=450 GFLOP (Wird nie erreicht, da Speicher zu langsam ist)).
Ich wollte nur zeigen, was eigentlich errechnet wird.
vec==vec*2; hat keine Funktion, oder ist das in einer if-Schleife?
Wie wärs mit vec=vec*2; ?
Die Funktionsweiße ähnelt der einer SSE Einheit, es sind halt nur 160 in deiner Grafikkarte statt den 12 in deiner CPU (wenn du ein Quad hast).
Du musst dir float3 als "echte" Variable vorstellen, also wie float,int,...
du kannst dann natürlich auch diese zu mehrt in einen Stream einfügen.
Code:
unsinged int Dim[]={Elems};
brook::Stream<float3>MyStream(1,Dim);
wenn du dann den Kernel auch für float3 schreibst, dann kann jeder Streamprozessor pro Takt 3 float Einheiten berechnen. (750 MHz * 800 SIMDs(128bit breit)*0.75=450 GFLOP (Wird nie erreicht, da Speicher zu langsam ist)).