不确定如何将其从主机内存复制到设备内存,现在已经工作了一段时间并且没有取得任何进展,任何大大小小的帮助都将不胜感激。
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);
答案 0 :(得分:1)
如果您的代码中存在段错误,可能是由于以下错误:
您正在使用sizeof(int)
复制无符号字符数组。
您的数组h_n
名为“map
”吗? unsigned char[]
是一个指针,您可以直接在cudaMemcpy
方法中使用它。
cudaMemcpy(d_n, map, 256 * sizeof(unsigned char), cudaMemcpyHostToDevice);
应该有用。