一种对并行程序的性能进行监测分析的方法及装置的制造方法
【技术领域】
[0001]本发明涉及高性能程序监测技术领域,特别是涉及一种对并行程序的性能进行监测分析的方法及装置。
【背景技术】
[0002]并行程序优化是当今分布式并行计算领域的一个重要问题。从编译角度对并行程序进行优化是一个重要的方法,但是编译时无法对程序的执行流程有一个准确的预知,例如程序的分支,以及接收用户输入的参数等。所以,程序运行时的反馈信息对并行程序优化有着关键的意义。在并行程序的监测方面已经有大量的研究成果和成熟的工具,通过插粧和库包装的方法,采集并行程序的各维度信息。
[0003]而高性能应用往往具有计算周期长、计算量大的特点。对于一个每秒百万亿次计算能力的高性能机群系统来说,一个并行任务的性能踪迹数据非常巨大。而对于这些庞大的性能数据,并不是单台物理机的存储系统能够胜任的,而且采集时性能数据本身是分布在各节点之上的,数据在汇聚时会进行大量的通信,占用网络带宽。在中小规模机群系统中可以采用I对η的通信模型,当计算规模在几十个节点以下的时候尚可以获得较好的性能,而当计算规模扩展到几百甚至几千、上万时,这样的通信模式将无法满足数据通信、数据存储、数据分析的要求。
【发明内容】
[0004]本发明的目的是提供一种对并行程序的性能进行监测分析的方法及装置,目的在于解决现有程序性能监测分析过程中网络通信以及分析效率较差的问题。
[0005]为解决上述技术问题,本发明提供一种对并行程序的性能进行监测分析的方法,包括:
[0006]对分布式并行程序的运行过程进行监测,采集所述并行程序的性能数据;
[0007]将采集到的所述性能数据进行分布式存储;
[0008]对所述性能数据进行分布式并行处理,得到反映所述并行程序的性能的分析结果
?目息O
[0009]可选地,所述采集所述并行程序的性能数据包括:
[0010]采集所述并行程序的各维度信息作为所述性能参数,所述维度信息包括:函数的执行时间、程序的硬件技术接口以及系统的程序信息。
[0011]可选地,所述将采集到的所述性能数据进行分布式存储包括:
[0012]每个计算节点分别将采集到的所述性能数据异步存储至HDFS分布式文件系统中。
[0013]可选地,所述对所述性能数据进行分布式并行处理包括:
[0014I计算节点利用MapReduce模型对所述性能数据进行分布式并行处理。
[0015]可选地,还包括:
[0016]对所述分析结果信息进行可视化显示。
[0017]本发明还提供了一种对并行程序的性能进行监测分析的装置,包括:
[0018]采集模块,用于对分布式并行程序的运行过程进行监测,采集所述并行程序的性能数据;
[0019]存储模块,用于将采集到的所述性能数据进行分布式存储;
[0020]处理模块,用于对所述性能数据进行分布式并行处理,得到反映所述并行程序的性能的分析结果信息。
[0021 ]可选地,所述采集模块具体用于:
[0022]采集所述并行程序的各维度信息作为所述性能参数,所述维度信息包括:函数的执行时间、程序的硬件技术接口以及系统的程序信息。
[0023]可选地,所述存储模块具体用于:
[0024]每个计算节点分别将采集到的所述性能数据异步存储至HDFS分布式文件系统中。
[0025]可选地,所述处理模块具体用于:
[0026]计算节点利用MapReduce模型对所述性能数据进行分布式并行处理。
[0027]可选地,还包括:
[0028]显示模块,用于对所述分析结果信息进行可视化显示。
[0029]本发明所提供的对并行程序的性能进行监测分析的方法及装置,通过对分布式并行程序的运行过程进行监测,采集并行程序的性能数据;将采集到的性能数据进行分布式存储;对性能数据进行分布式并行处理,得到反映并行程序的性能的分析结果信息。本发明所提供的对并行程序的性能进行监测分析的方法及装置,通过分布式存储、分布式处理的方式,避免了程序性能原始数据的汇聚对单节点机的存储系统造成的巨大压力,改善了以往对单个单文件的处理分析方法,大大减少了网络通信量,提高了处理效率。
【附图说明】
[0030]为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0031]图1为本发明所提供的对并行程序的性能进行监测分析的方法的一种【具体实施方式】的流程图;
[0032]图2为本发明所提供的对并行程序的性能进行监测分析的方法的另一种【具体实施方式】的流程图;
[0033]图3为本发明实施例提供的对并行程序的性能进行监测分析的装置的结构框图。
【具体实施方式】
[0034]为了使本技术领域的人员更好地理解本发明方案,下面结合附图和【具体实施方式】对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0035]本发明所提供的对并行程序的性能进行监测分析的方法的一种【具体实施方式】的流程图如图1所示,该方法包括:
[0036]步骤SlOl:对分布式并行程序的运行过程进行监测,采集所述并行程序的性能数据;
[0037]步骤S102:将采集到的所述性能数据进行分布式存储;
[0038]步骤S103:对所述性能数据进行分布式并行处理,得到反映所述并行程序的性能的分析结果信息。
[0039]本发明所提供的对并行程序的性能进行监测分析的方法,通过对分布式并行程序的运行过程进行监测,采集并行程序的性能数据;将采集到的性能数据进行分布式存储;对性能数据进行分布式并行处理,得到反映并行程序的性能的分析结果信息。本发明所提供的对并行程序的性能进行监测分析的方法,通过分布式存储、分布式处理的方式,避免了程序性能原始数据的汇聚对单节点机的存储系统造成的巨大压力,改善了以往对单个单文件的处理分析方法,大大减少了网络通信量,提高了处理效率。
[0040]并行编程模型多种多样,其中,MP1、OpenMP、CUDA、Hadoop是并行编程模型中的代表,本发明可用于1?1、(^611103、0]04、他(10(^以及几种混合模式中,这均不影响本发明的实现。具体地,本发明将并行程序性能数据多节点机分布的特点与Hadoop分布式文件系统的特点相结合,改善了性能数据汇聚环境,并利用MapReduce进行并行数据分析,剖析并行程序的行为,找出并行程序的瓶颈,最终为程序的优化提出可行的解决方案。
[0041]在上述实施例的基础上,本发明所提供的对并行程序的性能进行监测分析的方法中采集所述并行程序的性能数据的步骤可以具体为:
[0042]采集所述并行程序的各维度信息作为所述性能参数,所述维度信息包括:函数的执行时间、程序的硬件技术接口以及系统的程序信息。
[0043]需要指出的是,本发明实施例中分析维度不仅限于函数的执行时间,还结合程序的硬件计数器接口(如PAPI)和系统的proc信息,可以获得如浮点指令数,L1、L2缓存命中率、分支指令数、1数据量等重要信息,利用现有的踪迹向剖析数据转换工具可以进行多维度的统计。
[0044]利用这些数据,可以进行应用级和系统级的优化。
[0045]其中,对于应用级的优化为从应用层面寻找程序的瓶颈点,为用户编程提供优化方案。
[0046]首先,将各应用领域的benchmark(如NPB、SH0C、SPEC等)作为训练数据,统计其各维度信息,构建支持向量机。
[0047]由于各benchmark已经比较成熟,其应用背景和程序结构特点也都是已知的,可对这些benchmark进行分类。如著名的“七个小矮人”的分类方法。美国超算领域知名的数学算法专家Phi 11 ip Colel Ia在2004年提出了科学计算的七种算法模型,也被称作“七个小矮人”,包括:结构化网格、非结构化网格、快速傅里叶变换、稠密矩阵线性代数、稀疏矩阵线性代数、粒子动力学、蒙特卡洛。这些都是高性能计算领域的经典问题和算法,也是计算时的重点和难点。针对这七类问题,给出相应的优化方案。然后,用户程序运行应用程序获得相应的类别和相应的优化方案来辅助程序设计人员改进算法。
[0048]对于系统级的优化为从系统层面寻找并行计算系统的瓶颈点,辅助调试,为系统本身的优化提供方案。
[0049]通过Tracing向profiling数据的转换,可以获知函数调用中的异常信号,如最大执行时间,最高的cache缺失率等,这些异常点往往就是程序