Hello,
I’ve got a problem with Memcpy2D.
devPtr = picture in global memory width=512 height=512 srcpitch=8192 (float4-data)
   int dstpitch = width*sizeof(float4);
    void* dst = malloc(dstpitch*height);
    cudaMemcpy2D ( dst,dstpitch,devPtr,srcpitch,width,height,cudaMemcpyDeviceToHost);
 
The problem is that only 32pixel of every line is copied.
If I use
cudaMemcpy(dst,devPtr,width*height*sizeof(float4),cudaMemcpyDeviceToHost)
 
instead it works. But Memcpy doesn’t care about pitch and I don’t want to use it.
Am I doing anything wrong here?
regards
Pototschnig
             
            
               
               
               
            
            
           
          
            
              
                pyrtsa  
                
               
              
                  
                    July 23, 2007,  9:42am
                   
                   
              2 
               
             
            
              You still need to specify the width in bytes, ie. row_width = width*sizeof(float4), which happens to be the value of dstpitch as well in this case. The correct code would hence be:
   size_t dstpitch = width*sizeof(float4);
    size_t row_width = width*sizeof(float4);
    void* dst = malloc(dstpitch*height);
    cudaMemcpy2D(dst, dstpitch, devPtr, srcpitch, row_width, height, cudaMemcpyDeviceToHost);
 
HTH.
             
            
               
               
               
            
            
           
          
            
            
              
You still need to specify the width in bytes, ie. row_width = width*sizeof(float4), which happens to be the value of dstpitch as well in this case. The correct code would hence be:
   size_t dstpitch = width*sizeof(float4);
    size_t row_width = width*sizeof(float4);
    void* dst = malloc(dstpitch*height);
    cudaMemcpy2D(dst, dstpitch, devPtr, srcpitch, row_width, height, cudaMemcpyDeviceToHost);
 
 
 
Uuups … your are right … how can cuda know that one pixel of my data are 16bytes …
regards
Pototschnig