2012-03-28 24 views

Respuesta

14

Un OpenCL Buffer es una matriz 1D o 2D o 3D en la memoria global. Es un objeto abstracto que se puede abordar a través de un puntero. Los búferes son de solo lectura o Write_only o Read-Write. Un búfer de imagen representa la memoria de textura GPU. Representa una matriz de píxeles que se puede acceder a a través de funciones que especifican las coordenadas píxel x, y, z. No hay acceso de puntero a Image Pixels en la GPU.

El hardware trata estos dos tipos de almacenamientos intermedios de manera diferente. Un búfer de OpenCL está en Host RAM o GPU RAM y se transfiere entre los dos. Un búfer de imagen OpenCL tiene características análogas de un búfer OpenCL. Pero las diferencias son Image Buffer son solo de lectura o solo escritura. Para los búferes de imagen de solo lectura, la GPU puede almacenar en caché las copias de los píxeles de la imagen en cada unidad de cálculo (= 32 o 64 ALU). Típico, el tamaño de la memoria caché es 8K (¿bytes o píxeles?). Además, dado que no se puede acceder a los píxeles de la imagen mediante un puntero en la GPU. Su mapeo desde las coordenadas x, y, z a la dirección física se puede mapear de varias maneras. Una forma es hacer un pedido Z. Esto agrupa los píxeles en dos dimensiones para que los píxeles vecinos en las direcciones x, y se almacenen linealmente. Esto ayuda a acelerar el acceso a los píxeles vecinos en los filtros de imagen .

Los búferes de OpenCL se utilizan para matrices generales y especialmente para matrices de lectura-escritura, o precisión doble. Los búfers de imagen OpenCL se utilizan para el procesamiento de imágenes u otros algos de procesamiento de señales donde la imagen/señal de entrada puede tratarse como de solo lectura.

+0

muchas gracias por su repetición. Aprendí mucho, pero también quería saber cuál es más rápido y en qué porcentaje – Megharaj

+0

No existe una respuesta genérica a la cual es más rápida y en qué porcentaje. Depende de cómo accede su código a la memoria y en qué dispositivo se ejecuta. –

3

FYI, a partir de OpenCL 2.x, el objeto de imagen puede ser de lectura-escritura.

Cuestiones relacionadas