Я хотел бы знать, если при вызове cudaMemcpy (...) для получения памяти на графическом процессоре копируются также значения внутри массива или нет.Я объясню лучше: я копирую значения из одного массива в другой, а затем вызываю cudaMalloc и cudaMemcpy.
// Copying values of the arrays
for(int i = 0; i<16; i++){
array_device_1[i] = array_host_1[i];
array_device_2[i] = array_host_2[i];
}
// Memory allocation of array_device_1 and array_device_2
cudaMalloc((void**) &array_device_1, SIZE_INT*size);
cudaMalloc((void**) &array_device_2, SIZE_INT*size);
// Transfer array_device_1 and array_device_2
cudaMemcpy(array_device_1, array_host_1, SIZE_INT*size, cudaMemcpyHostToDevice);
cudaMemcpy(array_device_2, array_host_2, SIZE_INT*size, cudaMemcpyHostToDevice);
kernel<<<N, N>>>(array_device_1, array_device_2);
cudaMemcpy(array_host_1, array_device_1, SIZE_INT*size, cudaMemcpyDeviceToHost);
cudaMemcpy(array_host_2, array_device_2, SIZE_INT*size, cudaMemcpyDeviceToHost);
cudaFree(array_device_1);
cudaFree(array_device_2);
Итак, когда я выполняю все эти инструкции и использую все массивы в ядре, значения внутри array_device_1 и array_device_2 или нет?Я попытался распечатать после ядра, и я заметил, что все массивы пусты!На самом деле я не могу понять, как я могу сохранить значения внутри них и затем изменить их значения с помощью функции ядра.