Was sollte "memcpy" in OpenCL-Kerneln ersetzen?

9

Die OpenCL Sprache, die C99 erstreckt, bietet keine Memcpy Funktion. Was sollte stattdessen verwendet werden?

    
grrussel 13.04.2011, 17:13
quelle

1 Antwort

4

Soweit ich weiß, gibt es nichts, was in OpenCL definiert ist. OpenCL bietet kein Konzept wie dynamischer Speicher und daher wird eine solche Funktionalität nicht benötigt.

Sie könnten einfach Ihr Array mit for durchlaufen und die Daten Element für Element kopieren. Das Ziel-Array hat jedoch eine feste Größe, da die Länge des Arrays zum Zeitpunkt der Kompilierung angegeben werden muss.

Auf der anderen Seite wurde OpenCL (und OpenGL als eine Art Ursprung) auf eine eher statische Art und Weise definiert. Die Daten müssen der GPU zur Verfügung gestellt werden und die Ergebnisgröße muss definiert werden. Die GPU berechnet die Eingabe für den vordefinierten Ausgabeort. Es ist nicht dazu gedacht, mehr Prozesse innerhalb der GPU zu erzeugen, und es ist auch nicht dazu gedacht, dynamisch Speicher zuzuweisen, um den Host dabei nicht zu stören.

    
Rick-Rainer Ludwig 20.04.2011 18:27
quelle

Tags und Links