首页 文章

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

提问于
浏览
0

我专注于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 回答

  • 1

    我想我错了 .

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

    在幻灯片12中,具有索引i的每个线程正在访问具有索引2i的存储体 . 因此,线程32(warp中的最后一个线程)访问具有索引64的存储体 . 访问模式的分析显示每个线程在这种情况下访问同一存储体2次,这是严重的 bank conflict .

相关问题