简单性能模型:案例研究
1. 缓存性能与局部性
在性能分析中,冷缓存(cold cache)是指在进入内核之前,其中没有任何与当前操作相关数据的缓存。当一个内核在冷缓存的情况下运行时,其性能可能会受到影响。通过观察大圆点与强制限制(compulsory limit)之间的距离,我们可以了解该内核中缓存的有效性。如果一个简单内核的容量和冲突缓存负载仅比强制缓存负载大约15%,那么该内核的性能提升空间就比较小。
而大圆点与DRAM顶线(DRAM roofline)之间的距离,是因为该内核是带有向量化的串行内核,而顶线是基于OpenMP的并行情况。这意味着通过增加并行性,有提升性能的潜力。在对数 - 对数图中,差异往往比看起来更大,通过并行性可能实现近一个数量级的性能提升。
提升缓存使用效率可以通过利用缓存行中的其他值,或者在数据位于缓存中时多次重用数据来实现,这分别对应了空间局部性(spatial locality)和时间局部性(temporal locality):
- 空间局部性 :指内存中相邻位置的数据经常被一起引用。例如,对于模板内核(stencil kernel),当 x[1][1] 的值被加载到缓存中时, x[1][2] 也会被加载进来,这就是空间局部性的体现。
- 时间局部性 :指最近引用过的数据在不久的将来很可能会再次被引用。在计算 x[1][2] 的下一次迭代中,需要用到 x[1][1] ,由于它应该还在缓存中,所以可以被重用,这就是时间局部性的例子。
超级会员免费看
订阅专栏 解锁全文
37

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



