1. GPU cache 由于GPU 大规模多线程的特性,导致局部性很差。
2. GPU cache同样有抖动出现,这些thrashing是由于warp之间竞争引起的,当一些warp被调度到同一个SIMT核时,就造成了thrashing的出现。由于应用的工作集通常比cache大小大很多,一些高级的替换策略也没办法解决GPU的这个问题。
3. GPU同时有成百上千线程执行,每个线程分到的cache资源更少,CPU cache line生命周期更段,很多cache line在重用之前就被替换。
CPU中解决抖动的方法
1. Cache bypassing[1]:防止cache line被过早的evict出去,选择性地让某些内存请求绕过cache,从而为其他请求省下了cache空间,从而达到减少竞争。但是这个方法用到GPU上时,由于会有很多的cache miss发生【包括由于bypass的内存请求造成的】会导致MSHR或者片上网络堵塞,因此而限制内存提升。
【idea:stacking + bypass】
2. Thread throttling: 首先将应用解构为计算任务和内存任务的组合。为了防止内存请求互相干预,限制并行执行的内存任务数[3]。
GPU中解决抖动的方法
1. Cache-Conscious Wavefront Scheduling利用thread/warp throttling来减少inter-warp竞争,并且提高GPU中的L1 cache命中率。提出两种机制,一种static wavefront limiting (SWL)在每个warp调度器使用静态确定的最多活动warp数目【maximum active warps (MAW)】。另一种利用运行时信息确定MAW数目。然而这种warp throttling的方法损失了大规模多线程能够隐藏延迟的优势,造成片上网络以及DRAM带宽利用率低下,限制了提升性能的空间。
[1] MICRO-12-Improving cache management policies using dynamic reuse distances
[2] PACT-14-MRPB: Memory request prioritization for massively parallel processors
[3] MICRO-10-Memory Latency Reduction via Thread Throttling
本文探讨了GPU缓存抖动的原因及其对性能的影响,并介绍了CPU中用于缓解抖动的技术,如Cache bypassing和Thread throttling。针对GPU特有的挑战,文章详细阐述了GPU缓存管理策略,包括Cache-conscious Wavefront Scheduling,旨在通过减少内战竞争和提高命中率来优化GPU性能。
3362

被折叠的 条评论
为什么被折叠?



