我实施了许多文章中提到的关键部分。
代码框架如下
声明全局设备变量;
__device__ int gpnIntArray[3200];
__device__ int gnInt, gnLock;
主机代码
int nTemp = 0;
cudaMemcpyToSymbol(gnInt, &nTemp, sizeof(int), 0, cudaMemcpyHostToDevice);
cudaMemcpyToSymbol(gnLock, &nTemp, sizeof(int), 0, cudaMemcpyHostToDevice);
RaceConditionSolution<<<100, 32>>>();
设备代码
__global__ void RaceConditionSolution()
{
while (atomicCAS(&gnLock, 0, 1) != 0){}
gpnIntArray[gnInt] = 1;
gnInt ++;
atomicExch(&gnLock, 0);
}
我即将更新全局设备变量 - gpnIntArray [3200]和gnInt。
但是,这段代码会让我的电脑冻结。
有什么问题?并请在这种情况下帮助我解决方案。
提前致谢。