3D サーフェスのいくつかのスライスをレンダリングしたいと考えています。
cudaArray* surfArray;
cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsigned);
cudaExtent surfSize = make_cudaExtent(640,480,2);
cudaMalloc3DArray(&surfArray,&channelDesc,surfSize,cudaArraySurfaceLoadStore);
したがって、 MemcpyArrayToArray() とオフセットを介してサブセットを取得しようとしました。
cudaGraphicsSubResourceGetMappedArray(&cu_rgbArray,tex_rgb,0,0);
cudaMemcpyArrayToArray(cu_rgbArray,0,0,surfArray,0,0,640*480*sizeof(uchar4),cudaMemcpyDeviceToDevice);
cudaGraphicsSubResourceGetMappedArray(&cu_depthArray,tex_depth,0,0);
cudaMemcpyArrayToArray(cu_depthArray,0,0,surfArray,640,480,640*480*sizeof(uchar4),cudaMemcpyDeviceToDevice);
ただし、最初の memcpy は成功しますが、2 番目の memcpy は失敗します。(オフセットが 0,0 の場合は成功します)。
余分なカーネルなしでこの問題を回避する方法はありますか?