Opencl 使用映像与全局内存的缺点?

Opencl 使用映像与全局内存的缺点?,opencl,Opencl,我有一个处理RGB图像的内核。目前, 我逐个获取每个通道,并在该通道上运行相同的内核 内核输入是一个全局内存缓冲区:数据从全局内存中分块移动 将缓冲区放入本地内存进行处理,然后存储到另一个全局内存中 缓冲区作为输出 我正在考虑重构它,将所有三个通道存储在RGBA中 缓冲区,并使用矢量同时对所有三个通道进行操作 操作。我知道图像具有更好的空间缓存 这种重构有什么缺点吗?我意识到我将不得不减少 每个区块的像素数,因为我现在将有三倍的数量 大量的数据 谢谢 通常,现代GPU处理图像的效果非常好,因为它

我有一个处理RGB图像的内核。目前, 我逐个获取每个通道,并在该通道上运行相同的内核

内核输入是一个全局内存缓冲区:数据从全局内存中分块移动 将缓冲区放入本地内存进行处理,然后存储到另一个全局内存中 缓冲区作为输出

我正在考虑重构它,将所有三个通道存储在RGBA中 缓冲区,并使用矢量同时对所有三个通道进行操作 操作。我知道图像具有更好的空间缓存

这种重构有什么缺点吗?我意识到我将不得不减少 每个区块的像素数,因为我现在将有三倍的数量 大量的数据


谢谢

通常,现代GPU处理图像的效果非常好,因为它们最初就是这样设计的。除非您使用的是一些特定的硬件,这对图像数据结构不好,否则这种重构是一个好主意(IMO)

更改每个WI或WG进程的数据量并不一定会导致性能下降-算法更改可能会以不可预测的方式影响性能。因此,要得出结论,需要仔细的基准


如果您的目标是特定的硬件,那么使用SDK工具总是一个好主意。性能分析器可以提供有用的统计和优化提示(如寄存器溢出、缓存命中率、利用率等)

问题:RGB数据是如何布局的?平面还是交错?另外,您的目标是什么硬件?不同的硬件将具有不同的特性。最后,您的过滤器使用多少ALU?大的复杂过滤器还是小的简单过滤器?谢谢,用户2746401。我可以选择使用什么格式——如果我切换到图像,我想交错是最好的选择。目前它是平面的。此外,我将针对AMD夏威夷GPU;例如290X。另外,过滤器又大又复杂。谢谢,罗曼。我正在做一个离散小波变换:首先变换列,然后变换行,所以这不是一个简单的卷积型算法。我独自一人在这个项目上工作,我是一个opencl初学者:您有时间快速检查代码以标记我的任何明显错误吗?是这个项目。目前,在windows上,使用intel处理器作为设备,速度不比CPU上的串行代码快,所以有点令人失望。但我知道这是可以改进的。。。。