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

问题描述 投票:2回答:1

在CPU上,我经常使用二维图像(俯仰线性)的“子图像”,它们只是指向“主”图像的某个ROI。因此,对子图像的所有修改实际上也改变了“主”图像。

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

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

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

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

“纹理对象”(对于CC> = 3.0 GPU)也是必需的吗?

cuda texture2d npp
1个回答
2
投票

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

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

NPP应该与任何适当指定的ROI一起正常工作。

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

这个question/answer也可能是有趣的。

© www.soinside.com 2019 - 2024. All rights reserved.