全局存储器优化

3.3  全局存储器优化
        在CUDA的存储器结构中,全局存储器是最慢的,其延迟在几百个时钟,但是其容量是最大的,我们使用cudaMalloc函数分配的指针都是指向全局存储器空间的,我们不可能避开它们的使用。这两个因素使得全局存储器的使用对CUDA 程序的性能至关重要。

3.3.1  合并访问
        为了提高访问全局存储器的效率,CUDA 提供了一种称为合并访问的机制来加速全局存储器的访问。在计算能力1.0和1.1的设备上,合并访问能够在一次存储器访问中访问最多达16个数据;在计算能力1.2和1.3的设备上,合并访问一次最多能够访问32个数据。另外线程间的切换也能够隐藏全局存储器的访问延迟。
        所谓合并访问就是尽量要求相邻的线程访问相邻的地址空间,当然在不同计算能力的设备上,其具体要求有所差别,在1.0和1.1的设备上,合并访问要求第k个线程访问对齐的第k个存储地址,必须对齐,不能交叉,而1.2以上的设备没有此要求。
        对于不同的数据类型,合并访问的带宽不相同,一般而言使用四字节的数据类型比较好,但是并不绝对,在某些情况下,使用8字节或16字节的数据性能可能会更好,尤其是在满足1.0和1.1设备的合并访问条件下。
        在设计的时候要考虑到全局存储器的合并访问,并以此为要求来设计,比如在必要的时候对矩阵进行转置。对数据的组织方式加以改变。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23057064/viewspace-664344/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23057064/viewspace-664344/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值