Opencl全局变量在线程中具有不同的值,OpenCL KERNEL

时间:2012-09-08 13:56:30

标签: c global-variables opencl

所以我正在处理以下情况。我希望我的所有线程都执行一个循环,直到它们都没有到达某个“if”,所以我使用一个存储0的全局变量,当达到if语句时该变量变为1。

问题是在循环结束时我做了一个障碍来同步所有线程(在我的情况下我只有4个)并且只有那个达到if有全局变量1的值,其他有它0.

怎么会这样?全局变量如何在不同的线程中具有不同的值?

1 个答案:

答案 0 :(得分:0)

我认为全局变量被设置为一些缓冲区和缓存,其中一个线程将此变量写入1但不写入物理内存但是写入缓存行。在这种情况下,其他线程没有获得更新的值。