I’m not sure what this error means or why I’m getting it when attempting a cudaMemcpy3D.
My code does very much the same as the simpleTexture3D example:
int width = 48;
int height = 48;
int depth = 48;
cudaArray* cuArray;
const cudaExtent extent = make_cudaExtent(width, height, depth);
cudaChannelFormatDesc channel = cudaCreateChannelDesc<float>();
cudaMalloc3DArray(&cuArray, &channel, extent);
float* buffer = new float[width * height * depth];
cudaMemcpy3DParms arrayCopy = {0};
arrayCopy.srcPtr = make_cudaPitchedPtr( (void*) buffer, sizeof(float) * width, width, height);
arrayCopy.dstArray = cuArray;
arrayCopy.extent = extent;
arrayCopy.kind = cudaMemcpyHostToDevice;
cudaMemcpy3D(&arrayCopy);
printf("error = %s\n", cudaGetErrorString(cudaGetLastError()));
Result:
memory size or pointer value too large to fit in 32 bit
Any help would be appreciated…