У меня что-то вроде этого:
__global__ void globFunction(int *arr, int N) {
int idx = blockIdx.x* blockDim.x+ threadIdx.x;
// calculating and Writing results to arr ...
__syncthreads();
// reading values of another threads(ex i+1)
int val = arr[idx+1]; // IT IS GIVING OLD VALUE
}
int main() {
// declare array, alloc memory, copy memory, etc.
globFunction<<< 4000, 256>>>(arr, N);
// do something ...
return 0;
}
Почему я получаю старое значение, когда читаю arr [idx + 1]
? Я вызвал __ syncthreads
, поэтому ожидаю увидеть обновленное значение. Что я сделал не так? Я читаю кеш или что?