GPU上的L1缓存存储

时间:2012-07-01 21:31:06

标签: cuda gpu shared-memory cpu-cache

具有计算能力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位字。这是对的吗?

1 个答案:

答案 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,然后您在这部分中也是正确的。