纹理内存

纹理内存是CUDA中的一种只读内存类型,适用于具有高空间局部性的数据访问,能优化流式fetch并自动将数据转换为32位浮点类型。通过纹理引用或纹理对象进行绑定和访问,注意在访问期间修改全局内存可能导致不一致的结果。纹理对象在运行时创建,可作为kernel参数,而纹理引用是编译时创建,需声明为静态全局变量。
摘要由CSDN通过智能技术生成

特性

  • 纹理内存是只读的

  • 纹理内存可以通过归一化坐标访问,当使用非归一化的坐标访问纹理时,不会进行filter

  • 当访问纹理内存的模式具有较大的 “ 空间局部性 ” 时,性能会得到改善。这里的空间局部性不只是像素在水平方向(内存地址)上的连续性,也包括了竖直方向上的连续性

  • 纹理内存为streaming featch(即同一个wrap中的所有thread同时访问具有空间局部性的一块内存)做了优化

  • 即使全局内存为16位或32位的整型,当作为纹理内存进行访问时,能将数据转换为32位浮点类型

  • 不论是纹理引用还是纹理对象的创建,都需要先在全局内存创建一个内存区域,然后将该内存与纹理对象或纹理引用绑定,最后kernel通过纹理对象或纹理引用访问纹理数据

  • 如果在访问纹理期间修改与其绑定的全局内存,除非在读取纹理时发生cache miss,否则读取到的像素数据和全局内存中的不一致

  • Packed data may be broadcast to separate variables in a single operation;

纹理对象

  • 纹理对象在运行时创建,并且在创建时与纹理内存进行绑定

     __host __ ​cudaError_t cudaCreateTextureObject(cudaTextureObject_t* pTexObject,
                                                   const cudaResourceDesc* pResDesc,
                                                   const cudaTextureDesc* pTexDesc,
                                                   const cudaResourceViewDesc* pResViewDesc)    
    
    struct cudaTextureDesc
    {
        enum cudaTextureAddressMode addressMode[3];         //clamp?wrap?
        enum cudaTextureFilterMode filterMode;              //linera?point?
        enum cudaTextureReadMode readMode;                  //是否将有/无符号整型像素化为【0,1】/【-1,1】范围内的浮点数
        int sRGB;
        int normalizedCoords;                               //是否通过归一化坐标访问纹理
        unsigned int maxAnisotropy;
        enum cudaTextureFilterMode mipmapFilterMode;
        float mipmapLevelBias;
        float minMipmapLevelClamp;
        float maxMipmapLevelClamp;
    };
    
    struct cudaResourceDesc
    {
        cudaArray_t array;                                  //原始数据
        struct cudaChannelFormatD

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值