opencl中的Buffer对象和图像缓冲区对象有什么区别?很明显,图像缓冲区更快,但程度如何?他们必须在哪里使用?OpenCL中的缓冲区对象和图像缓冲区对象
5
A
回答
14
OpenCL缓冲区是全局内存中的一维或二维或三维数组。它的抽象对象 可以通过指针寻址。缓冲区是只读或只写或读写的。 图像缓冲区表示GPU纹理内存。它表示可以通过函数指定像素x,y,z坐标来访问 的像素阵列。 GPU上没有指针访问图像像素。
硬件以不同的方式处理这两种类型的缓冲区。 OpenCL缓冲区可以在 主机RAM或GPU RAM中并在两者之间传输。 OpenCL Image Buffer具有类似于OpenCL Buffer的特征 。但区别在于Image Buffer是只读或只写。对于只读图像缓冲区,GPU可以在每个计算单元中缓存图像像素的副本(= 32或64 ALU)。典型的缓存大小是8K(字节或像素?)。 此外,由于无法通过GPU上的指针访问图像像素。他们从 x,y,z坐标到物理地址的映射可以用几种方式进行映射。一种方法是Z排序。这使得像素在二维中集中,使得x,y方向上的相邻像素线性存储。这有助于加速访问 图像过滤器中的相邻像素。
OpenCL缓冲区用于常规数组,尤其是用于读写, 或双精度的数组。 OpenCL Image Buffers用于图像处理或其他信号处理算法 ,其中输入图像/信号可以视为只读。
3
仅供参考,从OpenCL 2.x开始,图像对象可以读写。
相关问题
- 1. 读缓冲区对象
- 2. OpenGL中的帧缓冲区对象和像素缓冲区对象之间有什么区别?
- 3. 作为帧缓冲区存储的纹理缓冲区对象
- 4. C缓冲区C#位图对象
- 5. iPhone和顶点缓冲区对象
- 6. 什么是OpenCL中的子缓冲区对象?
- 7. OpenCL中的图像和缓冲区之间有什么区别?
- 8. 带SDL的顶点缓冲区对象
- 9. 的OpenCL/C++ - 返回一个CL ::缓冲区对象
- 10. 蟒类文件缓冲区对象
- 11. OpenGL:缓冲区对象性能问题
- 12. TypeError:预期单段缓冲区对象
- 13. 将流写入缓冲区对象
- 14. 预期字符缓冲区对象
- 15. 纹理顶点缓冲区对象
- 16. 纹理VBOs(顶点缓冲区对象)
- 17. 何时删除缓冲区对象?
- 18. 帧缓冲区对象创建错误
- 19. 减少缓冲区对象大小
- 20. Java输入流缓冲区对象?
- 21. 区分Vim中的隐藏缓冲区和活动缓冲区
- 22. 对数深度缓冲区
- 23. 缓冲区溢出缓冲区长度
- 24. 帧缓冲区/颜色缓冲区?
- 25. 帧缓冲区320x480缩放图像/ 2 =帧缓冲区640x960不缩放图像?
- 26. 在缓冲区列表视图中增加“缓冲区”列宽
- 27. 缓冲区和缓存区别?
- 28. 帧缓冲对象(FBO)和渲染和深度缓冲关系
- 29. OpenCL缓冲区大小填充
- 30. 直接复制OpenCL缓冲区
非常感谢您的回复。学到了很多东西,但也想知道哪一个更快,多少百分比 – Megharaj 2012-03-29 05:10:43
哪个更快,什么百分比没有通用答案。这取决于你的代码如何访问内存以及你在哪个设备上运行。 – 2012-04-01 02:47:26