论文部分内容阅读
作为解决大规模计算问题的重要手段,高性能计算越来越广泛地应用到科学与工程的各个领域。随着高性能计算的发展,各种高性能计算机不断涌现并得到广泛使用,机器的峰值性能不断提高。但是,实际应用程序获得的持续性能并未随着机器峰值性能的提高而同比例提高,两者的差距日益扩大。程序性能优化是解决该问题的有效途径之一,得到学术界与工业界的高度关注。由于机器体系结构与程序结构日益复杂,影响程序性能的因素越来越多,同时各种因素之间又存在复杂、非线性的交互作用,使程序性能分析与优化面临很多挑战。 本文围绕优化科学计算程序性能,缩短程序实际性能与机器峰值性能之间的差距这一根本目标,在程序性能优化参数选择、程序性能测试与特征分析、实际程序性能优化等方面进行了深入研究。本文的主要工作包括: (1) 提出程序缩减变换(Program Reduction Transformation)方法,以减少执行驱动参数选择的开销,建立了相应的缩减变换理论,并针对科学计算程序中常见的几种情况找到了其合法的缩减变换。缩减变换大幅度降低了评价每个参数所需的时间,在保证参数选择质量基本不变的前提下,拓展了执行驱动的优化参数选择的适用范围。 (2) 针对枚举搜索与迭代编译的不足,提出了基于有限执行与遗传算法(Genetic Algorithms)的程序性能参数选择框架(Limited Execution and Genetic Algorithms based optimization parameter selection,简称Lega)。Lega采用缩减变换减少评价每个候选参数的时间,使用高效的遗传搜索引擎(Execution-Driven and Genetic Algorithms based Optimization Parameter Search,简称Edga)进行快速全局搜索,并通过参数化过程避免了重复的预处理与本地编译过程。在三种平台上的实验表明,Lega的优化参数选择质量优于基于模型分析的典型算法DAT,开销显著小于迭代编译方法,并且具有平台自适应的优点。 (3) 针对已有性能测试软件的不足,设计并实现了一个基于硬件性能计数器的、面向科学计算程序的性能测试软件PTracker(Performance Tracker)。它不仅能够方便地获取程序性能数据,而且通过自动分析,提供反映程序在存储访问、指令级并行性(Instruction-Level Parallelism,ILP)开发方面高层次特征的综合数据。 (4) 提出一种基于跨嵌套循环的重用开发Jacobi迭代求解程序存储局部的方法,该方法与Time Skewing及New Tiling方法相比,具有保持程序粗粒度并行性的优点。数值实验结果证明了该方法的有效性。 (5) 对一个CFD业务程序LM3D进行了综合的单机性能优化,使该程序的并行版本在某国产MPP机64处理器上的机器效率提高了41.15%。 (6) 采用动态测试方法,对一类典型应用在基于Intel P4的PC机上的性能特征进行了深入分析,得出了一些对体系结构与程序性能优化有用的结论。