小编hus*_*wjq的帖子

关于在 cuda 中修改标志数组的问题

我正在研究 GPU 编程,并有一个关于在线程中修改全局数组的问题。

__device__ float data[10] = {0,0,0,0,0,0,0,0,0,1};
__global__ void gradually_set_global_data() {
    while (1) {
        if (data[threadIdx.x + 1]) {
            atomicAdd(&data[threadIdx.x], data[threadIdx.x + 1]);
            break;
        }
    }
}

int main() {
    gradually_set_global_data<<<1, 9>>>();
    cudaDeviceReset();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

内核应该在data预期保持 [1,1,1,1,1,1,1,1,1,1] 的情况下完成执行,但它陷入了无限循环。为什么会发生这种情况?

concurrency cuda gpu-atomics

5
推荐指数
1
解决办法
122
查看次数

标签 统计

concurrency ×1

cuda ×1

gpu-atomics ×1