Frage

Ich bin ziemlich neu in OpenCL also bitte Geduld mit mir.

In der ersten Iteration von meinem Code, habe ich grundlegende Speicherpuffer für großen Datensätze und erklärte sie global. Aber jetzt, wo ich bin auf der Suche das Timing zu verbessern, wollte ich Texturspeicher für diesen Einsatz. In der CUDA-Version verwenden wir cudaBindTexture und tex1Dfetch die Daten für ein großes 1D float-Array zu erhalten. Von meinem Verständnis der Beschreibung ist Texturspeicher die gleichen wie Bildspeicher. da es nur 2D- und 3D-Bildobjekte mit max Höhen und Breiten sind jedoch, ich laufe in einige Probleme. Mein Array größer als max Höhe / Breite, aber nicht maximale Höhe * max Breite. Muss ich meine konvertieren 1D-Array in 2D? Oder gibt es einen besseren Weg, es zu tun?

Oder bin ich völlig aus?

Ich habe gelesen http://forums.nvidia.com/index.php? showtopic = 151.743 und http://forums.nvidia.com/index. php? showtopic = 150454 aber sie waren nicht genau schlüssig, ob die Texturspeicher in Best Practices genannten und Programmierhandbuch in der Tat Bildobjekte war.

Danke und jede Hilfe / Anregungen sind sehr willkommen!

War es hilfreich?

Lösung

Ich fand die beste Antwort als Antwort auf meinen Beitrag auf NVidia Forum hier .

Andere Tipps

  

Meine Array größer als max Höhe / Breite, aber nicht maximale Höhe * max Breite. Muss ich meine konvertieren 1D-Array in 2D?

Ja, die Textur-Hardware hat Beschränkungen für die maximalen Indexwerte. Wenn Sie diese Werte überschreiten, werden Sie zu konvertieren müssen mehrere Indexwerte.

sagte, dass ich damit nicht sagen, dass Texturzugriff Umwandlung wird Ihr Programm zur Beschleunigung.

OpenCL 1.2 unterstützt 1D Texturen. Das Problem wird NVIDIA unterstützt nur OpenCL 1.1 im Gegensatz zu AMD oder Intel ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top