2016-09-30 1 views
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); 
} 

私はの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をチェックしていますが、問題のあるコードでもすべてが正常です。 この動作をどのようにデバッグすることができますか? [間違った方法でコードの出力を表示していました]

+0

パスカルマシンでCUDAコードが正しく実行されることはありますか? – talonmies

答えて

1

トラブルシューティングの2日後、私はこれに対する答えを得ました。 問題は、NVIDIAインストーラによってインストールされたドライバによって引き起こされた(RUNFILEまたはCUDAのダウンロードセクションから入手debファイルの両方) 私のOSは、私が正しいだhttps://launchpad.net/~graphics-drivers/+archive/ubuntu/ppaで利用できるドライバーを使用することによりUbuntuの16.04のx64

です動作。