【问题标题】:Half precision floating points texture filtering in CUDACUDA中的半精度浮点纹理过滤
【发布时间】:2012-10-03 01:47:20
【问题描述】:

在使用 16 位浮点 纹理类型时,我可以利用 CUDA 纹理过滤吗?我已经在 CUDA 3D Array 中使用 32-bit float 纹理进行了测试,并且过滤效果很好。 CUDA 不支持 unsigned short 纹理插值,这对我来说是完美的,因为它占用的内存空间更少。

我正在考虑这个解决方案 - 如果我错了,请纠正我:

  • 将我的 unsigned short 数据转换为 [0;1] 范围内的 16 位浮点数; (怎么做?)
  • malloc 3D 数组宽度cudaCreateChannelDescHalf() 通道描述符
  • unsigned short 数据的纹理绑定到该数组
  • 发送到GPU内存,放入3D数组;
  • 在内核中 - 使用 tex3D() 函数获取值

请参阅下面的答案...

【问题讨论】:

    标签: cuda filtering textures precision


    【解决方案1】:

    我再次回答我自己的问题。下次我会在发帖之前尝试更多地挖掘......

    我认为问题出在纹理声明上:

    texture<unsigned short, cudaTextureType3D, cudaReadModeNormalizedFloat> tex;
    

    如我所见,仅当返回值为 float 类型时才支持过滤,可以如上所述使用cudaReadModeNormalizedFloat 强制执行。然后tex3D 返回 [0;1] 插值浮点值。

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 2020-02-03
      • 1970-01-01
      相关资源
      最近更新 更多