开普勒的L2缓存

Far*_*zad 11 caching cuda gpu nvidia

在参考文献的位置方面,L2缓存如何在具有Kepler架构的GPU中工作?例如,如果一个线程访问全局内存中的地址,假设该地址的值不在L2缓存中,那么缓存的值是多少?是暂时的吗?或者该附近的其他附近值是否也被带到L2缓存(空间)?

下图来自NVIDIA白皮书.

图片来自NVIDIA白皮书

Sag*_*uti 10

统一L2缓存是在计算能力2.0及更高版本的基础上推出的,并且继续在Kepler架构上得到支持.使用的缓存策略是LRU(最近最少使用),其主要目的是避免全局内存带宽瓶颈.GPU应用程序可以展示两种类型的位置(时间和空间).

每当尝试读取特定内存时,它会在缓存L1和L2中查找(如果未找到),则它将从缓存行加载128字节.这是默认模式.从下图可以理解为什么128位访问模式给出了良好的结果.

在此输入图像描述

  • 上面第一段的帖子回答了这个问题.关于这个答案的第二段,我认为只有当(在默认模式下)设备架构是费米时才会这样.正如@Robert Crovella在评论中提到的,在Kepler中,L2缓存未命中导致32字节负载.此外,我认为该图具有误导性.当SM使用少量线程未充分利用时,更宽的全局内存请求可能会使全局内存带宽饱和.当SM变得更多/完全占用更多线程时,即使加载4字节,全局存储器带宽也会饱和. (2认同)