关于共享存储器的bank conflict

版主你好
shared float shared[32];
float data=shared[BaseIndex+stid];
这两句在什么情况下会出现bank conflict。(BaseIndex是起始地址)
书上说是当s
n是m(m是bank数)的整数倍是会发生bank conflict。我对这部分不是很理解,这个n到底代表什么书上也没说,能帮我解释一下这两句在什么情况下会出现bank conflict吗

楼主您好,

(1)您引用的资料给出了一个未加定义的名词"n", 请从原书作者或者销售商处获得技术支持。
(2)一般而言,对于目前的N卡架构,在您的float数组的情况下,1.x需要步长s和16互质,2.x需要步长s和32互质,方可确保不发生bank conflict. (即,s需要是奇数即可确保不发生bank conflict)
(3)对于3.x而言,取消了传统上的bank conflict概念,当建议您依然按照上述说法(即,s取1,3,5,7。…这样的数)以确保shared memory操作尽可能取得最大吞吐率。

感谢您的周末来访。