【问题标题】:How to replace the deprecated tex2D(texture<T, 2, cudaReadModeElementType>, float, float) [with T=float]?如何替换已弃用的 tex2D(texture<T, 2, cudaReadModeElementType>, float, float) [with T=float]?
【发布时间】:2022-01-15 12:07:38
【问题描述】:

在一个 cuda 11.3 程序中,我正在使用

tex2D(texture<T, 2, cudaReadModeElementType>, float, float)

在 texture_fetch_functions.h(198) 中声明已弃用。用什么代替它?以及如何使用它?

警告:函数 "tex2D(texture, float, float) [with T=float]" 2>C:\Program Files\NVIDIA GPU 计算 Toolkit\CUDA\v11.3\include\texture_fetch_functions.h(198):这里是 宣布弃用

【问题讨论】:

  • 您可以查阅解释纹理参考 API 弃用的文档

标签: cuda


【解决方案1】:

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

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

您指出的替换 API 记录在 here 中。 cuda 标签上有很多问题,讨论纹理引用的使用和纹理对象的使用,而这个introductory blog 涵盖了重构以使用纹理对象的好处。

Here 是将tex2D() 用于纹理对象的完整示例。

【讨论】:

    猜你喜欢
    • 2021-12-07
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    相关资源
    最近更新 更多