欢迎来到知嘟嘟! 联系电话:13336804447 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13336804447
知嘟嘟经纪人
收藏
专利号: 2015100034695
申请人: 曾小荟
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2025-12-10
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

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通信协议中返回,执行继续运行操作。