银行在字数方面存在冲突

  • 本文关键字:方面 存在 冲突 cuda
  • 更新时间 :
  • 英文 :


我读了几篇关于共享内存的好文章;但我最初对银行冲突有疑问据说如果线程 1 和线程 2 从库 0 访问字 0,则没有银行冲突但如果他们访问不同的词,那么就会有银行冲突;但我的问题是,一个银行里怎么能有不同的词?由于组 0 大小为 32 位,字大小为 32 位;最多可以有1个字/银行。

使用计算能力为 2.* 或 3.* 的 GPU,有 32 个共享内存库;但共享内存中很可能有超过 32 个单词 (= 128B) 的数据。 每个银行b负责地址(例如)A % nbanks == b中的所有数据:

        +--------+---------+---------+-
Bank 0  | word 0 | word 32 | word 64 |...
        +--------+---------+---------+-
Bank 1  | word 1 | word 33 | word 65 |...
        +--------+---------+---------+-
Bank 2  | word 2 | word 34 | word 66 |...
        +--------+---------+---------+-
 ...    |  ..... |         |         |
        +--------+---------+---------+-
Bank 30 | word 30| word 62 | word 94 |...
        +--------+---------+---------+-
Bank 31 | word 31| word 63 | word 95 |...
        +--------+---------+---------+-
如果每个人都在访问单词 0,

则有"广播"功能;但如果线程 0 正在访问单词 0,线程 1 正在访问单词 32,等等,那么这些访问将被序列化。

最新更新