一种基于mpi高性能计算分层回卷恢复协议的动态分组系统的制作方法

文档序号:10488834阅读:329来源:国知局
一种基于mpi高性能计算分层回卷恢复协议的动态分组系统的制作方法
【专利摘要】本发明公开了一种基于MPI高性能计算分层回卷恢复协议的动态分组系统,包括消息监测模块、消息分析模块、进程迁移模块,属于高性能计算和系统容错领域。消息监测模块用于监测MPI高性能计算应用程序中各个进程间的消息传递记录,并将该记录以三元组(源进程、目的进程、消息大小)的格式保存,最后将该消息传递记录提交给消息分析模块;消息分析模块用于对消息监测模块收集到的消息传递记录进行分析,分析出当前应用程序的消息传递模式,作为下次应用程序是否执行进程迁移模块的依据,同时利用前一次的消息传递模式来判断此次是否需要执行进程迁移模块;进程迁移模块用于在应用程序的消息传递模式发生变化时对变化的进程进行迁移操作,从而实现对分层回卷恢复协议性能的优化。
【专利说明】
一种基于MPI高性能计算分层回卷恢复协议的动态分组系统
技术领域
[0001]本发明属于高性能计算和系统容错领域,更具体地,涉及一种基于MPI高性能计算分层回卷恢复协议的动态分组系统。
【背景技术】
[0002]随着高性能计算领域的发展,高性能计算机已经增长到百万级节点的规模,以后还可能会有进一步的增长。同时,高性能计算机系统其平均无故障时间(Mean TimeBetween Failures,简称MTBF)较以前大幅下降,甚至达到了若干小时的量级。然而,分布式商业应用和大规模科学计算应用程序的数据规模、计算复杂性和运行时间仍维持在较高的水平,甚至运行时间长达数月,远大于MTBF。这将导致系统花费过多的时间来处理系统错误,而严重降低了系统的效率。因此,必须考虑采用有效的容错技术,在保证计算性能的同时,尽可能地提高系统可靠性,以满足应用的需求。
[0003]针对MPIHPC应用,最常用的容错技术是回卷恢复技术,其中主要包括协作式检查点和消息日志协议。分层回卷回复协议,结合了协作式检查点和消息日志协议两者的优点,将应用程序的进程分组,并在组内应用协作式检查点,组间应用消息日志协议,避免了错误在组间传播的同时还减少了消息日志的记录。而分层回卷回复协议的核心问题就是如何将应用程序的进程分组以此来提高该协议的效率。一个好的分组策略需要降低组间消息传递的数量来提高系统无错时的性能,同时找到一个合适的分组大小来降低系统出错时带来的回滚开销。
[0004]然而,随着大规模的应用程序变得越来越复杂,运行时间越来越长,应用的通讯特点也变得越来越多变和复杂。甚至一个应用中存在多个通讯模式,在应用的不同阶段会有不同的改变。然而,现有的分组策略仅考虑了应用仅有单一通讯模式的情况,并不能适应通讯模式改变的情形。因此,静态分组机制在复杂应用中的效率并不是最好的,分层回卷回复协议的效率也有待进一步的提尚。

【发明内容】

[0005]针对现有技术的以上缺陷或改进需求,本发明的目的在于提供一种基于MPI高性能计算分层回卷恢复协议的动态分组系统,旨在解决现有分层回卷恢复协议的分组机制不能适应应用通讯模式改变而导致效率低下的技术问题。
[0006]为实现上述目的,本发明提供了一种基于MPI高性能计算分层回卷恢复协议的动态分组系统,包括消息监测模块、消息分析模块、进程迀移模块。消息监测模块用于监测应用程序中各个进程间的消息传递记录,并将该记录以一定的格式保存,并将该消息传递记录提交给消息分析模块;消息分析模块用于对消息监测模块收集到的消息传递记录进行分析,分析出当前应用程序的消息传递模式,并利用分组算法获得当前最优的分组信息,作为下次应用程序是否执行进程迀移模块的依据,同时利用前一次的消息传递模式来判断此次是否需要执行进程迀移模块;进程迀移模块用于在应用程序的消息传递模式发生变化时对相关进程进行迀移操作,实时更新进程分组,实现动态分组功能,如果程序未结束,则重新回到消息监测模块,在新的分组下继续运行应用程序。
[0007]消息监测模块监测的信息为应用程序中各个进程的消息传递记录,包括源进程、目的进程、进程间传递的信息的大小、消息传递的时间点。监测功能的实现主要通过使用Vamp i r Trac e工具来记录应用程序间的消息传递。
[0008]消息分析模块通过分析消息检测模块监测到的进程间消息传递记录,利用分组算法MeTiS得到最佳的分组结果,并与当前使用的分组结果对比,判断是否需要进行进程迀移模块。
[0009]进程迀移模块是在当前的分组结果与得到的最佳分组结果不一致时执行的。进程迀移模块执行时,先暂停所有进程的通讯行为,每个进程将自己的进程快照使用BLCR保存,并从源节点传输到目的节点,读取进程快照并在目的节点上恢复进程,所有进程重新建立通讯连接,恢复通讯活动,完成进程迀移。
[0010]本发明还提供了一种基于MPI高性能计算分层回卷恢复协议的动态分组方法,包括以下步骤:
[0011](I)初始化进程分组信息Clusterlast,并应用于程序中;
[00?2 ] (2)初始化进程间消息传递记录Log ;
[0013](3)在一定时间内,消息监测模块监测进程间的消息传递信息,并将该信息以三元组的形式保存到Log中;
[0014](4)消息分析模块从Log中读取消息监测模块保存的消息传递信息记录,并将其转化为二维数组Graph[x][y]中,使用图划分算法MeTiS进行分组,得到新的分组结果
ClusteiTnew ;
[0015](5)对比两次分组Clusteriast和ClusterneW,如果相同则跳转步骤(7),否则跳转步骤(6);
[0016](6)执行进程迀移,同时更新分组信息Clusteriast—clusternew;
[0017](7)判断程序是否结束,如果是则结束,否则跳转步骤(2)。
[0018]总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下的优点和技术效果:
[0019](I)本发明采用的消息监测模块,仅需要记录传递消息的源进程、目的进程、进程间传递的信息的大小和消息传递的时间点四种信息,较于传统的监测方法,得到了明显的简化,有效的降低了消息监测所引入的额外开销;
[0020](2)本发明采用的消息分析模块,使用MeTiS算法针对进程间的消息传递将进程进行分组,得到的分组结果有效的减少了组间进程通讯消息的大小,从而有效的减少了节点内存的使用;
[0021](3)本发明在消息分析模块中会先对比当前分组和得到的最佳分组,不一致时才执行进程迀移模块,明显的减少了进程迀移的次数,从而减少了进程迀移所引入的额外开销;
[0022](4)本发明在整个系统中以一种运行时的形式工作,不涉及用户层程序的具体代码或额外操作,因此对用户层程序是完全透明的,不需要对用户层程序进行任何改动,具有很强的通用性和可移植性。
【附图说明】
[0023]图1为本发明基于MPI高性能计算分层回卷恢复协议的动态分组系统模块框图;
[0024]图2为本发明基于MPI高性能计算分层回卷恢复协议的动态分组方法的流程图;
[0025]图3为本发明基于MPI高性能计算分层回卷恢复协议的动态分组系统进程迀移流程图。
【具体实施方式】
[0026]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0027]如图1所示,本发明提供了一种基于MPI高性能计算分层回卷恢复协议的动态分组系统,包括消息监测模块、消息分析模块、进程迀移模块。消息监测模块用于监测应用程序中各个进程间的消息传递记录,并将该记录以一定的格式保存,并将该消息传递记录提交给消息分析模块;消息分析模块用于对消息监测模块收集到的消息传递记录进行分析,分析出当前应用程序的消息传递模式,并利用分组算法获得当前最优的分组信息,作为下次应用程序是否执行进程迀移模块的依据,同时利用前一次的消息传递模式来判断此次是否需要执行进程迀移模块;进程迀移模块用于在应用程序的消息传递模式发生变化时对相关进程进行迀移操作,实时更新进程分组,实现动态分组功能,如果程序未结束,则重新回到消息监测模块,在新的分组下继续运行应用程序。
[0028]消息监测模块监测的信息为应用程序中各个进程的消息传递记录,包括源进程、目的进程、进程间传递的信息的大小、消息传递的时间点。监测功能的实现主要通过使用Vamp i r Trac e工具来记录应用程序间的消息传递。
[0029]消息分析模块通过分析消息检测模块监测到的进程间消息传递记录,利用分组算法MeTiS得到最佳的分组结果,并与当前使用的分组结果对比,判断是否需要进行进程迀移模块。
[0030]进程迀移模块是在当前的分组结果与得到的最佳分组结果不一致时执行的。进程迀移模块执行时,先暂停所有进程的通讯行为,每个进程将自己的进程快照使用BLCR保存,并从源节点传输到目的节点,读取进程快照并在目的节点上恢复进程,所有进程重新建立通讯连接,恢复通讯活动,完成进程迀移。
[0031]如图2所示,本发明提供了一种基于MPI高性能计算分层回卷恢复协议的动态分组方法,包括以下步骤:
[0032](I)初始化进程分组信息Clusteriast,并应用于程序中;
[OO33 ] (2)初始化进程间消息传递记录Log ;
[0034](3)在一定时间内,消息监测模块监测进程间的消息传递信息,并将该信息以三元组的形式保存到Log中;
[0035](4)消息分析模块从Log中读取消息监测模块保存的消息传递信息记录,并将其转化为二维数组Graph[x][y]中,使用图划分算法MeTiS进行分组,得到新的分组结果
CluS tei*new;
[0036](5)对比两次分组Clusteriast和Clusternew,如果相同则跳转步骤(7),否则跳转步骤(6);
[0037](6)执行进程迀移,同时更新分组信息Clusteriast—ClusterneW;
[0038](7)判断程序是否结束,如果是则结束,否则跳转步骤(2)。
[0039]步骤(3)包括了以下子步骤:
[°04°] (3-1)使用VampirTrace工具获取进程间传递的消息;
[OO41 ] (3-2)将获取的消息记录以格式(Source ,Dest,Size)三元组的形式保存;
[0042](3-3)将这些信息使用OTF格式转化为文件保存。
[0043]步骤(4)包括了以下子步骤:
[0044](4-1)以OTF格式读取文件,将消息记录转化为二维数组Graph[x][y];
[0045](4-2)初始化图划分算法MeTiS需要的数据;
[0046](4-3)使用图划分算法MeTiS进行进程分组,将结果保存到Clusternew中。
[0047]步骤(6)包括以下子步骤:
[0048](6-1)暂停进程:所有进程暂停通讯行为,等待在途中消息传输完成,让所有进程进入一致状态;
[0049](6-2)写入进程快照:进程暂停后,每个进程在自己的结点上保存自己当前的状况为快照,并用BLCR将其保存成文件;
[0050](6-3)进程信息传输:将进程快照从源节点传输到目的节点;
[0051](6-4)重启进程:读取进程快照,并通过BLCR在目的节点上恢复进程;
[0052](6-5)重新连接:一旦目的结点上的进程重启了,应用的所有进程同步并重新建立通讯连接,恢复通讯活动,此时进程迀移工作完成。
[0053]本发明提供了一种基于MPI高性能计算分层回卷恢复协议的动态分组方法,其中由于采用了步骤(3-2),本发明采用的消息监测模块中,仅需要记录传递消息的源进程、目的进程、进程间传递的信息的大小和消息传递的时间点四种信息,较于传统的监测方法,得到了明显的简化,有效的降低了消息监测所引入的额外开销;由于采用了步骤(4-3),本发明采用的消息分析模块,使用MeTiS算法针对进程间的消息传递将进程进行分组,得到的分组结果有效的减少了组间进程通讯消息的大小,从而有效的减少了节点内存的使用;由于采用了步骤(5),本发明在消息分析模块中会先对比当前分组和得到的最佳分组,不一致时才执行进程迀移模块,明显的减少了进程迀移的次数,从而减少了进程迀移所引入的额外开销;由于采用了步骤(1)-(7),本发明在整个系统中以一种运行时的形式工作,不涉及用户层程序的具体代码或额外操作,因此对用户层程序是完全透明的,不需要对用户层程序进行任何改动,具有很强的通用性和可移植性。
[0054]如图3所示,本发明提供了一种基于MPI高性能计算分层回卷恢复协议的动态分组系统,进程迀移模块执行时,先暂停所有进程的通讯行为,每个进程将自己的进程快照使用BLCR保存,并从源节点传输到目的节点,读取进程快照并在目的节点上恢复进程,所有进程重新建立通讯连接,恢复通讯活动,完成进程迀移。
[0055]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于MPI高性能计算分层回卷恢复协议的动态分组系统,其特征在于,包括消息监测模块、消息分析模块、进程迀移模块,其中: 所述消息监测模块用于监测应用程序中各个进程间的消息传递记录,并将该记录以三元组的格式保存,最后将该消息传递记录提交给消息分析模块,其中三元组包括源进程、目的进程以及消息大小; 所述消息分析模块用于对消息监测模块收集到的消息传递记录进行分析,分析出当前应用程序的消息传递模式,作为下次应用程序是否执行进程迀移模块的依据,同时利用前一次的消息传递模式来判断此次是否需要执行进程迀移模块; 所述进程迀移模块用于在应用程序的消息传递模式发生变化时对相关进程进行迀移操作,实时更新进程分组,实现动态分组功能,如果程序未结束,则重新回到消息监测模块,在新的分组下继续运行应用程序。2.根据权利要求1所述的动态分组系统,其特征在于,所述消息监测模块对应用程序运行时进程间的消息传递信息进行了监测统计记录,消息监测的内容包括MPI消息的源进程,MPI消息的目的进程以及MPI消息的大小。3.根据权利要求1或2所述的动态分组系统,其特征在于,所述消息分析模块读取消息监测模块统计的信息记录,并将其转化为二维数组的形式;然后通过MeTiS图划分算法进行分组,得到分组结果;比较当前分组与上次分组,如果相同,则回到程序继续执行消息监测模块,否者进入进程迀移模块。4.根据权利要求1或2所述的动态分组系统,其特征在于,所述进程迀移模块是在当前的分组结果与得到的最佳分组结果不一致时执行的;进程迀移模块执行时,先暂停所有进程的通讯行为,每个进程将自己的进程快照使用BLCR保存,并从源节点传输到目的节点,读取进程快照并在目的节点上恢复进程,所有进程重新建立通讯连接,恢复通讯活动,完成进程迀移。5.根据权利要求2所述的动态分组系统,其特征在于,所述消息监测模块的监测功能的实现主要通过使用VampirTrace工具来记录应用程序间的消息传递。6.一种基于MPI高性能计算分层回卷恢复协议的动态分组方法,其特征在于,包括以下步骤: (1)初始化进程分组信息Clusterlast,并应用于程序中; (2)初始化进程间消息传递记录Log; (3)在一定时间内,消息监测模块监测进程间的消息传递信息,并将该信息以三元组的形式保存到Log中; (4)消息分析模块从Log中读取消息监测模块保存的消息传递信息记录,并将其转化为二维数组Graph[x][y]中,使用图划分算法MeTiS进行分组,得到新的分组结果Clusternew; (5)对比两次分组Clusteriast和Cluster.,如果相同则跳转步骤(7),否则跳转步骤(6); (6)执行进程迀移,同时更新分组信息Clusteriast—Cluster_; (7)判断程序是否结束,如果是则结束,否则跳转步骤(2)。7.根据权利要求6所述的动态分组方法,其特征在于,所述步骤(3)包括了以下子步骤: (3-1)使用V amp i r Tr ac e工具获取进程间传递的消息; (3-2)将获取的消息记录以格式(Source ,Dest, Size)三元组的形式保存; (3-3)将这些信息使用OTF格式转化为文件保存。8.根绝权利要求6或7所述的动态分组方法,其特征在于,步骤(4)包括了以下子步骤: (4-1)以OTF格式读取文件,将消息记录转化为二维数组Graph[X][y]; (4-2)初始化图划分算法MeTiS需要的数据; (4-3)使用图划分算法MeTiS进行进程分组,将结果保存到Clusterne3w中。9.根据权利要求6或7所述的动态分组方法,其特征在于,步骤(6)包括以下子步骤: (6-1)暂停进程:所有进程暂停通讯行为,等待在途中消息传输完成,让所有进程进入一致状态; (6-2)写入进程快照:进程暂停后,每个进程在自己的结点上保存自己当前的状况为快照,并用BLCR将其保存成文件; (6-3)进程信息传输:将进程快照从源节点传输到目的节点; (6-4)重启进程:读取进程快照,并通过BLCR在目的节点上恢复进程; (6-5)重新连接:一旦目的结点上的进程重启了,应用的所有进程同步并重新建立通讯连接,恢复通讯活动,此时进程迀移工作完成。
【文档编号】G06F11/14GK105843706SQ201610171985
【公开日】2016年8月10日
【申请日】2016年3月24日
【发明人】廖小飞, 金海 , 张斌圣
【申请人】华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1