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

Posted

技术标签:

【中文标题】我可以假设计算能力 3.0 中没有银行冲突吗?【英文标题】:May I assume no bank conflict in compute capability 3.0? 【发布时间】:2014-11-20 11:03:02 【问题描述】:

由于我最近才开始学习 CUDA,银行冲突似乎是 CUDA 设备的限制之一,应该仔细考虑。但在阅读CUDA programming guide 中的计算能力 3.0 时,我发现

“对warp的共享内存请求不会在访问同一个64位字中的任何子字的两个线程之间产生bank冲突(即使两个子字的地址位于同一个bank中) : 在这种情况下,对于读取访问,64 位字被广播到请求线程,对于写入访问,每个子字仅由一个线程写入(哪个线程执行写入未定义)。"

这是否意味着我们可以忽略 CC 3.0 或更高版本中的 CUDA 应用程序的银行冲突?

【问题讨论】:

【参考方案1】:

我想我找到了an answer. 在 CC 3.0 中,它并非完全没有所有 bank 冲突,但现在多个线程可以访问子字而没有任何 bank 冲突。我相信这将大大减少银行冲突的编程工作,尤其是在我的项目中。

【讨论】:

以上是关于我可以假设计算能力 3.0 中没有银行冲突吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用内核参数会导致银行冲突吗? [关闭]

二维内核中的银行冲突

将数据从全局加载到共享内存时如何避免银行冲突

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

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

随机内存访问和银行冲突