CUDA - 处理(未对齐)子图像时的任何问题(纹理绑定,NPP,......)?

时间:2014-09-11 14:20:13

标签: cuda texture2d npp

在CPU上,我经常使用'子图像' 2-D图像(音高线性),它们只是指向“主人”的某个ROI。图片。因此,对子图像的所有修改实际上都会改变“主图像”。图像也。

CUDA中是否存在子图像到设备存储器上的二维图像(间距线性)的问题?例如,可以将纹理绑定到它或纹理对象吗? NPP例程是否正常工作?我问,因为某些例程可能需要某个对齐(缓冲区的起始地址和#39;)。

请注意,我主要对稳定性问题感兴趣。我想这些子图像可能会有轻微的性能损失,但这不是我主要担心的问题。

特别是,如果对" cudaBindTexture2D'中提到的缓冲区基地址的对齐限制感兴趣,我会感兴趣。文档here

&#34;由于硬件对纹理基地址强制执行对齐要求,因此cudaBindTexture2D()在* offset中返回一个字节偏移量,必须将其应用于纹理提取以便从所需的内存中读取。&#34; < / p>

对于纹理对象也是必要的。 (对于CC&gt; = 3.0 GPU)?

1 个答案:

答案 0 :(得分:2)

任何绑定纹理(无论是通过纹理参考还是纹理对象API)都应满足cudaGetDeviceProperties提供的对齐要求,以便在数据坐标和纹理坐标之间进行直接映射:

  1. 任何绑定纹理都应满足通过textureAlignment返回的对齐(以字节为单位)。 cudaMalloc及类似提供的分配将满足此要求(对于分配的起始地址)。
  2. 2D绑定纹理应该(对于纹理中的每一行)满足通过texturePitchAlignment返回的对齐。 (例如)cudaMallocPitch提供的分配将满足此要求。
  3. NPP应该与任何适当指定的ROI一起正常工作。

    请注意,您的文档链接已经过时了。目前的文档可以找到here

    question/answer也可能会引起关注。