2013-03-18 151 views
1

我需要对最多需要一个字节(最有可能的值为0到20的值)的矩阵进行一些操作。由于矩阵相当大,我想我会使用OpenCL在GPU上执行这些操作,并将矩阵存储为图像。问题是我没有找到任何关于OpenCL是否支持单通道图像的提示......并且我不想传递比实际使用更多的数据。OpenCL支持灰度图像

是否支持单通道图像?

回答

2

正如前面的答案中所述,使用CL_INTENSITY和CL_LUMINANCE。

预计寻址计算的延迟对Image对象隐藏得更好,但纹理缓存与图像写入没有保持一致,所以读取到通过图像写入的地址的任何图像都会写入相同的内核调用返回未定义的数据。所以开发人员更喜欢只使用常规缓冲区。

+0

因为甚至没有提问者upvoted你的帖子,我做到了。 – Tara 2013-03-20 10:17:37

3

CL_INTENSITYCL_LUMINANCE。但是如果你不需要图像相关的功能(如果你想操纵矩阵,我会假设),你最好用一个常规的内存缓冲区。

+0

OP没有具体说明他在处理数据。而且,缓存假设取决于实际的硬件,并且不是规范所要求的。如果可用,访问全局内存可以通过本地共享内存进行缓存。 – matthias 2013-03-19 08:59:37

+0

也许你可以回答这个问题,然后 http://stackoverflow.com/questions/15322206/opencl-global-memory-vs-image-memory-performance-differences-on-nvidia-and-amd – 2013-03-19 09:18:47