Opencl 为什么要使用image1d\u buffer\t?它支持普通取样器吗?

Opencl 为什么要使用image1d\u buffer\t?它支持普通取样器吗?,opencl,Opencl,我正在尝试理解键入的image1d\u buffer\t。据我所知,这是一幅由缓冲区制作的1D图像。与非由缓冲区生成的图像相比,缓冲区图像的优势在于通常可以大得多(它确实取决于硬件,但最小大小更大)。但是,你不能使用采样器的线性插值,对吗?我在找 那么,为什么还要使用图像而不仅仅是缓冲区呢?是的,您可以正确地说,您只能对image1d\u buffer\t类型使用无采样读取功能,因此无法使用线性插值或边缘处理功能 这是一个小小的方便,但是当使用图像读/写函数时,您可以更改用于存储像素值的数据类型

我正在尝试理解键入的
image1d\u buffer\t
。据我所知,这是一幅由
缓冲区制作的1D图像。与非由缓冲区生成的图像相比,缓冲区图像的优势在于通常可以大得多(它确实取决于硬件,但最小大小更大)。但是,你不能使用采样器的线性插值,对吗?我在找


那么,为什么还要使用图像而不仅仅是缓冲区呢?

是的,您可以正确地说,您只能对
image1d\u buffer\t
类型使用无采样读取功能,因此无法使用线性插值或边缘处理功能


这是一个小小的方便,但是当使用图像读/写函数时,您可以更改用于存储像素值的数据类型,而无需更改内核代码。类似地,您有(无采样器)
read_imagef
功能,它将为您标准化像素值(以及相应的
write_imagef
功能)。

1D图像本质上是一个缓冲区(与任意D图像一样)。不同之处在于采样能力缓冲区=否,图像=是。一维图像的采样能力与二维图像相同。关于大小,我认为您将无法使用比缓冲区更多的图像空间。这是没有意义的。与常规缓冲区相比,使用图像缓冲区有什么性能优势吗?缓存是否更智能?@AlexRothberg有可能
image1d\u buffer\t
加载将使用纹理缓存,尽管考虑到采样器功能有限,我不确定会是这样。如果不实际尝试,我无法确定,但我的猜测是不会有任何性能差异。我最近遇到了同样的问题,并评估了AMD R9 290 GPU上正常缓冲区和图像缓冲区之间的性能。事实证明,至少在我的硬件和测试设置上存在差异(图像缓冲区往往更快)。所以,我想缓存确实更聪明。结果可以在相应的文件夹中检出。