2010-12-17 5 views
0

Ich bin gerade dabei, OpenCL über die Python-Bindung Clyther zu entdecken. So weit bin ich mit einem sehr einfachen Skript, um die Sünde oder cos von einem Puffer von 65536 zu bekommen. Anscheinend 65536 ist die Grenze für die Puffer auf meiner Karte, aber ich würde 16 Millionen Zahlen in meinem Puffer haben, wie würde ich gehen darüber, ohne die CPU ständig dazu zu bringen, Daten abzurufen/zu senden?Verarbeitungspuffer größer als 65536 in Clyther/OpenCL

Was ich bisher tun, ist, füllen Sie Puffer, führen Sie Kernel, Puffer abrufen, in einer Schleife, aber das trifft die CPU schlecht.

Ich schaute ein wenig auf OpenCL-Dokumente, aber ich habe gerade nicht verstanden, wie das erreicht wird.

Danke

Antwort

2

Diese schrecklich wie Sie Speicher verwenden __constant aussieht. Die Lösung ist stattdessen __global Speicher zu verwenden, aber Sie müssen vorsichtig sein, wie Sie auf es für beste Leistung zugreifen.

__constant Speicher ist ein spezieller Adressraum für häufig verwendete konstante Werte, ist aber in Größe auf aktuellen GPUs beschränkt.