如何替换已弃用的 tex2D(texture<T, 2, cudaReadModeElementType>, float, float) [with T=float]?

Sol*_*eil 7 cuda

在 cuda 11.3 程序中,我使用

tex2D(texture<T, 2, cudaReadModeElementType>, float, float)
Run Code Online (Sandbox Code Playgroud)

在texture_fetch_functions.h(198)中声明已弃用。什么取代它?我该如何使用它?

警告:函数“tex2D(texture<T, 2, cudaReadModeElementType>, float, float) [with T=float]” 2>C:\Program Files\NVIDIA GPU Compute Toolkit\CUDA\v11.3\include\texture_fetch_functions.h (198):此处已被宣布弃用

Rob*_*lla 11

纹理历来有两种使用模型:纹理引用和纹理对象。纹理引用是 CUDA 提供的“原始”机制,纹理对象是在开普勒一代 GPU 中引入的。

CUDA 11.3 中不推荐使用纹理参考。几乎任何可以使用纹理引用执行的操作都可以使用纹理对象完成,只需进行一些重构即可。

您指定的替代 API 记录在此处。标签上有很多问题cuda讨论纹理引用的使用和纹理对象的使用,这个介绍性博客介绍了重构以使用纹理对象的好处。

tex2D()是一个使用纹理对象的完整示例。