7、CUDA软件架构与开发环境详解

CUDA软件架构与开发环境详解

1. CUDA数组和纹理

CUDA数组与设备内存从同一物理内存池中分配,但它具有不透明的布局,这种布局针对2D和3D局部性进行了优化。图形驱动程序使用这些布局来存储纹理,通过将索引与寻址解耦,硬件可以对2D或3D元素块进行操作,而非1D行。

对于具有稀疏访问模式的应用程序,尤其是具有维度局部性的模式(如计算机视觉应用),CUDA数组是明显的选择。而对于具有规则访问模式的应用程序,特别是那些很少或没有重用,或者重用可以在共享内存中由应用程序显式管理的应用程序,设备指针是更合适的选择。

在某些应用程序(如图像处理应用)中,设备指针和CUDA数组之间的选择并不明确。在其他条件相同的情况下,设备内存可能比CUDA数组更可取,但以下因素可帮助决策:
- CUDA数组不占用CUDA地址空间。
- 在WDDM驱动程序(Windows Vista及更高版本)上,系统可以自动管理CUDA数组的驻留。
- CUDA数组只能驻留在设备内存中,GPU可以在通过总线传输数据时在两种表示之间进行转换。对于某些应用程序,在主机内存中保留间距表示,在设备内存中保留CUDA数组表示是最佳方法。

2. 纹理引用

纹理引用是CUDA用于设置纹理硬件以“解释”底层内存内容的对象。存在这种间接层次的部分原因是,多个纹理引用可以使用不同的属性引用同一内存。

纹理引用的属性可以是不可变的(即在编译时指定,更改会导致应用程序行为不正确)或可变的(即应用程序可以以编译器不可见的方式更改纹理的行为)。例如,纹理的维度(1D、2D或3D)是不可变的,因为编译器必须知道它才能获取正确数量的输入参数并发出正确的机

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值