我正在尝试进行原子读取并添加CUDA 8
__device__ int counter = 5;
__global__ void prime()
{
int num = counter;
atomicAdd(&counter, 1);
//......<rest of the code>......
}
atomicAdd()负责添加操作。但我的所有线程在增量之前读取相同的值。 我想要一个线程来读取,然后增加另一个线程来做同样的事情。 可能吗?感谢
答案 0 :(得分:0)
如您所见here,atomicAdd
可以返回原子更新的变量的先前值。正如评论中指出的那样,你的内核可以重写为
__device__ int counter = 5;
__global__ void prime()
{
int num = atomicAdd(&counter, 1);
//......<rest of the code>......
}
表示在执行num
操作之前,counter
将被赋予atomicAdd
的现有值。