CUDA中的内存效率

GPU内存结构

  • 片外存储

    • 常量内存(读取速度较快)
    • 纹理内存
    • 全局内存
  • 片内存储

    • 每个SP中的32位寄存器组(以线程为单位)
    • 共享存储(与cache速度类似)(以线程块为单位)
    • 只读的常量内存缓存(以网格为单位)
    • 只读的纹理内存缓存
  • 不同存储类型的访问时间

    存储类型寄存器共享内存常量内存全局内存
    带宽8TB/s1.5TB/s200MB/s200MB/s
    延迟一个周期1—32个周期400—600周期400—600周期
  • 数据存储的位置

    • 使用cudaMemcpy从主机拷贝到GPU的数据存储在全局内存,常量内存或纹理内存
    • 将数据放置到共享内存需要程序员手工定义共享内存区域,并将数据从全局内存放到共享内存
    • 绝大多数的线程内部分配的变量在寄存器中

全局内存

尽量在同一时刻让线程组请求连续的内存地址,从而提高全局内存的访问效率

  • CUDA常用的编程策略
    • 将要处理的数据划分为小块数据,使其刚好存储在共享内存中
    • 将小块数从全局内存送入共享内存,使用多线程读取可以有效利用内存级的并行
    • 线程块中的线程对位于共享内存中的小块数据进行计算
    • 将计算结果从共享内存传回到全局内存

共享内存

  • 共享内存是基于存储体切换的架构(如果没有存储体冲突,共享内存的访问速度与寄存器相同)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值