GPU CUDA K.3.3 共享内存
K.3.3 共享内存
共享内存采用32个存储体的组织结构,连续的32位字依次映射到相邻存储体。每个存储体每个时钟周期可提供32位带宽。
当线程束发起共享内存请求时,若两个线程访问同一32位字内的地址(即使地址位于相同存储体)不会引发存储体冲突:
-
对于读取操作:该字将通过广播机制传送至所有请求线程
-
对于写入操作:每个地址仅由一个线程执行写入(具体由哪个线程执行写入未定义)
图28展示了几种跨步访问的示例。
图29演示了涉及广播机制的内存读取访问实例。
左侧
32位字单位连续线性寻址(无存储体冲突)
中部
32位字双步长线性寻址(双路存储体冲突)
右侧
32位字三步长线性寻址(无存储体冲突)
左侧
通过随机置换实现无冲突访问。
中部
无冲突访问——线程3、4、6、7和9均访问存储体5中的同一字。
右侧
无冲突广播式访问(线程访问同一存储体内的相同字)。
人工智能芯片与自动驾驶