【发布时间】:2012-02-13 14:18:50
【问题描述】:
以下程序使用“Cuda By Example”中的原子锁实现,但运行该程序会使我的机器冻结。 有人可以告诉我我的程序有什么问题吗?非常感谢
一飞
#include <stdio.h>
__global__ void test()
{
__shared__ int i, mutex;
if (threadIdx.x == 0) {
i = 0;
mutex = 0;
}
__syncthreads();
while( atomicCAS(&mutex, 0, 1) != 0);
i++;
printf("thread %d: %d\n", threadIdx.x, i);
atomicExch(&mutex,0);
}
【问题讨论】:
-
上面的程序只是我想要做的一个例子。我知道我可以在上述情况下使用 atomicAdd 来增加 i。但是,在我的实际案例中,关键部分更复杂
标签: cuda gpu-atomics