超图优化:非规则应用局部性提升与数据重排算法

需积分: 5 0 下载量 184 浏览量 更新于2024-08-11 收藏 565KB PDF 举报
"基于超图的非规则应用局部性优化 (2012年),通过超图数组的形式化描述,提出数据重排和迭代重排算法,以提升非规则循环应用的性能。实验显示,这些算法能显著提高程序执行速度和缓存命中率。" 在计算机科学领域,尤其是并行计算和编译优化中,局部性优化是关键策略之一,旨在减少内存访问时间,提升程序执行效率。这篇2012年的研究论文聚焦于非规则循环应用,这类应用通常涉及复杂的内存访问模式,使得传统优化方法效果有限。研究人员引入了超图的概念来描述这类问题,超图能够更好地捕捉一次迭代中多个间接数组访问的复杂依赖关系。 论文首先定义了超图数组,这是一种抽象的数据结构,用于表示非规则应用中的数据依赖。超图中的节点代表数组元素,边则表示元素间的依赖关系。基于这一模型,研究者提出了三种数据重排算法: 1. 基于超图的非重复编码数据重排算法:该算法尝试消除重复的访问路径,通过改变元素顺序减少冗余访问,提高数据局部性。 2. 基于超图的回溯搜索数据重排算法:此算法利用回溯搜索策略,寻找满足特定条件(如最小化访问距离)的最优数据布局。 3. 基于超图的先划分再回溯数据重排算法:先将超图划分为多个子图,然后对每个子图分别进行回溯搜索,以进一步优化数据分布。 此外,为了应对非规则应用的迭代特性,论文还提出了两种迭代重排算法: 1. 基于超图的非重复编码迭代重排算法:在每次迭代时都应用非重复编码策略,动态调整数据布局以适应变化的访问模式。 2. 基于超图的回溯搜索迭代重排算法:结合回溯搜索,在迭代过程中持续优化数据排列,以适应不断变化的局部性需求。 实验结果表明,这些算法对于典型非规则应用,如流体力学问题,能够显著提升程序执行速度,平均提升约为25.4%。同时,通过最佳的数据重排和迭代重排组合,一级和二级高速缓存的平均命中率分别达到了91.7%和96.5%,这表明了算法在改善内存访问效率方面的有效性。 这篇论文通过超图理论提供了一套新颖的优化工具,对于处理非规则应用中的数据局部性问题具有重要的理论价值和实际意义。这些算法不仅有助于提升程序性能,而且对于理解和设计针对非规则应用的高效编译器和优化策略也提供了有价值的思路。