Pitch Alignment für 2D Texturen
2D-Texturen sind eine nützliche Funktion von CUDA in Bildverarbeitungsanwendungen. Um den Pitch-Linear-Speicher an 2D-Texturen zu binden, muss der Speicher ausgerichtet werden.cudaMallocPitch
ist eine gute Option für die ausgerichtete Speicherzuweisung. Auf meinem Gerät kehrte die Tonhöhe durchcudaMallocPitch
ist ein Vielfaches von 512, d. h. der Speicher ist auf 512 Byte ausgerichtet.
Die tatsächliche Ausrichtungsanforderung für das Gerät wird von bestimmtcudaDeviceProp::texturePitchAlignment
Das sind 32 Bytes auf meinem Gerät.
Meine Frage ist:
Wenn die tatsächliche Ausrichtungsanforderung für 2D-Texturen 32 Byte beträgt, warum dann?cudaMallocPitch
512 Byte ausgerichteten Speicher zurückgeben?
Ist es nicht eine Verschwendung von Gedächtnis? Wenn ich beispielsweise ein 8-Bit-Image der Größe 513 x 100 erstelle, belegt es 1024 x 100 Byte.
Ich bekomme dieses Verhalten auf folgenden Systemen:
1: Asus G53JW + Windows 8 x 64 + GeForce GTX 460M + CUDA 5 + Core i7 740QM + 4 GB RAM
2: Dell Inspiron N5110 + Windows 7 x 64 + GeForce GT525M + CUDA 4.2 + Corei7 2630QM + 6 GB RAM