开发者社区> night李> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

CUDA实践指南(十三)

简介:
+关注继续查看

设备内存空间:
CUDA设备使用多个内存空间,这些内存空间具有不同的特性,这些特性反映了它们在CUDA应用程序中的不同用法 这些内存空间包括全局,本地,共享,纹理和寄存器,如图2所示
1

合并的访问要求取决于设备的计算能力,可以查阅CUDA C编程指南中。
在这些不同的记忆空间中,全局记忆是最丰富的; 请参阅CUDA C编程指南的功能和技术规格,以了解每个计算功能级别上每个内存空间的可用内存量。 全局,本地和纹理内存的访问延迟最大,其次是常量内存,共享内存和寄存器文件。
存储器类型的各种主要特征如表1所示:
2

在纹理访问的情况下,如果纹理引用绑定到全局内存中的线性数组,则设备代码可以写入底层数组。 绑定到CUDA数组的纹理引用可以通过表面写入操作写入,方法是将表面绑定到相同的底层CUDA阵列存储)。 应该避免在同一内核启动时写入其底层全局内存阵列时从纹理中读取纹理,因为纹理缓存是只读的,并且在修改相关联的全局内存时不会失效。
对全局内存的合并访问:
编程支持CUDA的GPU架构的最重要的性能考虑因素可能是全局内存访问的合并。 当某些访问要求得到满足时,全局内存加载和通过一个warp线程存储被设备合并为少至一个事务。
高优先级:确保全局内存访问尽可能合并。
对于计算能力为2.x的设备,可以很容易地总结这些需求:对一个warp线程的并发访问将合并成许多事务处理,这些事务处理的数量等于为warp的所有线程提供服务所需的高速缓存行数。 默认情况下,所有访问都通过L1缓存,即128字节的行。 对于分散访问模式,为了减少过度访问,有时仅在L2中进行高速缓存是有用的,L2缓存了较短的32字节段。
对于计算能力3.x的设备,访问全局内存仅缓存在L2中; L1保留用于本地内存访问。 一些计算能力为3.5,3.7或5.2的设备也允许在L1中选择全局缓存。
在开启ECC时,以合并方式访问内存更为重要。 分散访问会增加ECC内存传输开销,特别是在将数据写入全局内存时。
以下简单示例说明了合并概念。 这些例子假设计算能力2.x. 这些示例假设访问通过L1进行缓存,这是这些设备的默认行为,除非另有说明,访问是针对4个字节的字。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
+关注
night李
对机器视觉 图像处理有一定的兴趣 要做一条有梦想的咸鱼
文章
问答
文章排行榜
最热
最新
相关电子书
更多
双剑合璧-Python和大数据计算平台的结合
立即下载
PHP在机器学习上的应用及云深度学习平台的架构设计与实现
立即下载
Kubeflow 社区简介与落地实践
立即下载