Cuda 还原模式下共享内存的库冲突?

Cuda 还原模式下共享内存的库冲突?,cuda,Cuda,我把注意力集中在马克·哈里斯的幻灯片中描述的银行冲突问题上,我想到了这个问题: 幻灯片8和12分别演示了分支机构发散问题和非发散解决方案,它们存在银行冲突问题。但是,该问题仅在幻灯片12中提到 据我所知,每4个字节的数据(本例中为整数)存储在一个内存库中。在这种情况下: 10 -> bank 1 1 -> bank 2 8 -> bank 3 . . . 每当一个warp的线程请求同一个bank中的字节时,就会出现bank conflict问题。在幻灯片

我把注意力集中在马克·哈里斯的幻灯片中描述的银行冲突问题上,我想到了这个问题:

幻灯片8和12分别演示了分支机构发散问题和非发散解决方案,它们存在银行冲突问题。但是,该问题仅在幻灯片12中提到

据我所知,每4个字节的数据(本例中为整数)存储在一个内存库中。在这种情况下:

10 -> bank 1
1  -> bank 2
8  -> bank 3
   .
   .
   .
每当一个warp的线程请求同一个bank中的字节时,就会出现bank conflict问题。在幻灯片8中,所有6个线程(相同的扭曲)都在从不同的存储组请求字节(没有存储组冲突)。此外,在幻灯片12中,所有6个线程(同样是同一个扭曲线程)都在从不同的存储组请求字节(仍然没有存储组冲突)。有人能澄清一下这个问题到底是什么时候出现的吗?

我想我错了

在幻灯片8中,索引为2i的每个线程正在访问索引为2i的银行。因此,线程32(扭曲中的最后一个线程)使用索引32访问库。因此,不会发生库冲突(warp中的所有线程都不会访问同一个库)

在幻灯片12中,索引为i的每个线程正在访问索引为2i的银行。 因此,线程32(扭曲中的最后一个线程)使用索引64访问库。对访问模式的分析表明,在这种情况下,每个线程访问同一个银行2次,这是一种严重的银行冲突