Wie man Ati Stream Programmiert

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.
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)).
 
hi,
Blitzmerker schrieb:
SSE Einheit ... 12 in deiner CPU (wenn du ein Quad hast).
du meinst wohl: 1 SIMD-Einheit pro Kern (also 4 in einer Quadcore-CPU), bei denen man dann parallel mit 4 float‘s oder 2 double‘s arbeiten kann (außerdem noch: packed byte,word,dword,qword).

grüße, Woey
 
Ja klar, ich meinte vec=vec*2, das andere wäre ja ein Vergleich ...

Also das alles hört sich schon verdammt interessant an. Vielleicht werde ich dazu was in meiner Physik-Masterarbeit in ein paar Jahren machen. :) Wobei das eigentlich zu "informatik-lastig" wäre.

Nachtrag: Der Core 2 von Intel ist sogar 4-fach skalar. Intel nennt es "Intel Wide Dynamic Execution".
 
Zuletzt bearbeitet:
@Blitzmerker:

naja, welcher moderne (Desktop) Prozessor beherrscht heute nicht die Out-of-order execution. Solange die Berechnungen Untereinander nicht abhängig sind können diese natürlich parallel abgearbeitet werden, vorausgesetzt dass genügend entsprechende Recheneinheiten(z.B. zum addieren) vorhanden sind.
 
@Woey:
Genau deswegen hab ich auch 12 Einheiten geschrieben. Es sind ja sogar 16.
Durch Out-Of-Order wird dadurch die Geschwindigkeit u.U. erheblich gesteigert.
Allerdings sind dann die Prozessoren trotzdem noch um ein Vielfaches langsamer als eine normale Grafikkarte, auch aufgrund der Speicherbandbreite (150 GB/s (4870) <-> 6,4 GB/s (Core2 FSB 1600)).
 
Zurück
Oben