0
我在使用GTX 1080上的Cuda 8運行我的代碼時遇到了不一致的行爲。 如果我嘗試在GTX 1080(Ubuntu 16.04,Cuda 8)上運行此代碼不一致的行爲:GTX 1080上的CUDA 8
__global__
void setValue(int *ptr, int index, int val)
{
ptr[index] = val;
}
void foo(int size)
{
int *data;
CudaSafeCall(cudaMallocManaged(&data, size*sizeof(int)));
memset(data, 0, size*sizeof(int));
setValue<<<1,1>>>(data, size/2, 5);
CudaCheckError();
CudaSafeCall(cudaDeviceSynchronize());
//useData(data);
for(int i=0;i<size;i++)
printf("%u %u\n",i,data[i]);
CudaSafeCall(cudaFree(data));
}
int main()
{
foo(5);
}
我得到以下輸出
0 0
1 0
2 0
3 0
4 0
而如果我用的GeForce GT 740的機器上運行它和CUDA 7我得到
0 0
1 0
2 5
3 0
4 0
我真的無法解釋這種行爲。我正在檢查CudaErrors,但即使在錯誤的代碼中,一切都可以。 有關我如何調試此行爲的任何提示? [編輯我以錯誤的方式顯示代碼的輸出]
你甚至確定任何CUDA代碼在Pascal機器上都能正確運行嗎? – talonmies