CUDA:不同经线之间的银行冲突?

Posted

技术标签:

【中文标题】CUDA:不同经线之间的银行冲突?【英文标题】:CUDA: bank conflicts between different warps? 【发布时间】:2014-03-15 04:11:39 【问题描述】:

我刚刚(来自Why only one of the warps is executed by a SM in cuda?)了解到,Kepler GPU 实际上可以同时执行来自多个(显然是 4 个)warp 的指令。

共享内存库是否也可以同时处理四个请求?如果不是,那意味着银行冲突可能发生在碰巧同时执行的不同warp的线程之间,即使在任何单独的warp中都没有银行冲突,对吧?有这方面的资料吗?

【问题讨论】:

【参考方案1】:

计算能力 3.x 设备 (Kepler) 每个 SM 有 4 个 warps 调度程序。在每个周期中,每个 warp 调度程序都会选择一个 warp 并从该 warp 发出 1-2 条指令。 SM 只有一个加载存储单元 (LSU) 单元来服务 L1 和共享内存请求,因此 8 条潜在指令中只有 1 条可以分派到 LSU,因此不会发生 warp 之间的 bank 冲突。

【讨论】:

以上是关于CUDA:不同经线之间的银行冲突?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Cuda/OpenCL 的全局内存中没有银行冲突?

我可以假设计算能力 3.0 中没有银行冲突吗?

银行冲突CUDA共享内存?

故意导致 CUDA 设备上共享内存的银行冲突

从同一位置读取时 CUDA 中的银行冲突

如何确保与 CUDA 中的 3D 共享数据访问没有银行冲突