cuda_coalesced memory

本文详细介绍了CUDA中合并内存访问(coalesced memory access)的概念及其重要性。文章解释了如何通过确保内存访问对齐和连续来减少延迟(latency),提高GPU的计算效率。此外,还讨论了不同数据类型如char、int、float和double的内存访问特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://blog.youkuaiyun.com/bruce_0712/article/details/65444997

CUDA的合并内存访问:coalesced memory
misaligned read/write;减少latency

  1. GPU的计算单元等待计算结果时,切换到下一个thread,读取下一个内存地址,以隐藏latency
  2. 连续存取减少latency
    (1 word = 2 byte) (1 byte = 8bit)
    char 16 bit; int 32 bit; float 32bit; double 64 bit;
    coalesced: 开始的地址,必须是每个 thread 所存取的大小的 16 倍。例如,如果每个thread 都读取 32 bits 的数据,那么第一个 thread 读取的地址,必须是 16*4 = 64 bytes 的倍数。

每个 thread 一次读取的内存数据量,可以是 32 bits、64 bits、或 128 bits。不过,32 bits 的效率是最好的。64 bits 的效率会稍差,而一次读取 128 bits 的效率则比一次读取 32 bits 要显著来得低(但仍比 non-coalesced 的存取要好)。

如果每个 thread 一次存取的数据并不是 32 bits、64 bits、或 128 bits,那就无法符合 coalesced 的条件.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值