在CPU上,我经常使用'子图像' 2-D图像(音高线性),它们只是指向“主人”的某个ROI。图片。因此,对子图像的所有修改实际上都会改变“主图像”。图像也。
CUDA中是否存在子图像到设备存储器上的二维图像(间距线性)的问题?例如,可以将纹理绑定到它或纹理对象吗? NPP例程是否正常工作?我问,因为某些例程可能需要某个对齐(缓冲区的起始地址和#39;)。
请注意,我主要对稳定性问题感兴趣。我想这些子图像可能会有轻微的性能损失,但这不是我主要担心的问题。
特别是,如果对" cudaBindTexture2D'中提到的缓冲区基地址的对齐限制感兴趣,我会感兴趣。文档here:
&#34;由于硬件对纹理基地址强制执行对齐要求,因此cudaBindTexture2D()在* offset中返回一个字节偏移量,必须将其应用于纹理提取以便从所需的内存中读取。&#34; < / p>
对于纹理对象也是必要的。 (对于CC&gt; = 3.0 GPU)?
答案 0 :(得分:2)
任何绑定纹理(无论是通过纹理参考还是纹理对象API)都应满足cudaGetDeviceProperties提供的对齐要求,以便在数据坐标和纹理坐标之间进行直接映射:
textureAlignment
返回的对齐(以字节为单位)。 cudaMalloc
及类似提供的分配将满足此要求(对于分配的起始地址)。texturePitchAlignment
返回的对齐。 (例如)cudaMallocPitch
提供的分配将满足此要求。NPP应该与任何适当指定的ROI一起正常工作。
请注意,您的文档链接已经过时了。目前的文档可以找到here。
此question/answer也可能会引起关注。