相关疑难解决方法(0)

在CUDA内核中声明变量

假设您在CUDA内核中声明一个新变量,然后在多个线程中使用它,例如:

__global__ void kernel(float* delt, float* deltb) {
int i = blockIdx.x * blockDim.x + threadIdx.x;
float a;
a = delt[i] + deltb[i];
a += 1;
}
Run Code Online (Sandbox Code Playgroud)

并且内核调用看起来像下面这样,有多个线程和块:

int threads = 200;
uint3 blocks = make_uint3(200,1,1);
kernel<<<blocks,threads>>>(d_delt, d_deltb);
Run Code Online (Sandbox Code Playgroud)
  1. "a"存储在堆栈中吗?
  2. 是否为每个线程初始化时创建了一个新的"a"?
  3. 或者每个线程是否会在未知时间独立访问"a",可能会弄乱算法?

cuda

4
推荐指数
2
解决办法
5298
查看次数

标签 统计

cuda ×1