CUDA 学习(十四)、纹理内存

一、概述

        使用纹理内存主要基于以下两个目的:(1)计算能力为1.x 与3.x 硬件上的缓存机制;(2)基于硬件的内存读取操作。


二、纹理缓存

       由于在计算能力为1.x 的硬件上根本没有高速缓存,因此,每个SM上的 6-8KB 的纹理内存为此设备提供了唯一真正缓存数据的方法。然而,随着费米架构的硬件出现,一级缓存最大可达到48KB,共享二级缓存最大可达到768KB,使得纹理内存这项属性基本被淘汰。但,费米架构的设备依然保留着纹理内存以保证对旧式硬件上的代码兼容。

      纹理缓存通常用来做局部优化,即它希望数据提供给连续的线程进行操作。这与费米架构设备上一级缓存的缓存机制基本相同。然而,在开普勒架构的设备中,纹理内存使用了一种特殊的计算方式,使得对其编程不再那么复杂。


三、基于硬件的内存获取操作

      纹理内存最有用的一个特性就是访问存储单元式,其允许GPU某些硬件方面的自动实现。一个比较有用的方面就是基于硬件的低分辨率线性插值。对于二维数组和三维数组,分别可以支持硬件级双线性插值与三线性插值。

      纹理的另一个比较实用的特性是其可以根据数组索引自动处理边界条件。我们可以在数组边界按照环绕方式或夹取方式来对纹理数组进行处理。这一点非常有用,因为通常情况下它不需要通过嵌入特殊的边缘处理代码就可以对所有元素进行处理。

      对于GPU内核而言,纹理内存是只读内存,并且只有通过特殊的纹理API (例如,texiDfetch()等)与纹理数组边界才能对其访问。







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值