银行在字数方面存在冲突

时间:2012-11-23 19:14:25

标签: cuda

我读了几篇关于共享内存的好文章;但我对银行冲突有初步质疑 据说如果线程1和线程2从存储区0访问字0,则不存在存储体冲突 但如果他们获得不同的话,那么就会发生银行冲突;但我的问题是不同的单词如何存在于一个银行? 由于bank 0的大小是32位,字大小是32位;最多可以有一个单词/ bank。

1 个答案:

答案 0 :(得分:6)

拥有计算能力为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等,那么这些访问将被序列化。