存在减少模式的共享内存冲突?

时间:2018-06-09 08:33:56

标签: cuda

我专注于Mark Harris的幻灯片 Optimizing Parallel Reduction in CUDA 中说明的银行冲突问题,我来到了这个问题:

  

幻灯片8和12分别展示了发散分支问题和非发散解决方案,存在银行冲突问题。但是,这个问题仅在幻灯片12中提到

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

10 -> bank 1
1  -> bank 2
8  -> bank 3
   .
   .
   .
只要warp的线程请求同一个bank中的字节,

就会出现 bank conflict 的问题。在幻灯片8中,所有6个线程(相同的warp)都在请求来自不同存储体的字节(没有存储体冲突)。此外,在幻灯片12中,所有6个线程(同样是相同的warp)正在请求来自不同存储体的字节(仍然没有存储体冲突)。有人会澄清这个问题何时出现?

1 个答案:

答案 0 :(得分:1)

我想我错了。

在幻灯片8中,索引为2i的每个线程正在访问索引为2i的银行。因此,线程32(warp中的最后一个线程)访问索引为32的存储区。因此,不会发生存储体冲突(warp中没有任何线程访问同一存储区)。

在幻灯片12中,索引为i的每个线程正在访问索引为2i的银行。 因此,线程32(warp中的最后一个线程)访问索引为64的存储区。访问模式分析显示每个线程在这种情况下访问同一个存储区2次,这是严重的银行冲突