Bunu ana bilgisayar belleğinden aygıt belleğine nasıl kopyalayacağınız konusunda emin değilseniz, şu an üzerinde bir süredir çalışıyor ve hiçbir işlem yapmadan büyük ya da küçük her şeyden büyük mutluluk duyacağız .Ana bilgisayar belleğinden CUDA birimine bir aygıt eşlemesi kopyalama
unsigned char map[256] = {
8,0,2,0,0,0,0,0,0,0,2,0,2,0,0,0,
0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,2,0,0,0,1,0,0,0,0,0,0,0,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
0,1,1,1,0,0,0,0,0,0,0,0,3,0,0,0,
0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
};
Buna benzer mi? kodunuzda bir segfault yaşıyorsanız
cudaMalloc(&d_n, sizeof(int));
cudaMemcpy(d_n, &h_n, sizeof(int), cudaMemcpyHostToDevice);
kernel <<<16,16>>>(d_n);
cudaThreadSynchronize();
cudaMemcpy(&h_n, d_n, sizeof(int), cudaMemcpyDeviceToHost);
cudaFree(d_n);
Tam olarak sorunuz nedir? Örneğin bir dizi nasıl kopyalanacağını biliyor musun? Değilse, o zaman [programlama kılavuzunu] okuyarak başlamalıdır (http://docs.nvidia.com/cuda/cuda-c-programming-guide/#device-memory). – havogt
Eğer global belleğe sahip olmak istiyorsanız evet, cudaMemcpy'yi kullanabilirsiniz. Hangi hata oluyor? –