【发布时间】:2012-11-06 15:33:34
【问题描述】:
我目前正在将一个相当哈利匹配的追踪算法(它是更大的图像处理算法的一部分)迁移到 OpenCL。
该算法使用一些内部矩阵和向量进行处理。其中一半的大小相当小(少于 10 列),但另一半可能会变得相当大,具体取决于输入矩阵(n * n、2n * n 等)。
所有内部矩阵的定义取决于输入矩阵。
鉴于标准中没有本地分配功能,我通过将内存块从全局内存映射到工作项的私有内存来解决内存问题。我确保在上下文设置期间块不重叠,以便在运行时确保数据一致性。
我觉得这种方法不合适。感觉更像是 hack。
你们中有人遇到过这种情况吗?你的解决方案是什么?
【问题讨论】:
-
好的。你能把它迁移到那里吗?还是我应该在 SO 上重新发布?
-
我认为版主可以;我会标记它,以便引起他们的注意。
-
Paul,您能否澄清一下您所说的将块从全局内存映射到私有内存时的意思?你的意思是你在你的函数中声明一个数组并从作为内核参数传递的全局指针复制数据到它?
-
我不复制数据(即使由于局部性可能会提高速度),我只是将全局数据拆分为工作项专门用作它们之间的约定的区域核心。全局内存中的一个大缓冲区,分为全局工作大小块。希望能解决问题。
标签: image-processing matrix opencl signal-processing