把共享内存看成一个二维结构,每一列为一个存储体(bank),每一行不同单元的地址是连续的。一个单元为32bit或64bit,取决于硬件架构。
bank与线程之间没有固定的对应关系,全看内核函数怎么写。
每个bank一次只能响应一个地址的访问,如果线程束中不同线程同时访问同一个bank的不同地址,会依次响应,从而造成阻塞。
不同线程同时访问不同bank或同一个bank同一单元,都不会造成阻塞,可以立即响应。
参考https://blog.youkuaiyun.com/endlch/article/details/47043069