cudaMemcpy2D参数中pitch的含义

1> pitch的含义
   我们知道,对于内存的存取来说,对准偏移量为2的幂(现在一般要求2^4=16)的地址能获取更快的速度,而如果不对齐,可能你需要的数据需要更多的存取次数才能得到。
   为了满足这个条件,对于一个二维数组来说(行优先row major),就希望每一行的开头都满足“对齐”,那么如果一行的长度不规整,导致下一行开头不在指定的位置,那就需要在每一行末尾进行填充(padding),从而使得每一行都对齐,这和BMP格式的像素存储是一个道理。

   pitch就是指 每一行的字节数 + padding的字节数 。


2 对于你的问题,对应于CPU端的pitch,就是sizeof(int) * 2,对应于GPU端的pitch,就是d_pitch。

C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   cudaMemcpy2D( d_A,  // 目的指针
                d_pitch,  // 目的pitch
                bmp1,   // 源指针
                sizeof ( int )*2,   // 源数据pitch
                sizeof ( int )*2,   // 数据拷贝宽度
                2,               // 数据拷贝高度
                cudaMemcpyHostToDevice);
 
   cudaMemcpy2D( bmp2,
                 sizeof ( int )*2,
                 d_A, 
                 d_pitch, 
                 sizeof ( int )*2,
                 2,
                 cudaMemcpyDeviceToHost);

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值