Допустим, вы объявляете новую переменную в ядре 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;
}
и вызов ядра выглядит, как показано ниже, с несколькими потоками и блоков :
int threads = 200;
uint3 blocks = make_uint3(200,1,1);
kernel<<<blocks,threads>>>(d_delt, d_deltb);
- является "" хранится в стеке?
- Является ли новый «a» создан для каждого потока, когда они инициализируются?
- Или каждый поток будет независимо получать доступ к «а» в неизвестное время, потенциально испортить алгоритм?