具有计算能力2.x的GPU将其片上存储器组织成32个存储体。片上存储器可以使用2种配置:48 KB共享和16 KB L1,反之亦然。对于48 KB共享和16 KB L1配置,存储库是L1高速缓存存储的。据我了解共享内存存储,在写入时,连续的32位字存储在连续的存储区中。这让我认为对于48 KB共享和16 KB L1配置,每个存储器组将为共享存储器存储384个32位字,为L1缓存存储128个32位字。这是对的吗?
答案 0 :(得分:1)
如果我理解你的意思:你问的是,例如: bank0保持地址相对于0移位32,64等4字节字(即128字节),例如, p[0]
和p[32]
(int* p
)对应同一家银行,对吗?
我认为,这种组织是由编程指南(5.0)的F.4.3(共享存储器)部分所暗示的,特别是部分是关于“32-Strided Access”。
this presentation的第84页也提供了这种orgranization的一些可视化。简而言之:对于SMEM,你是对的。
L1的访问模式是128Byte宽,因此它在您的配置中保存128个128Byte宽的行(并且N
(N+1)
行的地址之间没有关系。您可以将单个128Byte行解释为为32个库中的每一个提供4Bytes,然后您在这部分中也是正确的。