我对工作项中的本地内存使用情况有疑问:
我有一个包含256个工作项的工作组。我想为每个工作项分配K字节的本地内存。
因此,我创建一个大小为256 * K的本地字节数组,并为每个工作项分配一个大小为K的区域。
在代码中,每个工作项只访问数组中自己的区域。我可以保证工作项不会以某种方式访问其他工作项区域吗?鉴于本地内存是在半个波前共享的事实吗?
我问的原因是我看到了这种腐败,但我不确定这是代码错误,还是我设计的问题;
即。使用共享的本地数组,在工作项之间共享。
答案 0 :(得分:2)
考虑到半个波前共享本地内存的事实
我不确定你的意思,但OpenCL规范非常清楚地表明本地内存是在工作组中共享的。就标准而言,没有“半波前”(甚至波前)这样的概念。
您可能注意到的任何内存损坏只能由您自己的代码引入:您的内核不会展示任何数据争用是您的责任。