OpenCL中的缓冲区对象和图像缓冲区对象

Meg*_*raj 8 opencl

opencl中Buffer对象和图像缓冲区对象有什么区别?很明显,图像缓冲区速度更快但程度如何?他们必须在哪里使用?

Tim*_*ild 17

OpenCL缓冲区是全局存储器中的1D或2D或3D阵列.它是一个可以通过指针寻址的抽象对象.缓冲区是只读或Write_only或读写.图像缓冲区表示GPU纹理内存.它表示可以通过指定像素x,y,z坐标的函数访问的像素数组.GPU上没有指向图像像素的指针访问权限.

硬件以不同方式处理这两种类型的缓冲区.OpenCL缓冲区位于主机RAM或GPU RAM中,并在两者之间传输.OpenCL图像缓冲区具有OpenCL缓冲区的类似特征.但差异是图像缓冲区是只读或只写.对于只读图像缓冲区,GPU可以在每个计算单元(= 32或64 ALU)中缓存图像像素的副本.典型的高速缓存大小是8K(字节或像素?).此外,由于无法通过GPU上的指针访问图像像素.它们从x,y,z坐标到物理地址的映射可以用几种方式映射.一种方法是Z排序.这将像素聚合为二维,使得x,y方向上的相邻像素线性存储.这有助于加速访问图像滤镜中的相邻像素.

OpenCL缓冲区用于通用数组,特别是用于读写或双精度的数组.OpenCL图像缓冲器用于图像处理或其他信号处理算法,其中输入图像/信号可被视为只读.