¿Cuál es la diferencia entre el objeto de búfer y el objeto de búfer de imagen en opencl? Es evidente que el buffer de imagen es más rápido, pero ¿en qué medida? Donde deben ser usados?Objeto de búfer y objeto de búfer de imagen en OpenCL
Respuesta
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.
FYI, a partir de OpenCL 2.x, el objeto de imagen puede ser de lectura-escritura.
- 1. ¿Cuáles son las diferencias entre un objeto de búfer de trama y un objeto de búfer de píxel en OpenGL?
- 2. pitón búfer de tipo fichero objeto
- 3. Declaraciones de búfer de Cython para miembros de objeto
- 4. Cómo renderizar/dibujar objeto de búfer en framebuffer sin glDrawPixels
- 5. Usando el búfer de protocolo como objeto de datos general?
- 6. Búfer binario en Python
- 7. cómo redirigir el objeto ostream a un búfer temporal?
- 8. OpenGL 3.x: infracción de acceso al usar el objeto de búfer de vértice y glDrawElements (...)
- 9. StreamReader y búfer en C#
- 10. GetPrivateProfileString - Longitud de búfer
- 11. Visualizar el búfer de profundidad
- 12. Error de búfer en avcodec_decode_audio4()
- 13. Creación y dibujo de imágenes enormes (en búfer) en Java
- 14. Dispositivo OpenAL, búfer y relación de contexto
- 15. ciclismo de búfer en Emacs: evitar los arañazos y mensajes búfer
- 16. Deshabilitar el búfer de salida en PHP
- 17. ¿Doble búfer en WPF?
- 18. ¿Qué sucede si no elimino un Objeto de búfer de vértice cuando mi programa se cierra?
- 19. OpenGL ES 2.0 y objetos de búfer de vértice (VBO)
- 20. Renderización en el búfer de Emacs
- 21. Objeto de imagen seleccionable
- 22. OpenGL confusión búfer de vértices
- 23. PHP - búfer de salida anidada
- 24. Histograma de imagen OpenCL
- 25. Dillema con desbordamiento de búfer
- 26. Problema de almacenamiento en búfer de InputStreamReader
- 27. Cómo cargar archivos en el búfer y cambiar al búfer en el inicio en Emacs
- 28. ¿Para qué sirve el tipo de búfer de Python?
- 29. accediendo a un búfer de vértices (matriz de búfer) en un sombreador de fragmentos
- 30. ¿Convierte la lista de flotantes en el búfer en Python?
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
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. –