Opencl 本地内存损坏

Opencl 本地内存损坏,opencl,Opencl,我有一个关于跨工作项的本地内存使用的问题: 我有一个包含256个工作项的工作组。我想为每个工作项分配K字节的本地内存 因此,我创建一个大小为256*K的本地字节数组,并为每个工作项分配一个大小为K的区域 在代码中,每个工作项只访问数组中自己的区域。我可以保证工作项不会以某种方式访问另一个工作项区域吗?考虑到半个波前共享本地内存的事实 我问的原因是我看到了这种腐败,但我不确定这是一个代码错误,还是我的设计有问题 i、 e.使用共享本地数组,在工作项之间共享 考虑到本地内存在半个波前上共享的事实 我

我有一个关于跨工作项的本地内存使用的问题:

我有一个包含256个工作项的工作组。我想为每个工作项分配K字节的本地内存

因此,我创建一个大小为256*K的本地字节数组,并为每个工作项分配一个大小为K的区域

在代码中,每个工作项只访问数组中自己的区域。我可以保证工作项不会以某种方式访问另一个工作项区域吗?考虑到半个波前共享本地内存的事实

我问的原因是我看到了这种腐败,但我不确定这是一个代码错误,还是我的设计有问题

i、 e.使用共享本地数组,在工作项之间共享

考虑到本地内存在半个波前上共享的事实

我不知道你说的是什么意思,但OpenCL规范非常清楚地指出,本地内存是跨工作组共享的。就标准而言,没有“半波前”(甚至波前)这样的概念


您可能注意到的任何内存损坏只能由您自己的代码引入:您的内核不出现任何数据竞争是您的责任

是的,事实证明这是真的。将此移到一个答案,我会将其标记为已回答。问题是:我将uchar类型的本地指针强制转换为ulong类型的指针,并且由于别名(我猜),内存被破坏。