如何在cuda中实施关键部分?

时间:2014-10-06 17:43:59

标签: cuda race-condition critical-section

我实施了许多文章中提到的关键部分。

代码框架如下

声明全局设备变量;

__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。

但是,这段代码会让我的电脑冻结。

有什么问题?并请在这种情况下帮助我解决方案。

提前致谢。

0 个答案:

没有答案