● 摘要
高性能计算广泛应用于计算物理学、计算化学、计算生物学、计算材料学以及航空数值仿真、地震资料处理、天气预报等学科领域。近年来,高性能计算机发展非常迅速,出现多核和众核芯片,异构混合结构成为主流,促使其峰值速度不断提升。另一方面,并行算法和并行程序快速发展,出现了新的并行模型和实现模式,程序优化水平进一步提高。但是,优化的并行算法和程序能否高效地运行于高性能计算机系统仍是一个问题。性能监测分析技术可识别程序运行过程中各个阶段的状态,发现性能瓶颈,采取有针对性的优化措施来促使软硬件更加紧密配合,以充分发挥高性能计算机系统的效率,其重要应用价值已在许多成熟高性能计算系统上得以体现。适应新的异构体系结构和新的并行模式的性能监测分析关键技术是具有挑战性的研究问题。
本文基于当前高性能计算的系统架构和并行模型的变化及发展趋势,对现有的各种并行程序性能监测分析技术及应用系统进行深入研究的基础上,围绕适应混合结构及其编程模型以及在线模式展开研究,关键问题在于:(1) 混合结构使应用并行化程度提高,并行编程粒度减少,不规则和动态结构应用需求加大,新的多核任务模式被提出适应这种变化,因此需要解决这种模式下的性能监测分析问题;(2) 混合结构的重要组成部分是异构加速单元,对以GPU为代表的加速器件的性能监测分析方法也是目前亟待解决的研究问题;(3) 计算规模不断增大,传统的事后分析模式已经不适应新的优化需求,在线性能分析方法研究与应用势在必行;(4) 高性能计算系统规模已达到上万节点和数十万处理器核级别,性能监测范围扩大,粒度减小,如何实现轻量级监测和大规模性能数据汇聚也成为关键问题。
围绕上述问题,本论文的主要研究成果如下:
针对现有监测方法无法适应多核编程任务模式异步性和机动性的运行特征,提出一种任务模式监测模型TPMM,以研究任务并行模型性能监测共性理论和技术,并提出两种基于性能信息的任务行为描述图,将性能信息表述成任务的执行行为和依赖关系,然后结合OpenMP的任务运行机制,论述性能监测方法和关键实现技术,在此基础上,研制了一套基于包装库技术的运行时系统监测库,识别关键监测点并进行跟踪和记录。最后通过运行BTOS测试集验证了监测模型的有效性和高效性,大部分测试程序的监测开销都低于20%,满足应用监测的实际需求。与现有研究相比,此方法既不依赖源程序,又不会影响编译环境和运行时系统,可测量更加丰富的信息并清晰地表达,监测开销也相对较小。
GPU上运行的CUDA程序采用任务并行和数据并行的结合,给性能监测分析带来困难。本文提出一套监测架构LPMF展开监测工作。在此基础上,针对任务并行部分,构建抽象模型CTPM,通过反映性能信息的行为属性描述常见的程序无效行为,为性能工具的实现提供理论支持;数据并行部分,则使用一种LIAR算法快速寻找关键度量。同时,论文通过典型无效行为验证CTPM的描述能力,并使用NVIDIA SDK测试集算例证明了LIAR算法的有效性。此方法克服了目前研究的片面性,系统深入地研究GPU应用运行的性能监测方法,是深刻理解GPU程序性能根源的重要途径。
针对大规模系统在线分析的实际需求,提出一种数据传输网的初始化方法。定义了一套模型表述传输网所需的各个组件及其相互关系,在此基础上描述了传输流程,提出两种策略来规范通信进程的放置方法。另外,提出了系统监测进程的附加方法,有利于实现在线综合分析。此方法解决了传输网初始化的传输进程优化放置问题,以及不同的性能数据的协同传输问题,并通过运行NPB以及PPerfMark测试集验证了其构建效率和有效性。
基于上述性能监测模型和方法,研发了一套性能监测分析原型系统。此系统可以监测常见并行编程模型MPI,OpenMP,CUDA,以及底层系统计数器(PAPI)、操作系统级别的信息(PROC信息)、IO操作信息以及用户级信息,可以通过对标准测试集和实际应用算例进行各种层次的监测分析(包括混合编程模型),验证上述模型和方法的有效性。
相关内容
相关标签