Copiando desde la memoria 3D de cuda a la memoria lineal: los datos copiados no son los que esperaba

Aquí está mi problema:

Tengo una matriz 3D defloat3 en mi dispositivo:

int size[3] = {416,464,512};
cudaExtent extent = make_cudaExtent(size[0]*sizeof(float3),size[1],size[2]);
cudaPitchedPtr renderedVolume;
int ret = cudaMalloc3D(&renderedVolume, extent);
size_t pitch = renderedVolume.pitch; //pitch = 5,120
size_t slicePitch = pitch * size[1]; //slicePitch = 2,375,680

Luego trabajo con él y lo lleno de datos sobresalientes.

Después de eso deseo copiarlo en una memoria lineal 1D en mi host:

float *host_memory = (float*)malloc(size[0]*size[1]*size[2]*sizeof(float3));
cudaMemcpy3DParms p = {0};
p.srcPtr = renderedVolume;
p.dstPtr = make_cudaPitchedPtr(host_memory,size[0]*sizeof(float3),size[0],size[1]); 
p.extent = make_cudaExtent(size[0]*sizeof(float3),size[1],size[2]);
p.srcPos = make_cudaPos(0,0,0);
p.dstPos = make_cudaPos(0,0,0);
p.kind=cudaMemcpyDeviceToHost;
cudaMemcpy3D(&p);

Estoy comparando el resultado en host_memory con los datos que escribí inicialmente turenderedVolume (my_data) y con los datos que leo en mi3Dmemory, rebanada por rebanada:

float* test1 = (float*)malloc(size[0]*size[1]*sizeof(float3));
cudaMemcpy(test1, myData, size[0]*size[1]*sizeof(float3) , cudaMemcpyDeviceToHost);
float* test2 = (float*)malloc(size[0]*size[1]*sizeof(float3));
cudaMemcpy(test2,(char*)renderedVolume.ptr + slicePitch * i,size[0]*size[1]*sizeof(float3), cudaMemcpyDeviceToHost);

Problema:

La primera rebanada (i=0) está bien, tengo los mismos datos en host_memory,test1 ytest2.En la segunda parte, tengo los mismos datos entest1 ytest2. Sin embargo, debería encontrar estos datos enhost_memory+579072 (= número defloat por rebanada, tambiénheigth*pitch del puntero destino echado) y lo encuentro enhost_memory+577504. Está apagado por1568 Los bytes, que no corresponden a nada de lo que yo sepa, y es por eso que apreciaría mucho si alguno de ustedes tiene una idea de cuál podría ser el problema en mi código.

Respuestas a la pregunta(1)

Su respuesta a la pregunta