Multithreading 原子_是否以原子方式执行操作

Multithreading 原子_是否以原子方式执行操作,multithreading,opencl,gpu,atomic,Multithreading,Opencl,Gpu,Atomic,我有一个使用全局uint数组的内核,我想使用OpenCL中的atom\u或函数从所有线程访问和更改该数组中的条目。 守则: void SetMove(int c, uint m, volatile __global uint *prevmove) { uint idx = c >> 4; uint mask = m << (2 * (c & 15)); atom_or(&prevmove[idx], mask); } void S

我有一个使用全局uint数组的内核,我想使用OpenCL中的
atom\u或
函数从所有线程访问和更改该数组中的条目。
守则:

void SetMove(int c, uint m, volatile __global uint *prevmove)
{
    uint idx = c >> 4;
    uint mask = m << (2 * (c & 15));
    atom_or(&prevmove[idx], mask);
}
void SetMove(int c、uint m、volatile\u global uint*prevmove)
{
uint idx=c>>4;

uint mask=m什么是c变量?每个线程从某个状态中查找多个后续状态
p
c
这里是这些状态中的一个,并且
m
编码从
p
c所需的操作在线程之间是连续的还是完全随机的?在线程之间应该是随机的,尽管我认为nk线程可能会使用相同的
c
调用此函数,当您使用atomic\u或?时会发生什么情况,因为32位iInteger应该首选此函数