用于分析在若干进程之间进行通信函数调用的应用程序的性能的计算机化方法和系统与流程

文档序号:18667696发布日期:2019-09-13 20:24阅读:147来源:国知局
用于分析在若干进程之间进行通信函数调用的应用程序的性能的计算机化方法和系统与流程

本发明涉及一种用于对在若干进程之间进行通信函数调用的应用程序的性能进行分析的计算机化方法和系统。其在并行和分布式计算环境中例如,在按照“消息传递接口”或mpi标准在进程间实现通信的情况下,特别地在性能的分析方面以及计算机化应用程序中的进程间通信的规划方面找到应用。



背景技术:

对并行和分布式计算环境中的应用程序的性能进行分析是个复杂的任务。人们对通过mpi标准进行的进程间通信特别感兴趣。以函数库的形式实现的mpi标准允许通过插入在应用程序与mpi库之间的特定库来与该应用程序对接。

这使得可以收集诸如下述信息:

-每进程的时间以及总体通信时间,

-发送和接收的消息的数量以及消息的大小,

-各mpi函数调用,

-每mpi函数调用的持续时间,

-该调用发生的时间。

这些各项信息对于获得每个进程的全局和局部统计以及对于跟踪函数调用的时间序列(通常称为时间线)都是有用的。然而,要生成、解译和使用该时间序列是复杂的。



技术实现要素:

因此,本发明的目标之一是解决特别是上述问题。因此,本发明的目的是特别地提出一种便于对在并行和分布式计算环境中使用进程间通信的应用程序的性能进行分析的方法和系统。

因此,根据第一方面,本发明的主题是对应用程序的性能进行分析的计算机化方法,所述应用程序在若干进程之间进行通信函数调用,一个调用或至少两个调用的系列形成模式。

该方法包括收集与函数调用相关的信息的步骤,以及将所收集的信息压缩的步骤。

压缩步骤包括基于所收集的信息对模式和系列模式进行检测以形成其中每个模式和每个系列模式均通过唯一的标识符标识的语法的步骤。

压缩步骤还包括在语法中检测模式和系列模式的重复的步骤。

该压缩步骤还包括生成其中存储有模式和系列模式以及它们各自的重复次数的压缩跟踪文件的步骤。

根据某些实现的模式,该方法还包括以下特征中的一个或多个,孤立地或根据所有技术上可能的组合来看待这些特征:

-方法包括基于压缩跟踪文件生成图形,该图形的节点表示模式,该模式按照形成所述模式的函数调用的时序排序。

-图形包括第一类边,所述第一类边中的每个边按照形成两个连续模式中的每个的函数调用的时序顺序连接与这两个连续模式对应的两个节点;

-图形包括第二类边,所述第二类边中的每个边连接分别与在跟踪文件中重复的系列模式的起点和终点对应的两个节点,或者在跟踪文件中重复的节点上形成环,所述第二类边中的每个边均被分配有与对应系列模式或对应模式的重复次数对应的权重;

-对模式和系列模式进行检测的步骤包括:根据所收集的信息为通信函数的每个调用确定所调用的函数、接收进程、发送进程以及该调用的时间;

-该确定在应用程序被执行期间进行;

-语法存储在存储器中,并且一旦应用程序的执行被终止就通过遍历语法来进行对模式和系列模式的重复进行检测的步骤;

-收集信息的步骤包括生成跟踪文件,对于通信函数的每个调用,该跟踪文件中存储有调用的时间、所调用的函数、接收进程、发送进程,并按照该调用的时间、所调用的函数、接收进程、发送进程的顺序存储,并且一旦应用程序的执行被终止,就在跟踪文件中进行对所调用的函数、接收进程、发送进程和调用的时间的确定;

-每个模式通过该模式中调用的第一函数的名称标识,并且每个系列模式通过该系列模式中的第一模式中调用的第一函数的名称标识;

-函数调用例如按照“消息传递接口”或mpi类型或“开放式多重处理”或openmp类型的协议进行。

根据第二方面,本发明还涉及一种用于对在若干进程之间进行通信函数调用的应用程序的性能进行分析的计算机化系统,该系统包括处理器和存储器,该存储器包括程序指令,当该程序指令被处理器执行时,该程序指令使系统实现如上所述的方法。

因此,通过检测进程间通信函数调用循环即重复的一系列分层调用,本发明的方法和系统使得可以容易地生成时间线并简化该时间线。

为此,在应用程序被执行时对函数调用进行分析,例如进行即时分析,或者通过使用记录调用的跟踪文件进行分析。

这些调用形成复杂模式,在不丢失信息的情况下对该复杂模式进行检测和记录。在每个进程上也在进程之间进行这种模式检测,从而使得可以在单个图形中更加直观清晰地以图形方式表示所有通信方案。

附图说明

在参考以下附图阅读后面的仅以示例的方式给出的非限制性描述后,本发明的特征和优点将变得明显:

-图1:按照mpi标准进行的进程间通信函数调用的示例应用程序的算法表示;

-图2:在执行图1的应用程序期间生成的示例原始跟踪文件的表示;

-图3:根据本发明的方法生成的与图1的应用程序的执行对应的示例压缩跟踪文件的表示;

-图4:基于图1的应用程序根据本发明的方法生成的图形的示意表示。

具体实施方式

在随后的描述中,在使用mpi标准的背景下呈现了本发明的方法的示例实现。

在并行和分布式程序或应用程序中,通常在每个时间步长在进程与其相邻进程(距离等于1)之间进行通信。

图1示出了以算法形式表示的示例应用程序。在该实施方式中,与mpi函数调用对应的数个操作重复n次。更精确地,这涉及向距离等于1的进程发送并从其接收的操作(发送进程、相应地接收进程的顺序号(rank,排名)分别加1或减1)。

在该实施方式中,进行并重复六次通信函数调用1至6,即:

-对接收函数mpi_irecv的调用1,以用于通过当前顺序号的进程从当前顺序号加一(距离等于一)的进程接收信息项,

-对接收函数mpi_irecv的调用2,以用于通过当前顺序号的进程从当前顺序号减一(距离等于一)的进程接收信息项,

-对发送函数mpi_isend的调用3,以用于通过当前顺序号的进程向当前顺序号加一(距离等于一)的进程发送信息项,

-对发送函数mpi_isend的调用4,以用于通过当前顺序号的进程向当前顺序号减一(距离等于一)的进程发送信息项,

-对函数mpi_waitall的两次调用5和6,以用于延时,直到进行中的通信均已终止。

在该实施方式中,用于通信函数调用的句法是c语言mpi函数库的句法。

因此,根据本发明的方法,对图1中以算法方式表示的应用程序的性能进行分析首先包括对模式进行检测,即,检测来自调用1至6中的调用,或者检测来自调用1至6中的至少两个调用的系列,并检测其可能的重复。

因此,该方法包括检测模式和系列模式的重复的步骤,在实施方式中,这些模式在图3和图4中以附图标记7至11表示,后面将更详细地对其进行描述。

被检测的每个模式7至11均通过唯一的标识符标识,该唯一的标识符可以例如包含在模式7至11中调用的第一函数的名称,并且每个被检测的系列模式均通过唯一的标识符标识,该唯一的标识符可以例如包含系列模式中的第一模式中调用的第一函数的名称。

对模式7至11进行检测的该步骤使得可以形成语法,基于此,通过遍历该语法,又检测模式的重复。

基于对调用1至6的分析,生成压缩跟踪文件,诸如图3所示,其中存储有模式7至11和系列模式7至11,及其各自的重复次数,重复次数用附图标记12至15表示。

更准确地说,对于对模式7至11的重复和系列模式7至11的重复的检测,为通信函数的每个调用1至6确定所调用的函数、接收进程、发送进程以及该调用的时间。

可以在应用程序的执行期间直接对这些调用1至6进行分析,例如,进行即时分析,即,通过调用一完成就对调用进行处理来进行分析。

或者,可以使用记录这些调用1至6的跟踪文件,诸如图2所示。具体地,对于每个调用1至6,存储有调用的时间、所调用的函数、接收进程、发送进程,特别地按照调用的时间、所调用的函数、接收进程、发送进程的顺序存储。这样,随后就可以对该跟踪文件中的每个调用1至6进行分析。

对于模式7至11及其重复的检测,可以使用用于数据压缩但不会丢失信息也不会丢失序列性的算法类型,诸如改进的sequitur型算法。

sequitur是一种通过从一系列离散的符号中推出分层结构、通过替换由生成短语的语法规则检测到的重复短语并通过递归地继续从而允许对文本进行分层压缩的算法(参见:nevill-manning,c.g.andwitten,i.h.(1997)"identifyinghierarchicalstructureinsequences:alinear-timealgorithm,"journalofartificialintelligenceresearch,7,67-82)。

执行这种算法的结果可以以原始序列的分层表示的形式给出,其提供了关于其词汇结构的信息。

然而,虽然sequitur是基于简单的符号,诸如字母或数字,但是本发明的方法更为复杂,因为分层结构的对应于模式7至11的终端元素由单词、整数和实数构成。

然而,针对本发明的方法的需要,仅限于一部分信息,即:函数(其名称)、调用方的顺序号、接收者、发送者、时间(例如由跟踪文件中的行号限定)。

因此,重新集中于指令(或调用)的序列,同时通过跟踪文件的特有结构保存发送者、接收者、调用方的概念以及时间性的概念,因为调用按时间顺序排列。

因此,对跟踪文件中或在执行应用程序期间得到的与函数调用对应的字符串进行分析,以形成图3所示的压缩跟踪文件,包括与模式7至11对应的终端符号7至11,以及表示一个或多个终端符号或模式7至11的重复12至15的环12至15。

压缩跟踪文件还包括对各模式7至11之间的时间顺序链接17至20的定义。

该压缩跟踪使得可以生成使将模式7至11和各个重复12至15串连起来形象化的图形。

因此,基于与图1所示应用程序的执行对应的压缩跟踪,生成图4的图形16。

图形16包含表示模式7至11的节点7至11,这些模式按照形成这些模式7至11的函数调用1至6的时间顺序排序。

此外,图形16包括将节点7至11中的某些节点连接在一起的两类边12至20。

在第一类边中,每个边17至20按照形成两个连续模式7至11中的每个的函数调用1至6的时间顺序连接与这两个连续模式7至11对应的两个节点7至11。

因此:

-边17沿着节点8的方向连接节点7和8,

-边18沿着节点9的方向连接节点8和9,

-边19沿着节点10的方向连接节点9和10,

-边20沿着节点11的方向连接节点10和11。

在第二类边中,每个边12至15要么连接分别与在应用程序的执行期间和/或在跟踪文件中重复的系列模式7至11的起点和终点对应的两个节点7至11,要么在应用程序的执行期间和/或在跟踪文件中重复的节点11上形成环14。

该第二类边中的每个边12至15均被分配有与对应系列模式7至11或对应模式11的重复次数21至24对应的权重21至24。

在图2所示的图形16的实施方式中,图1中所示的应用程序参数n等于9。

因此:

-边12沿着节点7的方向连接节点7和8,并被分配有等于9的权重21,以显示模式7和8中函数的连续调用重复9次,

-边13沿着节点9的方向连接节点9和10,并被分配有等于9的权重22,以显示模式9和10中函数的连续调用重复9次,

-边14连接节点11自身,并被分配有等于9的权重23,以显示模式11中函数的连续调用重复9次,

-边15沿着节点7的方向连接节点7和11,并被分配有等于9的权重24,以显示模式7至11中函数的连续调用重复9次。

为了由跟踪文件生成压缩跟踪文件,并随后能生成图形16,在深度上遍历与所得到的语法对应的分层结构,并将各种非终端符号进行比较,以将相等的非终端符号分为一组,同时计算其在语法的各个深度重复的次数。语法的深度对应于得到分层结构中的终端符号之前非终端符号的数量。

因此,针对各种进程获得各种图形。然后对这些图形进行比较,以形成进程的组。一组由具有相同图形的所有进程组成。在该进程的结尾,每组保存单个图形,从而使要制作的模型能更加直观,并且每组进程仅显示一个图形。

如上所述,图形16由节点7至11和定向边12至20组成,该定向边表示从一个调用到另一个调用或从一个系列调用到另一个系列调用的通道。与环12至15对应的边12至15被分配有表示分别通过这些边的通道的数量的权重21至24。

一旦得到图形16,就恢复压缩期间排除的所有数据,以重新认识被传输消息的所有时间、持续时间和大小概念。通过恢复这些数据,可以对每个循环和/或对每个调用计算关于被传输消息的时间和/或大小的统计数据。还可以在同一个组内检测进程的不同步。

基于这些数据,可以向每个节点分配与对应的函数调用或系列调用中所花费的时间成比例的权重。节点还可以与组中的各进程的对应调用或系列调用相关的所有统计数据相关联。

因此可以根据图形和/或与分配给节点的相关联的统计数据和/或分配给节点的权重和/或分配给边的权重对应用程序的性能进行分析。

为了实现方法,使用计算机化系统,该计算机化系统包括处理器和存储器。存储器中存储有程序指令,当程序指令被处理器执行时,该程序指令实施本发明的方法。

本说明书以示例方式给出,并且不限制本发明。

特别地,本发明不限于使用mpi类型的进程间通信函数的应用程序。其适用于其他的函数库,诸如例如“开放式多重处理”或openmp类型的函数。其还适用于对输入/输出(读写)函数的调用进行分析。更一般地,其适用于对下述应用程序进行分析:该应用程序进行函数调用,根据该函数调用,可以按时间顺序从跟踪文件中提取信息或在执行相关应用程序期间得到信息。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1