论文部分内容阅读
迭代编译是近年来针对高性能体系结构程序性能优化领域的一个新的研究热点。它挖掘各种变换的参数序列,生成程序的很多版本,并通过在目标平台上执行程序来选择具有最大性能加速比的程序版本,性能优化效果显著优于静态编译方法。但迭代编译优化过程中变换参数及变换集的选取、变换的实施顺序和实施次数等,均导致一个巨大的优化空间,而且由于依赖多次编译执行候选代码选择最优的程序版本,迭代编译通常非常耗时,优化开销巨大,对通用程序的优化面临很大困难。针对此,本文从优化空间修剪、搜索算法、优化空间划分、程序变换表示、优化框架等多方面出发,降低迭代编译的优化开销。持续的程序优化实验验证了新技术的有效性。论文主要研究成果如下:1.探讨了迭代编译的技术内涵与特征,对其研究现状进行综述,并指出当前迭代编译技术中存在的问题。2.提出基于机器体系结构参数和程序经验知识的优化空间修剪技术,实验结果表明该方法显著降低迭代编译优化开销。3.提出基于Nelder-Mead单纯形算法的优化参数搜索方法,实验结果表明对优化参数搜索问题,该算法可以找到比遗传算法和随机算法更优的变换参数,并且大多数情况下其搜索开销低于遗传算法。4.提出结合单变量边缘分布算法和单纯形方法的参数搜索算法—UMDA/S,利用优化空间结构和参数间依赖关系有效求解参数搜索问题。并提出精英保留、加权估计、实值变异等改进策略提高搜索算法的性能。与三种搜索算法的实验比较说明UMDA/S可以找到更加优秀的参数值,有效提高程序性能。5.提出基于硬件性能计数器的优化变换决策模型POTraM,决定何时以何种顺序对程序实施何种程序变换,划分优化空间。实验结果表明该模型可有效提高程序的浮点性能,降低程序运行时间,缩小程序持续性能与机器峰值性能的差距。6.为有效挖掘最优的循环变换序列和最优的变换参数,提出一个综合性的迭代编译优化框架PIT,集成多面体模型和模型指导的迭代编译技术,自动进行非参数化的代码变换、模型指导的参数化代码变换以及自动参数搜索。对三个典型计算内核程序的测试结果表明PIT可以对复杂的循环嵌套生成高效的代码,产生的性能收益远远超过本地编译器最高级别的优化,而且性能优化效果明显优于当前基于多面体模型的循环变换系统和迭代编译技术。