CUDA纹理2

      所谓CUDA module,网上翻译的是CUDA模块,在查阅CUDA手册得知,CUDA module就是CUDA driver API的一个数据类型形式。驱动API使用的时候一定要初始化所有的属性,因为不管可变还是不可变的属性,都不会把引用加载到CUDA moudule中。在这里,与纹理有关的CUDA moudule指的就是一个结构,里面有很多变量,可以用来设置纹理的属性。

     表面引用(surface reference)让CUDA的kernal可以直接读写CUDA数组(直接说CUDA array更好其实,毕竟数组只是最直白的翻译,这里特指CUDA阵列),最主要的目的就是让内核程序可以直接写数组。以前的话只能先写到设备,再复制转化到CUDA数组。纹理引用和表面引用有一些操作的区别,以后再说。

     CUDA运行时的好处是进行了一定的抽象,人们就可以不再用处理CUDA驱动API,例如初始化驱动环境,以及加载module。

     书上是这么说的:When using a texture reference to read from a CUDA array, the hardware uses a separate, read-only cache to resolve the memory references. While the kernel is executing, the texture cache is not kept coherent with respect to the rest of the memory subsystem, so it is important not to use texture references to alias memory that will be operated on by the kernel. (The cache is invalidated between kernel launches.)。

      我的理解是,在操作纹理的时候,如果有一块内存区已经被其他内核计算使用到了,那这个时候就别用纹理进行访问了(就是不要进行别名操作,也就是不要“换个名字来访问”,即用纹理名访问数据),因为纹理有时候会把数据加载到缓存里面,这个时候如果别的程序修改了这些内存,纹理不能保证缓存的内容和内存中的一样。在使用纹理的时候,加上关键字const restricted 关键字,就可以让内存不被kernal程序以其他任何方式引用。

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dezeming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值