首页> 中国专利> 一种暂停与恢复MPI并行应用程序运行的方法

一种暂停与恢复MPI并行应用程序运行的方法

摘要

本发明公开了一种暂停与恢复MPI并行应用程序运行的方法,事先需要暂停一些优先级低的并行计算任务,以便给新的紧急并行计算任务让出更多计算资源。具体地说:当MPI并行应用程序运行过程中收到暂停或恢复信号时,巧妙地利用改造的MPI库函数、改造的Linux操作系统信号机制与改造的TCP通信协议,协调一致地暂停或恢复MPI并行应用程序的各个进程。由于本方法是在MPI并行应用程序的下层改造MPI库函数、Linux操作系统信号机制与TCP通信协议,因此,对于在它们上层运行的MPI并行应用程序是透明的,该方法可以大大方便对MPI并行应用程序运行的控制与调度。

著录项

  • 公开/公告号CN104572283A

    专利类型发明专利

  • 公开/公告日2015-04-29

    原文格式PDF

  • 申请/专利权人 曾小荟;

    申请/专利号CN201510003469.5

  • 申请日2015-01-06

  • 分类号G06F9/48(20060101);G06F9/54(20060101);

  • 代理机构

  • 代理人

  • 地址 343009 江西省吉安市青原区井冈山大学电信学院

  • 入库时间 2023-12-18 08:30:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-12-17

    专利权的转移 IPC(主分类):G06F9/48 登记生效日:20191127 变更前: 变更后: 申请日:20150106

    专利申请权、专利权的转移

  • 2019-11-08

    专利权的转移 IPC(主分类):G06F9/48 登记生效日:20191022 变更前: 变更后: 申请日:20150106

    专利申请权、专利权的转移

  • 2017-12-05

    授权

    授权

  • 2017-11-28

    著录事项变更 IPC(主分类):G06F9/48 变更前: 变更后: 申请日:20150106

    著录事项变更

  • 2015-07-08

    实质审查的生效 IPC(主分类):G06F9/48 申请日:20150106

    实质审查的生效

  • 2015-04-29

    公开

    公开

查看全部

说明书

技术领域

本发明属于计算机技术领域,涉及一种并行应用程序运行的控制方法,具体地说,涉及一种暂停与恢复MPI(Message Passing Interface,消息传递接口,简称为MPI)并行应用程序运行的方法。

背景技术

在并行计算机系统之中,为了解决随时插入紧急MPI并行计算任务的难题,必然需要挂起/暂停一些优先级低的并行计算任务,以便给新的紧急并行计算任务让出更多计算资源。目前,绝大多数的并行应用程序本身没有提供挂起/暂停的功能,而是需要从并行应用程序外部来完成该项任务,也就是需要同步地保存并行应用程序在各个计算节点上面进程的运行状态以及通信状态,其中的难点之一就在如何保存各个进程间的通信状态,使之保持一致性,然后挂起/暂停该程序,最后待紧急并行计算任务完成后,恢复运行被挂起/暂停的MPI并行应用程序。

一般来说,目前有两个办法来解决保存并行程序进程间通信状态一致性的问题:

一是从操作系统层着手来保存正在运行的并行程序的各种状态,然后暂停或中断该并行程序,等到运行完紧急任务后,再从暂停点继续运行程序或者从中断点处运行程序,这就需要操作系统提供直接的支持。然而,就我们所掌握的文献与资料来看,尽管目前在并行程序的容错方面取得了不少成果,比如运用检查点/卷回技术,但是实现比较复杂,需要大量修改操作系统内核,并且需要把并行应用程序的运行状态信息及通信状态信息保存到磁盘,在保存与恢复过程中要花费不少时间。

二是在应用层提供额外的接口支持,这需要充分利用操作系统提供的进程运行状态等信息,辅之以通信协议的支持,在保存好MPI并行应用程序的相关运行状态信息及通信状态信息后,就可以相对容易地暂停或中断并行应用程序,经过若干时间后再恢复运行。这种方法在国内外也有初步的尝试,存在的难点主要是普通的通信协议(比如TCP/IP通信协议)提供的支持非常有限,因此实现起来非常困难。就第二种解决挂起或暂停并行程序的方法而言,需要通信协议提供支持,从而能够获得MPI各个进程足够多的通信状态信息,以方便保存并行应用程序的信息,并且保证各个进程间通信状态的一致性,否则按照系统默认的方式挂起并行应用程序时,会导致正在进行通信的进程由于超时退出,最终导致整个并行应用程序的崩溃。

在传统的TCP/IP通信协议中,数据传输出错重传的最大时间大约为9分钟,该时间在目前的TCP通信协议实现中(某些商业版Solaris版本允许系统管理员改变这个时间)是不可变的,因此如果按照普通方式在以太网环境下把并行应用程序暂停,最终会使某些进程通信超时退出,进而导致整个并行应用程序的崩溃。我们在四台CPU为奔四2.8Ghz、内存为1GB的计算机硬件平台上(操作系统为Centos Linux 5.0)测试,如果按照普通方式暂停MPI并行应用程序的运行,该程序会因为通信超时而退出,超时退出时间大约为15分钟。

发明内容

本发明的目的在于克服上述技术存在的缺陷,提供一种暂停与恢复MPI并行应用程序运行的方法,解决在并行计算机系统之中随时插入紧急MPI并行计算任务的难题,事先需要暂停一些优先级低的并行计算任务,以便给新的紧急并行计算任务让出更多计算资源。具体地说:当MPI并行应用程序运行过程中收到暂停运行或继续运行信号时,巧妙地利用改造的MPI库函数、改造的Linux操作系统信号机制与改造的TCP通信协议,协调一致地暂停或恢复MPI并行应用程序的各个进程。由于本方法是在MPI并行应用程序的下层改造MPI库函数、Linux操作系统信号机制与TCP通信协议,对于在它们上层运行的MPI并行应用程序是透明的,因此,现有的MPI并行应用程序可以无缝运行在我们改造的系统之上,不需要对MPI并行应用程序的源代码做任何的修改,我们的方法可以大大方便对MPI并行应用程序运行的控制与调度。

其具体技术方案为:

一种暂停与恢复MPI并行应用程序运行的方法,充分利用我们改造的MPI库函数、改造的Linux操作系统信号机制与改造的TCP通信协议,协调一致地暂停或恢复MPI并行应用程序,包括以下步骤:

步骤1.在Linux操作系统中改造TCP通信协议的实现,在TCP通信协议实现中增加控制接口函数tcp_ioctl_MPI(),用来查询MPI进程间通信的详细状态,进而控制进程间的通信与处理各个进程间的通信同步问题。

步骤2.在Linux操作系统中改造信号机制,修改“处理暂停运行信号”的接口函数catch_tstp(),使并行应用程序在收到暂停运行信号时,先进入下层TCP通信协议,调用增加的控制接口函数tcp_ioctl_MPI(),解决各个进程间的通信暂停以及通信同步问题,即完成正在传输的数据,然后待通信状态一致后暂停通信,最后从下层TCP通信协议返回,按照系统默认的方式暂停运行;同时,修改“处理继续运行信号”的接口函数catch_cont(),使并行应用程序在收到继续运行信号时,先进入下层TCP通信协议,调用增加的控制接口函数tcp_ioctl_MPI(),解决各个进程间通信恢复以及通信同步问题,然后待各个进程间通信状态一致后,从下层TCP通信协议返回,按照系统默认的方式恢复运行。

步骤3.MPI_Init()函数是所有MPI并行应用程序调用的第一个MPI库函数,在该函数体的初始部分就立即安装暂停信号,使并行应用程序一开始运行就具有接收暂停信号的能力,也就是调用系统函数signal(SIGTSTP,catch_tstp)。这样,一旦MPI并行应用程序接收到暂停信号,就会调用修改的函数catch_tstp(),在函数catch_tstp()执行过程中,又会先进入下层TCP通信协议之中调用函数tcp_ioctl_MPI(),用来处理进程间的通信同步问题,在处理完通信同步后,该MPI并行应用程序的各个进程间暂停用户数据的通信,各个进程间仅仅接收与发送控制信息的通信,然后该并行应用程序的各个进程按照系统默认的暂停方式暂停运行,从而使整个并行应用程序暂停运行。

另外,也在MPI_Init()函数体内初始部分就立即安装继续运行信号,使并行应用程序一开始运行就具有接收继续运行信号的能力,也就是调用系统函数signal(SIGCONT,catch_cont)。这样,一旦MPI并行应用程序接收到继续运行信号,就会调用修改的函数catch_cont(),在函数catch_cont()执行过程中,又会先进入下层TCP通信协议,调用tcp_ioctl_MPI()处理进程间的通信同步问题,在处理完通信同步后,再按照系统默认的方式继续运行。

步骤4.当MPI并行应用程序接收到暂停信号时,由于在MPI并行应用程序调用的第一个MPI库函数MPI_Init()中事先安装了暂停信号,因此,MPI并行应用程序会通过signal(SIGTSTP,catch_tstp)函数调用修改的函数catch_tstp(),在catch_tstp()执行过程中又会进入TCP通信协议之中调用tcp_ioctl_MPI()函数处理完正在传输的用户数据(这里指把一条完整的消息传输完成),然后暂停进程的后续用户数据通信,以保证MPI并行应用程序在被暂停运行时,MPI并行应用程序的所有进程间没有正在传输的用户数据,各个进程间仅仅接收与发送控制信息的通信。

具体来说,当需要暂停并行应用程序时,通过MPI并行应用程序的主控进程所在的计算节点命令行界面,向MPI并行应用程序的主控进程发送暂停信号,然后MPI并行应用程序的各个进程进行如下步骤的操作:

(1)在MPI并行应用程序的主控进程已经接收到暂停运行信号后,通知其他非主控进程准备暂停运行;

(2)其他非主控进程回复主控进程,确认获得暂停运行的消息;

(3)并行应用程序的各个进程完成正在传输的用户数据,然后主控进程检查各进程间通信状态的一致性;

(4)若并行应用程序的各个进程通信状态一致,则暂停用户数据的通信,各个进程间仅仅接收与发送控制信息的通信;

(5)最后,MPI主控进程从TCP通信协议中返回后,立即执行系统默认的暂停运行操作;而非主控进程也各自从TCP通信协议中返回,立即执行系统默认的暂停运行操作;

步骤5.当需要恢复运行MPI并行应用程序时,通过MPI并行应用程序的主控进程所在的计算节点命令行界面,向MPI并行应用程序的主控进程发送继续运行信号,并行应用程序收到继续运行信号时,由于在MPI并行应用程序调用的第一个MPI库函数MPI_Init()中事先安装了继续运行信号,因此,MPI并行应用程序会通过signal(SIGCONT,catch_cont)函数调用修改的函数catch_cont(),在catch_cont()执行过程中又会进入TCP通信协议之中调用tcp_ioctl_MPI()函数,接着进行后续的用户数据通信,进而恢复整个并行应用程序的运行。

本方法所述的MPI并行应用程序恢复运行的具体操作步骤如下:

(1)在MPI主控进程已经接收到继续运行信号后,发送控制消息通知其他非主控进程准备继续运行;

(2)非主控进程所在的操作系统内核收到主控进程发来的控制消息要求继续运行后,给各个非主控进程发送继续运行信号;

(3)其他非主控进程回复主控进程,确认获得继续运行的消息;主控进程从非主控进程获得确认恢复运行的消息,然后各个进程间恢复正常的用户数据通信;

(4)MPI主控进程从TCP通信协议中返回后,执行继续运行操作;

(5)非主控进程各自也从TCP通信协议中返回,执行继续运行操作。

与现有技术相比,本发明的有益效果为:

为了解决随时插入紧急MPI并行计算任务的难题,必然需要挂起/暂停一些优先级低的并行计算任务,以便给新的紧急并行计算任务让出更多计算资源。本方法提出了一种暂停与恢复MPI并行应用程序运行的方法,在并行计算机系统之中,当MPI并行应用程序运行过程中收到暂停或继续运行信号时,利用改造的MPI库函数、改造的Linux操作系统信号机制与改造的TCP通信协议,协调一致地暂停或恢复MPI并行应用程序的各个进程。本方法在暂停或恢复MPI并行应用程序的过程中,不会出现MPI并行应用程序中的某一个或某几个进程因为通信超时而退出,最终避免因为某一个或某几个进程因通信超时退出而导致整个MPI并行应用程序崩溃的问题。本方法可以大大方便对MPI并行应用程序运行的控制与调度,不需要对MPI并行应用程序的源代码做任何的修改,现有的MPI并行应用程序可以无缝运行在我们改造的系统之上,解决了在并行计算机系统之中随时插入紧急MPI并行计算任务的难题。

附图说明

图1为本发明方法“暂停或恢复MPI并行应用程序运行”的处理过程示意图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合附图和具体实例进一步阐述本发明。

图1说明了本方法“暂停或恢复MPI并行应用程序运行”的处理过程,主要过程是这样的:

步骤1.在Linux操作系统中改造TCP通信协议的实现,在TCP通信协议实现中增加控制接口函数tcp_ioctl_MPI(),用来查询MPI进程间通信的详细状态,进而控制进程间的通信与处理各个进程间的通信同步问题。

步骤2.在Linux操作系统中改造信号机制,修改“处理暂停运行信号”的接口函数catch_tstp(),使并行应用程序在收到暂停运行信号时,先进入下层TCP通信协议,调用增加的控制接口函数tcp_ioctl_MPI(),解决各个进程间的通信暂停以及通信同步问题,即完成正在传输的数据,然后待通信状态一致后暂停通信,最后从下层TCP通信协议返回,按照系统默认的方式暂停运行;同时,修改“处理继续运行信号”的接口函数catch_cont(),使并行应用程序在收到继续运行信号时,先进入下层TCP通信协议,调用增加的控制接口函数tcp_ioctl_MPI(),解决各个进程间通信恢复以及通信同步问题,然后待各个进程间通信状态一致后,从下层TCP通信协议返回,按照系统默认的方式恢复运行。

步骤3.MPI_Init()函数是所有MPI并行应用程序调用的第一个MPI库函数,在该函数体的初始部分就立即安装暂停信号,使并行应用程序一开始运行就具有接收暂停信号的能力,也就是调用系统函数signal(SIGTSTP,catch_tstp)。这样,一旦MPI并行应用程序接收到暂停信号,就会调用修改的函数catch_tstp(),在函数catch_tstp()执行过程中,又会先进入下层TCP通信协议之中调用函数tcp_ioctl_MPI(),用来处理进程间的通信同步问题,在处理完通信同步后,该MPI并行应用程序的各个进程间暂停用户数据的通信,各个进程间仅仅接收与发送控制信息的通信,然后该并行应用程序的各个进程按照系统默认的暂停方式暂停运行,从而使整个并行应用程序暂停运行。

另外,也在MPI_Init()函数体内初始部分就立即安装继续运行信号,使并行应用程序一开始运行就具有接收继续运行信号的能力,也就是调用系统函数signal(SIGCONT,catch_cont)。这样,一旦MPI并行应用程序接收到继续运行信号,就会调用修改的函数catch_cont(),在函数catch_cont()执行过程中,又会先进入下层TCP通信协议,调用tcp_ioctl_MPI()处理进程间的通信同步问题,在处理完通信同步后,再按照系统默认的方式继续运行。

步骤4.当MPI并行应用程序接收到暂停信号时,由于在MPI并行应用程序调用的第一个MPI库函数MPI_Init()中事先安装了暂停信号,因此,MPI并行应用程序会通过signal(SIGTSTP,catch_tstp)函数调用修改的函数catch_tstp(),在catch_tstp()执行过程中又会进入TCP通信协议之中调用tcp_ioctl_MPI()函数处理完正在传输的用户数据(这里指把一条完整的消息传输完成),然后暂停进程的后续用户数据通信,以保证MPI并行应用程序在被暂停运行时,MPI并行应用程序的所有进程间没有正在传输的用户数据,各个进程间仅仅接收与发送控制信息的通信。

具体来说,当需要暂停并行应用程序时,通过MPI并行应用程序的主控进程所在的计算节点命令行界面,向MPI并行应用程序的主控进程发送暂停信号,然后MPI并行应用程序的各个进程进行如下步骤的操作:

(1)在MPI并行应用程序的主控进程已经接收到暂停运行信号后,通知其他非主控进程准备暂停运行;

(2)其他非主控进程回复主控进程,确认获得暂停运行的消息;

(3)并行应用程序的各个进程完成正在传输的用户数据,然后主控进程检查各进程间通信状态的一致性;

(4)若并行应用程序的各个进程通信状态一致,则暂停用户数据的通信,各个进程间仅仅接收与发送控制信息的通信;

(5)最后,MPI主控进程从TCP通信协议中返回后,立即执行系统默认的暂停运行操作;而非主控进程也各自从TCP通信协议中返回,立即执行系统默认的暂停运行操作;

步骤5.当需要恢复运行MPI并行应用程序时,通过MPI并行应用程序的主控进程所在的计算节点命令行界面,向MPI并行应用程序的主控进程发送继续运行信号,并行应用程序收到继续运行信号时,由于在MPI并行应用程序调用的第一个MPI库函数MPI_Init()中事先安装了继续运行信号,因此,MPI并行应用程序会通过signal(SIGCONT,catch_cont)函数调用修改的函数catch_cont(),在catch_cont()执行过程中又会进入TCP通信协议之中调用tcp_ioctl_MPI()函数,接着进行后续的用户数据通信,进而恢复整个并行应用程序的运行。

本方法所述的MPI并行应用程序恢复运行的具体操作步骤如下:

(1)在MPI主控进程已经接收到继续运行信号后,发送控制消息通知其他非主控进程准备继续运行;

(2)非主控进程所在的操作系统内核收到主控进程发来的控制消息要求继续运行后,给各个非主控进程发送继续运行信号;

(3)其他非主控进程回复主控进程,确认获得继续运行的消息;主控进程从非主控进程获得确认恢复运行的消息,然后各个进程间恢复正常的用户数据通信;

(4)MPI主控进程从TCP通信协议中返回后,执行继续运行操作;

(5)非主控进程各自也从TCP通信协议中返回,执行继续运行操作。

本发明提出了一种暂停与恢复MPI并行应用程序运行的方法,能够挂起/暂停一些优先级低的MPI并行计算任务,以便给新的紧急MPI并行计算任务让出更多计算资源,从而解决了随时插入紧急MPI并行计算任务的难题,本方法可以大大方便对MPI并行应用程序的控制与调度。

以上所述,仅为本发明最佳实施方式,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换均落入本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号