使用交错寻址方法并行减少存储冲突
Posted
技术标签:
【中文标题】使用交错寻址方法并行减少存储冲突【英文标题】:Bank conflict in parallel reduction using interleaved addressing method 【发布时间】:2017-04-05 07:42:31 【问题描述】:我正在阅读 Mark Harris 的关于在 CUDA 中优化并行缩减的演示文稿。这是一张我遇到问题的幻灯片:
它说这种方法存在银行冲突问题。但为什么?所有线程都在访问不同存储体中的两个连续存储单元。它们都不会同时访问特定的内存单元。
【问题讨论】:
【参考方案1】:此演示文稿可追溯到 CUDA 的早期阶段,适用于第一代硬件。
该硬件具有以 8 个 32 位组排列的共享内存。因为共享数组中的每八个条目都驻留在同一个 bank 中,所以该归约树的多个级别都存在 bank 冲突。
此问题已在较新的硬件中得到解决,其中银行的数量扩大到 32 个,这意味着不会发生这种银行冲突。
【讨论】:
当线程都从 32 的倍数(* 4 字节)的地址中读取时,是否仍然会发生这种情况? @mirgee:解决方案是使用顺序寻址而不是交错寻址。因此,所有 8 次写入都将进入不同的存储区,并且完全没有冲突。请参阅developer.download.nvidia.com/assets/cuda/files/reduction.pdf 的幻灯片 14。以上是关于使用交错寻址方法并行减少存储冲突的主要内容,如果未能解决你的问题,请参考以下文章