「cuda c プログラミング ガイド」には、cuda 配列の使用例が示されています。これらの例は 2D に限定されています。したがって、2D cuda 配列の場合、次のようにしてホスト データをデバイス メモリにコピーします。
// Copy to device memory some data located at address h_data in host memory
// cuInputArray is a 2D cuda array
cudaMemcpyToArray(cuInputArray, 0, 0, host_data, size_bytes, cudaMemcpyHostToDevice);
// with e.g. size_bytes := size_arr_x * size_arr_y * sizeof(float)
3D cuda 配列である cuInputArray で同じアプローチを試みましたが、あまり成功せず、無効な引数エラーが発生しました。
では、ホスト データをデバイス メモリに取得して戻すにはどうすればよいでしょうか。