我正在尝试在 CUDA 中声明和初始化一个数组数组。我正在使用以下代码:
int** h_array = (int**)malloc(num_of_arrays * sizeof(int*));
int** d_array;
cudaMallocHost((void**)&d_array, num_of_arrays * sizeof(int*));
for(size_t i = 0 ; i < num_of_arrays ; i++){
cudaMallocHost(&h_array[i], array_size * sizeof(int));
}
for(size_t i = 0 ; i < num_of_arrays ; i++){
cudaMemcpy(d_array[i], h_array[i], array_size * sizeof(int), cudaMemcpyHostToDevice);
}
int** h_array2 = (int**)malloc(num_of_arrays * sizeof(int*));
请注意 h_array2 已正确初始化(它是一个数组数组,每个数组都已正确初始化)。然后我尝试执行以下操作:
for(size_t i = 0 ; i < num_of_arrays ; i++){
cudaMemcpy(d_array[i], h_arra2[i], array_size * sizeof(int), cudaMemcpyHostToDevice);
}
综上所述,我尝试在设备内存中声明和初始化一个数组数组。我知道我无法从主机内存访问设备内存。
上面的代码似乎不起作用。
你能告诉我有什么问题并帮助我吗?先感谢您。