我正在阅读马克哈里斯关于优化CUDA平行减少的演讲。这是我遇到问题的幻灯片:
它说这种方法存在银行冲突问题。但为什么?所有线程正在访问位于不同存储体中的两个连续存储器单元。它们都不会同时访问特定的存储单元。
答案 0 :(得分:4)
此演示文稿可追溯至CUDA的早期阶段,适用于第一代硬件。
该硬件共享内存在8个32位库中。由于共享数组中的每个第八个条目都位于同一个存储区中,因此在该还原树的多个级别存在存储库冲突。
这个问题在较新的硬件中得到解决,其中银行的数量扩大到32,这意味着不会发生这种银行冲突。