【发布时间】:2019-10-15 09:39:35
【问题描述】:
在我的代码中,我有动态矩阵。
int ** file_data = (int **)malloc(TRANSACTIONS * sizeof(int *));
file_data[0] = (int *)malloc((a_size+1) * sizeof(int));
file_data[1] = (int *)malloc((a_size+1) * sizeof(int));
file_data[2] = (int *)malloc((a_size+1) * sizeof(int));
................................................................
我只想将它复制到设备全局内存一次。
我用过:
__device__ int raw_data[][];
...................................
...................................
...................................
cudaMemcpyToSymbol(raw_data[i], file_data[i], (a_size+1)*sizeof(int));
但这不起作用。
我该怎么做?
【问题讨论】:
-
cudaMalloc和cudaMemcpy有什么问题? -
如果您的主机代码中有多个
malloc语句,如此处所示,每行一个单独的语句,则没有安全的方法将该数据复制到该设备仅使用单个cudaMemcpy或cudaMemcpyToSymbol操作。这是不可能的。如果要使用单个复制操作,则需要进行一些更改。涵盖了多种技术here。 -
@Ptaq666 它给出“CUDA 错误:无效的设备符号”。
标签: c++ matrix cuda global-variables nvidia