一种大规模并行程序性能问题定位实现方法

文档序号:6352645阅读:171来源:国知局
专利名称:一种大规模并行程序性能问题定位实现方法
技术领域
本发明涉及并行程序性能分析技术领域。
背景技术
目前,超级计算机都是大规模的并行系统,并且随着计算机体系结构和硬件的发 展,超级计算机的峰值性能越来越高,但并行程序的性能却没有得到相应的提高。由于并行 程序规模大,复杂度高,程序员很难发现程序执行中的性能问题,导致了并行系统的利用率不高。因此,通过自动化的性能分析工具对并行程序进行性能分析,可以为用户发现性 能问题,定位性能瓶颈并提出性能改进措施提供合理建议。同时,通过提供性能数据的多维 视图,用户可以对感兴趣的数据进行手动分析。性能分析一般分为静态性能分析和动态性能分析。静态性能分析是在源程序一级进行的,它采用模拟或分析方法获取源程序中的有 关性能数据。由于静态性能分析能够针对不同的程序和运行环境给出性能预测,因此也称 为性能预测。因为静态性能分析的方法是用模拟分析的方法实现的,而不是真正地运行程 序,所以只能对占用时间较多的重要的程序结构(如循环和子程序调用等)进行分析。采 用静态分析法不能确定程序的运行轨迹,只是一种试探性方法,准确性难以保证。动态性能分析采用测量的方法收集程序运行中的各种性能数据,然后进行统计分 析,因此又称为性能测试。动态性能分析分为在线分析与离线分析。前者的性能数据获取 与显示是同时进行的,性能信息即时显示给用户。后者是将性能信息事后报告给用户。其 中,所获取的性能数据可由支持硬件提供,或者完全以软件的方式得到。目前并行程序性能分析工具大多采用动态分析方法,通过对程序运行数据的可视 化显示,采用人工方式查看程序运行的性能特征,难以自动定位程序的性能瓶颈。

发明内容
(一)发明目的本发明的目的是提供一种大规模并行程序性能问题定位实现方法,在建立函数分 组的基础上,利用函数分组与性能问题之间的映射,准确定位性能问题,使结果具有可解释 性。
发明内容
一种大规模并行程序性能问题定位实现方法,包括步骤Sl 对并行程序中的函数进行分组;S2 建立并行程序性能问题的因果关系图;S3 对大规模并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算;S4 根据步骤S3的聚类计算结果,选择开销大的函数分组,输入分类器,通过函数 分组到性能问题的映射,进行性能问题的定位。
其中,所述步骤Sl包括SlOl 根据并行程序中不同函数的特征,定义函数分组类型,包括通信分组、计算 分组和输入输出分组,通信分组包括点对点通信分组和全局通信分组,输入输出分组包括 并行输入输出分组和串行输入输出分组,用户自定义函数加入到计算分组中,可以对已有 分组做进一步细分,并自定义新的分组;S102 根据步骤SlOl建立的函数分组类型,结合函数的具体功能为部分函数添加 函数分组标签;S103 以树形结构表示函数分组层次,一个根节点作为所有函数分组的父节点,除 根节点之外每个节点表示一个函数分组,定义函数分组集合G = {gi|0< i < = n},其中& 表示编号为i的函数分组,共有η个函数分组,一个叶节点表示函数分组集合中的一个函数 分组gi,& = {fj|0< j < nf},其中。表示编号为j的函数,该分组中函数的个数为nf,对 于每个函数。,它只能属于一个叶节点。其中,所述步骤S2包括S201 定义性能问题集合,P = {Pi|0 < i < np},其中Pi表示编号为i的性能问 题,np表示性能问题的数量;S202 结合步骤Sl得到的函数分组类型,使用二分图构建函数分组与性能问题之 间的因果关系图,在函数分组集合与性能问题集合之间建立映射关系,即对于每个& e G, 至少有一个Pi e P与其对应,同时对于每个Pi e P,至少有一个& e G与其对应,表示每个 函数分组对应了若干种可能的性能问题,同时每个性能问题由若干种可能的原因引起的;S203 在相同的软硬件运算环境下,以若干已知性能问题的并行程序性能数据作 为训练集,统计性能问题的比例以及对于性能问题Pi, Pi由函数分组^引起的比例,以此为 先验概率,初始化分类器。其中,所述步骤S3包括S301 建立函数性能数据向量,一个向量表示一个函数,向量中的每个分量表示该 函数在各个进(线)程中的时间开销,对于有η个函数和m个进程的并行程序,函数编号的 范围是[l,n],进程编号的范围是[1,!!!], 表示编号为i的函数,& = {Pn,Pi2,…Pij,… PiJ,其中Pu代表编号为i的函数在编号为j的进程中的时间开销;S302 对步骤S301得到的函数向量进行聚类计算,得到不同的簇,同一个簇中的 函数具有内在相似性,不同簇内的函数差别大。—种基于上述方法的大规模并行程序性能问题定位实现系统,包括用于对并行程序中的函数进行分组的模块;用于建立并行程序性能问题的因果关系图的模块;用于对大规模并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算 的模块;用于根据步骤S3的聚类计算结果,选择开销大的函数分组,输入分类器,通过函 数分组到性能问题的映射,进行性能问题的定位的模块。(三)有益效果使用本方法定位并行程序的性能问题具有如下关键特征和优点1.通过对函数类型进行分组,降低了大规模并行程序性能分析的复杂性;
2.建立函数类型分组到性能问题的映射,可以准确获知开销大的函数所引起的性 能问题;3.能够自动定位并行程序的性能问题,并使结果具有可解释性。


图1是本发明的大规模并行程序性能问题定位实现方法流程图;图2是并行程序函数分组图;图3是并行程序性能问题的因果关系具体实施例方式本方法是一种大规模并行程序性能问题定位实现方法,首先对并行程序中的函数 进行分组,然后建立并行程序性能问题的因果关系图,再对程序日志中记录的函数性能数 据集进行聚类计算,根据计算结果,选择开销大的函数分组,输入分类器,通过函数分组到 性能问题的映射实现性能问题的定位。本方法的并行程序性能问题定位实现系统,主要包 括对函数进行分组模块,建立因果关系图模块,函数性能数据聚类计算模块,性能问题定位 模块。下面以一个典型的矩阵乘MPI并行程序为例,对本方法进行具体说明。其中,使用开 源工具TAU完成性能数据的获取,由Linux Bash Shell脚本完成数据格式的处理。结合图1,对本方法的流程说明如下Sl 对并行程序中的函数进行分组。该步骤主要包括SlOl 根据并行程序中不同函数的特征,定义函数分组类型,包括通信分组、计算 分组和输入输出分组,通信分组包括点对点通信分组和全局通信分组,输入输出分组包括 并行输入输出分组和串行输入输出分组,用户自定义函数加入到计算分组中;S102 根据步骤SlOl建立的函数分组类型,结合函数的具体功能为部分函数添加 函数分组标签,例如MPI_Recv和MPIJend属于点对点阻塞通信方式的函数,因此为它们 添加点对点通信分组标签,MPI_Reduce的功能是执行规约操作,因此添加全局通信分组标 签;S103 如图2所示,以树形结构表示函数分组层次,一个根节点作为所有函数分组 的父节点,除根节点之外每个节点表示一个函数分组。定义函数分组集合G= {gi|0< i <=n},其中&表示编号为i的函数分组,共有η个函数分组。一个叶节点表示函数分组 集合中的一个函数分组gi,gi = {f.|0 < j < nf},其中。表示编号为j的函数,该分组中 函数的个数为nf。对于每个函数&它只能属于一个叶节点。S2:建立并行程序性能问题的因果关系图。该步骤主要包括S201 定义性能问题集合,P = {Pi|0 < i < np},其中Pi表示编号为i的性能问 题,np表示性能问题的数量,例如性能问题包括通信次数多,冗余计算多等;S202 结合步骤Sl得到的函数分组类型,使用二分图构建函数分组与性能问题之 间的因果关系图,在函数分组集合与性能问题集合之间建立映射关系,即对于每个& e G, 至少有一个Pi e P与其对应,同时对于每个Pi e P,至少有一个& e G与其对应,如图3所 示,Gl到G5分别表示全局广播,阻塞点对点通信,全局同步,非阻塞点对点通信,计算五个 函数分组,Pl到P4分别表示计算与通信位置不合理,并行任务粒度过细,MPI_ffait调用不合理和调用次数过多四个性能问题,函数分组与性能问题之间的有向线段表示该函数可能 引起该性能问题;S203 在相同的软硬件运算环境下,以若干已知性能问题的并行程序性能数据作 为训练集,统计性能问题的比例以及对于性能问题Pi, Pi由函数分组^引起的比例,以此为 先验概率,初始化分类器,如图3所示,Pl发生的概率是0.3,Pl由Gl分组引起的概率是 0. 08 ;S3 对大规模并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算。 该步骤主要包括S301 建立函数性能数据向量,一个向量表示一个函数,向量中的每个分量表示该 函数在各个进(线)程中的时间开销,对于有η个函数和m个进程的并行程序,函数编号的 范围是[l,n],进程编号的范围是[1,!!!], 表示编号为i的函数,& = {Pn,Pi2,…Pij,… PiJ,其中Pu代表编号为i的函数在编号为j的进程中的时间开销;S302 对步骤S301得到的函数向量进行聚类计算,得到不同的簇,同一个簇中的 函数具有内在相似性,不同簇内的函数差别大。S4 根据步骤S3的聚类计算结果,选择开销大的函数分组,输入分类器,通过函数 分组到性能问题的映射,进行性能问题的定位,本实验中开销大的函数分组是阻塞点对点 通信分组,通过分类器进行性能问题的映射,可知该并行程序大量使用阻塞通信造成了调 用次数多,等待时间长的性能问题。
权利要求
1.一种大规模并行程序性能问题定位实现方法,其特征在于,包括步骤51对并行程序中的函数进行分组;52建立并行程序性能问题的因果关系图;53对大规模并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算;54根据步骤S3的聚类计算结果,选择开销大的函数分组,输入分类器,通过函数分组 到性能问题的映射,进行性能问题的定位。
2.如权利要求1所述的方法,其特征在于,所述步骤Sl包括5101根据并行程序中不同函数的特征,定义函数分组类型,包括通信分组、计算分组 和输入输出分组,通信分组包括点对点通信分组和全局通信分组,输入输出分组包括并行 输入输出分组和串行输入输出分组,用户自定义函数加入到计算分组中,可以对已有分组 做进一步细分,并自定义新的分组;5102根据步骤SlOl建立的函数分组类型,结合函数的具体功能为部分函数添加函数 分组标签;5103以树形结构表示函数分组层次,一个根节点作为所有函数分组的父节点,除根节 点之外每个节点表示一个函数分组,定义函数分组集合G = {gi I 0 < i < = η},其中&表 示编号为i的函数分组,共有η个函数分组,一个叶节点表示函数分组集合中的一个函数分 组gi,& = {fj|0< j < nf},其中。表示编号为j的函数,该分组中函数的个数为nf,对于 每个函数。,它只能属于一个叶节点。
3.如权利要求1所述的方法,其特征在于,所述步骤S2包括5201定义性能问题集合,P= {Pi|0<i< np},其中Pi表示编号为i的性能问题,np 表示性能问题的数量;5202结合步骤Sl得到的函数分组类型,使用二分图构建函数分组与性能问题之间的 因果关系图,在函数分组集合与性能问题集合之间建立映射关系,即对于每个gi e G,至少 有一个Pi e ρ与其对应,同时对于每个Pi e P,至少有一个& e G与其对应,表示每个函数 分组对应了若干种可能的性能问题,同时每个性能问题由若干种可能的原因引起的;5203在相同的软硬件运算环境下,以若干已知性能问题的并行程序性能数据作为训 练集,统计性能问题的比例以及对于性能问题Pi, Pi由函数分组^引起的比例,以此为先验 概率,初始化分类器。
4.如权利要求1所述的方法,其特征在于,所述步骤S3包括5301建立函数性能数据向量,一个向量表示一个函数,向量中的每个分量表示该函数 在各个进(线)程中的时间开销,对于有η个函数和m个进程的并行程序,函数编号的范围 是[l,n],进程编号的范围是[1,111], 表示编号为i的函数,& = {Pn,Pi2,…Pij,-PJ, 其中Pu代表编号为i的函数在编号为j的进程中的时间开销;5302对步骤S301得到的函数向量进行聚类计算,得到不同的簇,同一个簇中的函数 具有内在相似性,不同簇内的函数差别大。
5.一种基于权利要求1所述方法的大规模并行程序性能问题定位实现系统,其特征在 于,包括用于对并行程序中的函数进行分组的模块;用于建立并行程序性能问题的因果关系图的模块;用于对大规模并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算的模块;用于根据步骤S3的聚类计算结果,选择开销大的函数分组,输入分类器,通过函数分 组到性能问题的映射,进行性能问题的定位的模块。
全文摘要
本发明公开了一种大规模并行程序性能问题定位实现方法,该方法属于并行程序性能分析的技术领域,包括步骤对并行程序中的函数进行分组,建立并行程序性能问题的因果关系图,对并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算,根据聚类计算结果,选择开销大的函数分组,输入分类器,通过函数分组到性能问题的映射,进行性能问题的定位。通过本发明能够准确定位并行程序的性能问题,并使结果具有可解释性。
文档编号G06F11/36GK102063373SQ20111000167
公开日2011年5月18日 申请日期2011年1月6日 优先权日2011年1月6日
发明者朱鹏, 李云春, 李巍, 李敏 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1