cudaMemcpy2DToArray 和 cudaMemcpy2DFromArray 中的 "pitch" 是什么

What's "pitch" in cudaMemcpy2DToArray and cudaMemcpy2DFromArray

我正在将已弃用的 cudaMemcpyToArraycudaMemcpyFromArray 转换为 cudaMemcpy2DToArraycudaMemcpy2DFromArray。新的 API 调用 widthheightpitch,而不是 size 的弃用调用。 spitchdpitch的描述对应的是“Pitch of source memory”和“Pitch of destination memory”。我想知道这些值是什么:数据项的大小,还是其他值?

更具体地说,如果我要复制 W*H 浮点数,我应该有 pitch=sizeof(float)width=Wheight=H 还是 pitch=sizeof(float)*Wwidth=sizeof(float)*Wheight=H 或其他?

应该是:

pitch=sizeof(float)*W
width = sizeof(float)*W
height = H

以上内容适用于 cudaMemcpy2DToArray,并假设您正在从主机传输到设备,这很可能涉及主机内存中的未分配分配作为源。

pitched 分配的间距 是二维分配的一行的字节大小,包括行尾的填充字节。例如,它是 cudaMallocPitch 返回的值。对于未倾斜的分配,它仍然是线的宽度,它由 W*sizeof(element) 给出,其中 2D 分配宽度由 W 个元素给出,每个元素的大小为 sizeof(element).

这个 and the link it refers to 可能也很有趣。