2012-09-09 48 views
6

¿Cómo interpretar la salida de información de memoria de textura por deviceQuery muestra para saber el tamaño de la memoria de textura? Aquí está la salida de mi memoria de textura.¿Cuál es el tamaño de mi memoria de textura CUDA?

máximo de la textura Dimensión Tamaño (x, y, z) 1D = (65.536), 2D = (65536,65535), 3D = (2048,2048,2048)
Max Layered Texture Tamaño (DIM) x capas 1D = (16.384) x 2048, 2D = (16384,16384) x 2048

Respuesta

3

La salida muestra que las dimensiones máximas de textura son:

Para texturas 1D 65536 Para texturas 2D 65.536 * 65.535 Para texturas 3D 2048 * 2048 * 2048

Si desea el tamaño en bytes, multiplique eso por el número máximo de canales (4) y el tamaño máximo de subpíxeles (4B).

(Para capas de texturas, se multiplican los números correspondientes que tienes para las dimensiones por el número de capas como máximo lo que tienes.)

Sin embargo, este es el tamaño máximo de una textura única, no la memoria disponible para todos texturas.

+0

Pero supongamos que tengo un trozo de datos, entonces ¿cómo debo saber si eso puede acomodarse en la memoria de textura o no? –

+0

Para eso necesita consultar la memoria libre (cuMemGetInfo), no el máximo soportado. –

8

Es un error común, pero no existe la "memoria de textura" en las GPU CUDA. Solo hay texturas, que son asignaciones de memoria global a las que se accede a través de hardware dedicado que tiene limitaciones incorporadas de caché, filtrado y direccionamiento que conducen a los límites de tamaño que ve reflejados en la documentación y en la consulta del dispositivo. Por lo tanto, el límite es aproximadamente la cantidad libre de memoria global (que permite el relleno y la alineación en las matrices CUDA) o los límites dimensionales que ya citó.

+0

Tengo una gran matriz asignada a través de cudaMalloc. Esta matriz debe ser referida muchas veces. Quería usar la función de memoria de textura aquí. ¿Es posible? –

+3

@ username_4567: puede vincular la memoria lineal asignada con 'cudaMalloc' a una textura unidimensional. Si desea texturas dimensionales más altas, necesita usar una memoria lineal inclinada o una matriz cuda. – talonmies

+1

@talonmies por memoria lineal inclinada ¿se refiere a la memoria asignada por cudaMalocPitch()? – sgarizvi

Cuestiones relacionadas