GPU L1和L2缓存统计信息

时间:2011-09-19 10:00:13

标签: cuda opencl gpu gpgpu

我编写了一些执行一系列全局内存访问的简单基准测试。当我测量L1和L2缓存统计数据时,我发现(在GTX580中有16个SM):

 total L1 cache misses * 16 != total L2 cache queries

实际上,右侧远高于左侧(大约五次)。我听说过一些注册溢出也可以放到L2中。但我的内核只有不到28个寄存器,而不是那么多。我想知道这种差异的根源是什么?或者我是否误解了这些性能计数器的含义?

由于

2 个答案:

答案 0 :(得分:2)

cuda编程指南G.4.2部分:

缓存全局内存访问。使用-dlcm编译标志,可以在编译时将它们配置为在L1和L2中缓存(-Xptxas -dlcm = ca)(这是默认设置)或仅在L2中缓存(-Xptxas -dlcm = cg)。 高速缓存行为128字节,并映射到设备存储器中的128字节对齐段。在L1和L2中缓存的存储器访问使用128字节的存储器事务进行服务,而仅在L2中缓存的存储器访问使用32字节的存储器事务进行服务。因此,仅在L2中缓存可以减少过度提取,例如,在分散的存储器访问的情况下。

答案 1 :(得分:1)

可能是因为从L1读取的长度为128个字节,而从L2读取的长度为32个字节。