CN102063373A - 一种大规模并行程序性能问题定位实现方法 - Google Patents
一种大规模并行程序性能问题定位实现方法 Download PDFInfo
- Publication number
- CN102063373A CN102063373A CN2011100016754A CN201110001675A CN102063373A CN 102063373 A CN102063373 A CN 102063373A CN 2011100016754 A CN2011100016754 A CN 2011100016754A CN 201110001675 A CN201110001675 A CN 201110001675A CN 102063373 A CN102063373 A CN 102063373A
- Authority
- CN
- China
- Prior art keywords
- function
- grouping
- performance
- performance issue
- parallel program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种大规模并行程序性能问题定位实现方法,该方法属于并行程序性能分析的技术领域,包括步骤:对并行程序中的函数进行分组,建立并行程序性能问题的因果关系图,对并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算,根据聚类计算结果,选择开销大的函数分组,输入分类器,通过函数分组到性能问题的映射,进行性能问题的定位。通过本发明能够准确定位并行程序的性能问题,并使结果具有可解释性。
Description
技术领域
本发明涉及并行程序性能分析技术领域。
背景技术
目前,超级计算机都是大规模的并行系统,并且随着计算机体系结构和硬件的发展,超级计算机的峰值性能越来越高,但并行程序的性能却没有得到相应的提高。由于并行程序规模大,复杂度高,程序员很难发现程序执行中的性能问题,导致了并行系统的利用率不高。
因此,通过自动化的性能分析工具对并行程序进行性能分析,可以为用户发现性能问题,定位性能瓶颈并提出性能改进措施提供合理建议。同时,通过提供性能数据的多维视图,用户可以对感兴趣的数据进行手动分析。
性能分析一般分为静态性能分析和动态性能分析。
静态性能分析是在源程序一级进行的,它采用模拟或分析方法获取源程序中的有关性能数据。由于静态性能分析能够针对不同的程序和运行环境给出性能预测,因此也称为性能预测。因为静态性能分析的方法是用模拟分析的方法实现的,而不是真正地运行程序,所以只能对占用时间较多的重要的程序结构(如循环和子程序调用等)进行分析。采用静态分析法不能确定程序的运行轨迹,只是一种试探性方法,准确性难以保证。
动态性能分析采用测量的方法收集程序运行中的各种性能数据,然后进行统计分析,因此又称为性能测试。动态性能分析分为在线分析与离线分析。前者的性能数据获取与显示是同时进行的,性能信息即时显示给用户。后者是将性能信息事后报告给用户。其中,所获取的性能数据可由支持硬件提供,或者完全以软件的方式得到。
目前并行程序性能分析工具大多采用动态分析方法,通过对程序运行数据的可视化显示,采用人工方式查看程序运行的性能特征,难以自动定位程序的性能瓶颈。
发明内容
(一)发明目的
本发明的目的是提供一种大规模并行程序性能问题定位实现方法,在建立函数分组的基础上,利用函数分组与性能问题之间的映射,准确定位性能问题,使结果具有可解释性。
(二)发明内容
一种大规模并行程序性能问题定位实现方法,包括步骤:
S1:对并行程序中的函数进行分组;
S2:建立并行程序性能问题的因果关系图;
S3:对大规模并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算;
S4:根据步骤S3的聚类计算结果,选择开销大的函数分组,输入分类器,通过函数分组到性能问题的映射,进行性能问题的定位。
其中,所述步骤S1包括:
S101:根据并行程序中不同函数的特征,定义函数分组类型,包括通信分组、计算分组和输入输出分组,通信分组包括点对点通信分组和全局通信分组,输入输出分组包括并行输入输出分组和串行输入输出分组,用户自定义函数加入到计算分组中,可以对已有分组做进一步细分,并自定义新的分组;
S102:根据步骤S101建立的函数分组类型,结合函数的具体功能为部分函数添加函数分组标签;
S103:以树形结构表示函数分组层次,一个根节点作为所有函数分组的父节点,除根节点之外每个节点表示一个函数分组,定义函数分组集合G={gi|0<i<=n},其中gi表示编号为i的函数分组,共有n个函数分组,一个叶节点表示函数分组集合中的一个函数分组gi,gi={fj|0<j<nf},其中fj表示编号为j的函数,该分组中函数的个数为nf,对于每个函数fj,它只能属于一个叶节点。
其中,所述步骤S2包括:
S201:定义性能问题集合,P={pi|0<i<np},其中pi表示编号为i的性能问题,np表示性能问题的数量;
S202:结合步骤S1得到的函数分组类型,使用二分图构建函数分组与性能问题之间的因果关系图,在函数分组集合与性能问题集合之间建立映射关系,即对于每个gi∈G,至少有一个pi∈P与其对应,同时对于每个pi∈P,至少有一个gi∈G与其对应,表示每个函数分组对应了若干种可能的性能问题,同时每个性能问题由若干种可能的原因引起的;
S203:在相同的软硬件运算环境下,以若干已知性能问题的并行程序性能数据作为训练集,统计性能问题的比例以及对于性能问题pi,pi由函数分组gi引起的比例,以此为先验概率,初始化分类器。
其中,所述步骤S3包括:
S301:建立函数性能数据向量,一个向量表示一个函数,向量中的每个分量表示该函数在各个进(线)程中的时间开销,对于有n个函数和m个进程的并行程序,函数编号的范围是[1,n],进程编号的范围是[1,m],Xi表示编号为i的函数,Xi={Pi1,Pi2,…Pij,…Pim},其中Pij代表编号为i的函数在编号为j的进程中的时间开销;
S302:对步骤S301得到的函数向量进行聚类计算,得到不同的簇,同一个簇中的函数具有内在相似性,不同簇内的函数差别大。
一种基于上述方法的大规模并行程序性能问题定位实现系统,包括:
用于对并行程序中的函数进行分组的模块;
用于建立并行程序性能问题的因果关系图的模块;
用于对大规模并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算的模块;
用于根据步骤S3的聚类计算结果,选择开销大的函数分组,输入分类器,通过函数分组到性能问题的映射,进行性能问题的定位的模块。
(三)有益效果
使用本方法定位并行程序的性能问题具有如下关键特征和优点:
1.通过对函数类型进行分组,降低了大规模并行程序性能分析的复杂性;
2.建立函数类型分组到性能问题的映射,可以准确获知开销大的函数所引起的性能问题;
3.能够自动定位并行程序的性能问题,并使结果具有可解释性。
附图说明
图1是本发明的大规模并行程序性能问题定位实现方法流程图;
图2是并行程序函数分组图;
图3是并行程序性能问题的因果关系图;
具体实施方式
本方法是一种大规模并行程序性能问题定位实现方法,首先对并行程序中的函数进行分组,然后建立并行程序性能问题的因果关系图,再对程序日志中记录的函数性能数据集进行聚类计算,根据计算结果,选择开销大的函数分组,输入分类器,通过函数分组到性能问题的映射实现性能问题的定位。本方法的并行程序性能问题定位实现系统,主要包括对函数进行分组模块,建立因果关系图模块,函数性能数据聚类计算模块,性能问题定位模块。下面以一个典型的矩阵乘MPI并行程序为例,对本方法进行具体说明。其中,使用开源工具TAU完成性能数据的获取,由Linux Bash Shell脚本完成数据格式的处理。
结合图1,对本方法的流程说明如下:
S1:对并行程序中的函数进行分组。该步骤主要包括:
S101:根据并行程序中不同函数的特征,定义函数分组类型,包括通信分组、计算分组和输入输出分组,通信分组包括点对点通信分组和全局通信分组,输入输出分组包括并行输入输出分组和串行输入输出分组,用户自定义函数加入到计算分组中;
S102:根据步骤S101建立的函数分组类型,结合函数的具体功能为部分函数添加函数分组标签,例如MPI_Recv和MPI_Send属于点对点阻塞通信方式的函数,因此为它们添加点对点通信分组标签,MPI_Reduce的功能是执行规约操作,因此添加全局通信分组标签;
S103:如图2所示,以树形结构表示函数分组层次,一个根节点作为所有函数分组的父节点,除根节点之外每个节点表示一个函数分组。定义函数分组集合G={gi|0<i<=n},其中gi表示编号为i的函数分组,共有n个函数分组。一个叶节点表示函数分组集合中的一个函数分组gi,gi={fj|0<j<nf},其中fj表示编号为j的函数,该分组中函数的个数为nf。对于每个函数fj,它只能属于一个叶节点。
S2:建立并行程序性能问题的因果关系图。该步骤主要包括:
S201:定义性能问题集合,P={pi|0<i<np},其中pi表示编号为i的性能问题,np表示性能问题的数量,例如性能问题包括通信次数多,冗余计算多等;
S202:结合步骤S1得到的函数分组类型,使用二分图构建函数分组与性能问题之间的因果关系图,在函数分组集合与性能问题集合之间建立映射关系,即对于每个gi∈G,至少有一个pi∈P与其对应,同时对于每个pi∈P,至少有一个gi∈G与其对应,如图3所示,G1到G5分别表示全局广播,阻塞点对点通信,全局同步,非阻塞点对点通信,计算五个函数分组,P1到P4分别表示计算与通信位置不合理,并行任务粒度过细,MPI_Wait调用不合理和调用次数过多四个性能问题,函数分组与性能问题之间的有向线段表示该函数可能引起该性能问题;
S203:在相同的软硬件运算环境下,以若干已知性能问题的并行程序性能数据作为训练集,统计性能问题的比例以及对于性能问题pi,pi由函数分组gi引起的比例,以此为先验概率,初始化分类器,如图3所示,P1发生的概率是0.3,P1由G1分组引起的概率是0.08;
S3:对大规模并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算。该步骤主要包括:
S301:建立函数性能数据向量,一个向量表示一个函数,向量中的每个分量表示该函数在各个进(线)程中的时间开销,对于有n个函数和m个进程的并行程序,函数编号的范围是[1,n],进程编号的范围是[1,m],Xi表示编号为i的函数,Xi={Pi1,Pi2,…Pij,…Pim},其中Pij代表编号为i的函数在编号为j的进程中的时间开销;
S302:对步骤S301得到的函数向量进行聚类计算,得到不同的簇,同一个簇中的函数具有内在相似性,不同簇内的函数差别大。
S4:根据步骤S3的聚类计算结果,选择开销大的函数分组,输入分类器,通过函数分组到性能问题的映射,进行性能问题的定位,本实验中开销大的函数分组是阻塞点对点通信分组,通过分类器进行性能问题的映射,可知该并行程序大量使用阻塞通信造成了调用次数多,等待时间长的性能问题。
Claims (5)
1.一种大规模并行程序性能问题定位实现方法,其特征在于,包括步骤:
S1:对并行程序中的函数进行分组;
S2:建立并行程序性能问题的因果关系图;
S3:对大规模并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算;
S4:根据步骤S3的聚类计算结果,选择开销大的函数分组,输入分类器,通过函数分组到性能问题的映射,进行性能问题的定位。
2.如权利要求1所述的方法,其特征在于,所述步骤S1包括:
S101:根据并行程序中不同函数的特征,定义函数分组类型,包括通信分组、计算分组和输入输出分组,通信分组包括点对点通信分组和全局通信分组,输入输出分组包括并行输入输出分组和串行输入输出分组,用户自定义函数加入到计算分组中,可以对已有分组做进一步细分,并自定义新的分组;
S102:根据步骤S101建立的函数分组类型,结合函数的具体功能为部分函数添加函数分组标签;
S103:以树形结构表示函数分组层次,一个根节点作为所有函数分组的父节点,除根节点之外每个节点表示一个函数分组,定义函数分组集合G={gi|0<i<=n},其中gi表示编号为i的函数分组,共有n个函数分组,一个叶节点表示函数分组集合中的一个函数分组gi,gi={fj|0<j<nf},其中fj表示编号为j的函数,该分组中函数的个数为nf,对于每个函数fj,它只能属于一个叶节点。
3.如权利要求1所述的方法,其特征在于,所述步骤S2包括:
S201:定义性能问题集合,P={pi|0<i<np},其中pi表示编号为i的性能问题,np表示性能问题的数量;
S202:结合步骤S1得到的函数分组类型,使用二分图构建函数分组与性能问题之间的因果关系图,在函数分组集合与性能问题集合之间建立映射关系,即对于每个gi∈G,至少有一个pi∈P与其对应,同时对于每个pi∈P,至少有一个gi∈G与其对应,表示每个函数分组对应了若干种可能的性能问题,同时每个性能问题由若干种可能的原因引起的;
S203:在相同的软硬件运算环境下,以若干已知性能问题的并行程序性能数据作为训练集,统计性能问题的比例以及对于性能问题pi,pi由函数分组gi引起的比例,以此为先验概率,初始化分类器。
4.如权利要求1所述的方法,其特征在于,所述步骤S3包括:
S301:建立函数性能数据向量,一个向量表示一个函数,向量中的每个分量表示该函数在各个进(线)程中的时间开销,对于有n个函数和m个进程的并行程序,函数编号的范围是[1,n],进程编号的范围是[1,m],Xi表示编号为i的函数,Xi={Pi1,Pi2,…Pij,…Pim},其中Pij代表编号为i的函数在编号为j的进程中的时间开销;
S302:对步骤S301得到的函数向量进行聚类计算,得到不同的簇,同一个簇中的函数具有内在相似性,不同簇内的函数差别大。
5.一种基于权利要求1所述方法的大规模并行程序性能问题定位实现系统,其特征在于,包括:
用于对并行程序中的函数进行分组的模块;
用于建立并行程序性能问题的因果关系图的模块;
用于对大规模并行程序轮廓日志和轨迹日志中的函数性能数据集进行聚类计算的模块;
用于根据步骤S3的聚类计算结果,选择开销大的函数分组,输入分类器,通过函数分组到性能问题的映射,进行性能问题的定位的模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100016754A CN102063373A (zh) | 2011-01-06 | 2011-01-06 | 一种大规模并行程序性能问题定位实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100016754A CN102063373A (zh) | 2011-01-06 | 2011-01-06 | 一种大规模并行程序性能问题定位实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102063373A true CN102063373A (zh) | 2011-05-18 |
Family
ID=43998658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100016754A Pending CN102063373A (zh) | 2011-01-06 | 2011-01-06 | 一种大规模并行程序性能问题定位实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102063373A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019852A (zh) * | 2012-11-14 | 2013-04-03 | 北京航空航天大学 | 一种适用于大规模集群的mpi并行程序负载问题三维可视化分析方法 |
CN103164327A (zh) * | 2011-12-12 | 2013-06-19 | 深圳市快播科技有限公司 | 程序运行效率分析方法及装置 |
CN108776900A (zh) * | 2018-07-02 | 2018-11-09 | 北京市天元网络技术股份有限公司 | 网络投诉智能定界方法及系统 |
CN110377525A (zh) * | 2019-07-25 | 2019-10-25 | 哈尔滨工业大学 | 一种基于运行时特征和机器学习的并行程序性能预测系统 |
CN110414591A (zh) * | 2019-07-24 | 2019-11-05 | 腾讯科技(武汉)有限公司 | 一种数据处理方法以及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253224B1 (en) * | 1998-03-24 | 2001-06-26 | International Business Machines Corporation | Method and system for providing a hardware machine function in a protected virtual machine |
CN101826105A (zh) * | 2010-04-02 | 2010-09-08 | 南京邮电大学 | 基于匈牙利匹配算法的钓鱼网页检测方法 |
-
2011
- 2011-01-06 CN CN2011100016754A patent/CN102063373A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253224B1 (en) * | 1998-03-24 | 2001-06-26 | International Business Machines Corporation | Method and system for providing a hardware machine function in a protected virtual machine |
CN101826105A (zh) * | 2010-04-02 | 2010-09-08 | 南京邮电大学 | 基于匈牙利匹配算法的钓鱼网页检测方法 |
Non-Patent Citations (1)
Title |
---|
朱鹏等: "一种基于迭代聚类的并行应用性能分析方法", 《软件学报》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164327A (zh) * | 2011-12-12 | 2013-06-19 | 深圳市快播科技有限公司 | 程序运行效率分析方法及装置 |
CN103019852A (zh) * | 2012-11-14 | 2013-04-03 | 北京航空航天大学 | 一种适用于大规模集群的mpi并行程序负载问题三维可视化分析方法 |
CN103019852B (zh) * | 2012-11-14 | 2015-11-11 | 北京航空航天大学 | 一种适用于大规模集群的mpi并行程序负载问题三维可视化分析方法 |
CN108776900A (zh) * | 2018-07-02 | 2018-11-09 | 北京市天元网络技术股份有限公司 | 网络投诉智能定界方法及系统 |
CN110414591A (zh) * | 2019-07-24 | 2019-11-05 | 腾讯科技(武汉)有限公司 | 一种数据处理方法以及设备 |
CN110414591B (zh) * | 2019-07-24 | 2022-07-12 | 腾讯科技(武汉)有限公司 | 一种数据处理方法以及设备 |
CN110377525A (zh) * | 2019-07-25 | 2019-10-25 | 哈尔滨工业大学 | 一种基于运行时特征和机器学习的并行程序性能预测系统 |
CN110377525B (zh) * | 2019-07-25 | 2022-11-15 | 哈尔滨工业大学 | 一种基于运行时特征和机器学习的并行程序性能预测系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8166462B2 (en) | Method and apparatus for sorting and displaying costs in a data space profiler | |
US8813055B2 (en) | Method and apparatus for associating user-specified data with events in a data space profiler | |
US8627335B2 (en) | Method and apparatus for data space profiling of applications across a network | |
US8762951B1 (en) | Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor | |
US8640114B2 (en) | Method and apparatus for specification and application of a user-specified filter in a data space profiler | |
US8032875B2 (en) | Method and apparatus for computing user-specified cost metrics in a data space profiler | |
US8176475B2 (en) | Method and apparatus for identifying instructions associated with execution events in a data space profiler | |
US8229726B1 (en) | System for application level analysis of hardware simulations | |
US20080177756A1 (en) | Method and Apparatus for Synthesizing Hardware Counters from Performance Sampling | |
CN104866580A (zh) | 一种数据库变更对现有业务影响的快速侦测方法 | |
CN102063373A (zh) | 一种大规模并行程序性能问题定位实现方法 | |
US8798962B2 (en) | Virtualized abstraction with built-in data alignment and simultaneous event monitoring in performance counter based application characterization and tuning | |
Han et al. | Benchmarking big data systems: State-of-the-art and future directions | |
CN103257923B (zh) | 数据中心数据分析类基准测试程序的应用选取方法及系统 | |
CN110134517A (zh) | 一种基于公式解析的并行计算方法及装置 | |
Wiedemann et al. | Towards I/O analysis of HPC systems and a generic architecture to collect access patterns | |
Ferreira da Silva et al. | Accurately simulating energy consumption of I/O-intensive scientific workflows | |
Calotoiu et al. | Lightweight requirements engineering for exascale co-design | |
CN110209631A (zh) | 大数据处理方法及其处理系统 | |
CN103455364A (zh) | 一种多核环境并行程序Cache性能在线获取系统及方法 | |
Mohr et al. | Performance measurement and analysis tools for extremely scalable systems | |
Helm et al. | Perfmemplus: A tool for automatic discovery of memory performance problems | |
Kaur et al. | Performance analysis in bigdata | |
CN102662829A (zh) | 一种复杂数据结构在代码静态测试中的处理方法和装置 | |
CN105573885A (zh) | 一种监测并统计底层硬件行为的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110518 |
|
WD01 | Invention patent application deemed withdrawn after publication |