我专注于马克·哈里斯( Mark )的幻灯片中所示的银行冲突问题,http://developer.download.nvidia.com/compute/cuda/1.1-Beta/x86_website/projects/reduction/doc/reduction.pdf和我谈到了这个问题:
幻灯片8和12分别演示了发散分支问题和非发散解,分别存在银行冲突问题。但是,这个问题是仅在幻灯片12中提到的。
据我所知,每4个字节的数据(在本例中为整数)存储在一个内存库中。在这种情况下:
10 -> bank 1
1 -> bank 2
8 -> bank 3
.
.
.而且,每当翘曲线程请求同一组中的字节时,银行冲突问题就会发生。在幻灯片8中,所有6个线程(具有相同的翘曲)都请求来自不同银行的字节(没有银行冲突)。此外,在幻灯片12中,所有6个线程(同样具有相同的翘曲)都请求来自不同银行的字节(仍然没有银行冲突)。有人能澄清这个问题到底是什么时候发生的吗?
发布于 2018-06-09 08:48:29
我想我错了。
在幻灯片8中,每个使用索引2i的线程都使用索引2i访问银行。因此,线程32 (翘曲中的最后一个线程)使用索引32访问银行。因此,不会发生银行冲突( warp中的线程都不会访问同一个银行)。
在幻灯片12中,每一个带有索引i的线程都使用索引2i访问银行。因此,线程32 (翘曲中的最后一个线程)使用索引64访问银行。访问模式分析表明,在这种情况下,每个线程访问同一银行2次,这是一个严重的银行冲突。
https://stackoverflow.com/questions/50772391
复制相似问题