OpenCL银行冲突 - 丢失内存/破坏数据?

我提前为这个问题的模糊性道歉。 背景: 我试图在OpenCL中编写一个形态学图像处理函数。我有一个__local缓冲区,我用它来存储每个像素的数据(每个像素由一个工作项表示,没有循环展开)。此外,由于我在测试的早期,我只使用一个工作组(8x8像素图像,所以我可以手动验证结果)。 问题: 有时必须将来自一个,两个,三个或甚至四个像素的数据添加到另一个像素的像素缓冲区中。由于这些是同一工作组中的相邻像素,因此我确信我会导致本地内存库冲突。没关系,速度不是我的首要任务(还是!)。然而,这些银行冲突似乎正在丢弃数据甚至破坏数据。我一直非常小心,不要溢出或过度运行缓冲区。 所以,我的第一个问题是:事实上,银行冲突是否可能导致数据损坏和丢失? Opencl规范似乎表明该操作应该序列化,减慢带宽 - 但没有提到数据丢失。 我的第二个问题是:帮助! - 我该怎么办? 任何指导将不胜感激 - 谢谢!     
已邀请:
也许带有CUDA的nvidia白皮书Prefix Sum(Scan)可以带您走上正轨。它是关于
all-prefix-sums algorithm
,其中
is a good example of a computation that seems inherently sequential, but for which there is an efficient parallel algorithm.
all-prefix-sums operation
将数字lists3ѭ列入其总和:
[0,3,7,8]
。 我知道这篇文章是关于CUDA的,但我发现生成的内核非常相似 两种技术都使用类似的概念。 我希望,这篇论文可以帮助你。 干杯     

要回复问题请先登录注册