将字符映射从主机内存复制到CUDA中的设备

时间:2016-04-05 11:55:42

标签: c arrays memory cuda malloc

不确定如何将其从主机内存复制到设备内存,现在已经工作了一段时间并且没有取得任何进展,任何大大小小的帮助都将不胜感激。

 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,
 };

它会与此类似吗?

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);

1 个答案:

答案 0 :(得分:1)

如果您的代码中存在段错误,可能是由于以下错误:

  1. 您正在使用sizeof(int)复制无符号字符数组。

  2. 您的数组h_n名为“map”吗? unsigned char[]是一个指针,您可以直接在cudaMemcpy方法中使用它。

    cudaMemcpy(d_n, map, 256 * sizeof(unsigned char), cudaMemcpyHostToDevice);

  3. 应该有用。

相关问题