2012-09-09 16 views
6

Come interpretare l'output di informazioni sulla memoria texture dal campione deviceQuery per conoscere le dimensioni della memoria trama? Ecco l'output della mia memoria texture.Qual è la dimensione della mia memoria texture CUDA?

massima texture Dimensione Formato (x, y, z) = 1D (65536), 2D = (65536,65535), 3D = (2048,2048,2048)
Max Layered Texture Size (dim) x strati 1D = (16384) x 2048 = 2D (16384,16384) x 2048

risposta

3

L'output mostra che le dimensioni massime della trama sono:

Per le texture 1D 65536 Per texture 2D 65536 * 65535 Per trame 3D 2048 * 2048 * 2048

Se si desidera la dimensione in byte, moltiplicare quella per il numero massimo di canali (4) e la dimensione massima dei pixel secondari (4B).

(Per texture stratificate, moltiplicare i numeri rilevanti hai per le dimensioni per il numero di livelli massimi che hai.)

Tuttavia, questa è la dimensione massima per una singola texture, non la memoria disponibile per tutti textures.

+0

Ma supponiamo di avere una serie di dati, quindi come dovrei sapere se questo può ospitare memoria texture o no? –

+0

Per questo è necessario interrogare la memoria libera (cuMemGetInfo), non il massimo supportato. –

8

È un malinteso comune, ma non esiste una "memoria texture" nelle GPU CUDA. Ci sono solo trame, che sono allocazioni di memoria globale a cui si accede tramite hardware dedicato che ha limitazioni integrate di cache, filtro e indirizzamento che portano ai limiti di dimensioni che si vedono riportati nella documentazione e nella query del dispositivo. Quindi il limite è pari a, ovvero la quantità di memoria globale (che consente il riempimento e l'allineamento negli array CUDA) oi limiti dimensionali già citati.

+0

Ho un grande array assegnato tramite cudaMalloc. Questo array deve essere riferito più volte. Volevo usare la funzionalità della memoria delle texture qui. È possibile? –

+3

@ username_4567: È possibile associare la memoria lineare allocata con 'cudaMalloc' a una trama monodimensionale. Se vuoi trame dimensionali più alte devi usare una memoria lineare o un array di cuda. – talonmies

+1

@talonmies per memoria lineare inclinata intendi la memoria allocata da cudaMalocPitch()? – sgarizvi

Problemi correlati