论文部分内容阅读
随着人类认识自然和改造自然需求的增长,大规模高性能计算已经成为人们生产生活中不可缺少的研究方法。高性能计算被广泛应用于气象预测、航空航天、核试验等重要领域,实现科学计算的程序一般需要在成千上万个处理器上并行运行,程序自身的性能和程序与平台的匹配程度都会对运行性能和成本产生显著影响。为了改善高性能计算程序的性能,为其选择匹配的运行平台,评测高性能计算程序的性能成为研究人员的又一研究方向。高性能计算领域的科学计算程序一般是单程序多数据(Single Program Multiple Data,SPMD)形式的并行程序,因此本课题的主要研究内容是,以SPMD形式的并行程序为研究对象,设计并实现并行程序解析性能模型的自动生成方案。评测程序性能的常用方法有实际测量法、基准测试法、性能模拟法和性能模型法,每种方法都有其适用的范围和局限性。通过分析这些评测方法的优缺点,选择以性能模型法为基础建立解析性能模型自动生成方案。传统性能模型法具有人工计算量大、需要使用者深入理解程序的缺点,本课题通过在计算部分借助分析工具和在通信部分引入函数封套技术规避了这些缺点。在将性能度量角度确定为程序执行时间的基础上,对并行程序解析性能模型的自动生成问题进行了描述。通过分析SPMD程序的特征,分别将程序的计算部分和通信部分进行了数学抽象,建立了描述时间性能的模型,将平台相关的参数单独处理,为跨平台性能预测提供了前提。设计了完整的性能模型自动生成方案。以目标应用程序的LLVM(Low LevelVirtual Machine) intermediate representation(IR)文件为分析对象,这在很大程度上降低了对应用程序编程语言的限制。对于计算部分,使用辅助分析工具LLVM实现热点基本块执行次数和基本算术操作次数的自动统计,对于通信部分,通过重构应用程序的循环结构确定通信函数的主循环体,使用文本解析的方法获得主循环体的执行次数和内部的通信函数信息,最后通过曲线拟合的方法确定热点基本块执行次数和主循环体循环次数的变化规律,生成应用程序的性能模型。将解析性能模型自动生成方案应用于CGPOP(Conjugate Gradient ParallelOcean Program),生成了以运行规模为变量的性能模型。使用该性能模型评测可以测量的程序性能和预测不可测量的程序性能,并与实际测量的程序性能进行比较,从评测效果和预测效果两个方面证明了性能模型的有效性和准确性。