2012-09-09 5 views
6

Wie zu interpretieren Texturspeicher Informationen Ausgabe von deviceQuery Beispiel Textur Speichergröße wissen? Hier ist die Ausgabe meines Texturspeichers.Wie groß ist mein CUDA Texturspeicher?

Max Texture Dimension Größe (x, y, z) 1D = (65536), 2D = (65536,65535), 3D = (2048,2048,2048)
Max Layered Texturgröße (dim) x Schichten 1D = (16384) x 2048, 2D = (16384,16384) x 2048

Antwort

3

Die Ausgabe zeigt, dass die maximalen Texturabmessungen:

für 1D- Texturen 65536 Für 2D-Texturen 65536 * 65535 Für 3D-Texturen 2048 * 2048 * 2048

Wenn Sie die Größe in Bytes wünschen, multiplizieren Sie diese mit der maximalen Anzahl von Kanälen (4) und der maximalen Subpixelgröße (4B).

(Für mehrschichtige Texturen, multiplizieren die entsprechenden Zahlen, die Sie durch die Anzahl der maximalen Schichten Sie bekamen für die Dimensionen bekommen.)

Dies ist jedoch die maximale Größe für eine einzelne Textur, nicht der verfügbare Speicher für all Texturen.

+0

Aber angenommen, ich habe einen Teil der Daten, also wie soll ich wissen, ob das im Texturspeicher Platz findet oder nicht? –

+0

Dafür müssen Sie freien Speicher abfragen (cuMemGetInfo), nicht maximal unterstützt. –

8

Es ist ein weit verbreitetes Missverständnis, aber in CUDA GPUs gibt es kein "Texturspeicher". Es gibt nur Texturen, bei denen es sich um globale Speicherzuordnungen handelt, auf die über dedizierte Hardware zugegriffen wird, die integrierte Cache-, Filter- und Adressierungsbeschränkungen aufweist, die zu den in der Dokumentation und der Geräteabfrage angegebenen Größenbeschränkungen führen. Das Limit ist entweder ungefähr die freie Menge des globalen Arbeitsspeichers (ermöglicht das Auffüllen und Ausrichten in CUDA-Arrays) oder die Dimensionsgrenzen, die Sie bereits angegeben haben.

+0

Ich habe ein großes Array über cudaMalloc zugewiesen. Dieses Array muss mehrmals referenziert werden. Ich wollte hier die Funktion des Texturspeichers verwenden. Ist es möglich? –

+3

@ username_4567: Sie können mit 'cudaMalloc' zugewiesenen linearen Speicher an eine eindimensionale Textur binden. Wenn Sie höherdimensionale Texturen wünschen, müssen Sie einen linearen Speicher oder ein Cuda-Array verwenden. – talonmies

+1

@talonmies von linearem Speicher gemeint meinen Sie den Speicher von cudaMalocPitch() zugeordnet? – sgarizvi

Verwandte Themen