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);
}
私はのGeForce GT 740とクーダ7を持つマシン上で実行する場合、私は
0 0
1 0
2 5
3 0
4 0
0123を取得している間、私は次の出力
0 0
1 0
2 0
3 0
4 0
を取得
私は本当にこの動作を説明することはできません。私はCudaErrorsをチェックしていますが、問題のあるコードでもすべてが正常です。 この動作をどのようにデバッグすることができますか? [間違った方法でコードの出力を表示していました]
パスカルマシンでCUDAコードが正しく実行されることはありますか? – talonmies