本发明涉及高性能计算
技术领域:
:,尤其涉及一种程序的部署方法、装置和计算机设备。
背景技术:
::deal.ii是一个使用c 语言编写的有限元求解库。为实现有限元中的各类复杂计算,deal.ii编译时使用了多种程序库,例如petsc(portableextensibletoolkitforscientificcomputation,美国argonne国家实验室开发的一个包含各类科学程序求解程序的集合)、trilinos(美国sandia国家实验室开发的求解各类科学计算问题的程序集合)、p4est(parallelamronforestsofoctrees,实现并行八叉树自适应网络划分的程序库)、有限元网格划分程序metis等。其中,petsc和trilinos这两个库的底层又依赖于其他多个程序,形成了非常复杂的层次结构。由于以上各个软件程序都是开源的,因此程序接口方面经常会发生变化,造成软件版本间有较强的依赖关系,如deal.ii8.4版只能使用3.6.4版的petsc,而使用新版如3.7.4版的petsc则会报错。以上原因造成deal.ii安装部署困难,不利于使用。在不同的操作系统环境和编译器环境下安装时,经常出现编译报错。技术实现要素:本发明的目的旨在至少在一定程度上解决上述的技术问题之一。为此,本发明的第一个目的在于提出一种程序的部署方法,能够有效地降低程序部署的难度,实现快速安装部署。本发明的第二个目的在于提出一种程序的部署装置。本发明的第三个目的在于提出一种计算机设备。本发明的第四个目的在于提出一种非临时性计算机可读存储介质。为了实现上述目的,本发明第一方面实施例提出一种程序的部署方法,该方法包括:将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,其中,预先在所述容器镜像内部署的功能至少包括:操作系统功能和通信功能;保存所述容器镜像,得到镜像文件,其中,所述镜像文件为允许迁移的文件。可选的,在保存所述容器镜像,得到镜像文件之后,所述方法还包括:将所述镜像文件迁移至其他运行环境中;所述其他运行环境中的进程启动时,使用所述镜像文件内的所述可执行文件和对应的动态库编译所述其他运行环境中的应用程序。可选的,将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,包括:利用编译安装工具或者脚本编译所述可执行文件和对应的动态库的安装选项,所述安装选项包括安装目录和动态库的依赖关系;根据所述安装选项对所述可执行文件和对应的动态库进行镜像打包。可选的,在保存所述容器镜像,得到镜像文件之后,还包括:设置启动所述容器镜像的环境变量。可选的,预先在所述容器镜像内部署通信功能,包括:在所述容器镜像内预安装网络协议栈及所述网络协议栈的并行库。本发明实施例的程序的部署方法,通过将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,以及保存所述容器镜像,得到镜像文件,有效地降低了程序部署的难度,实现快速安装部署。为了实现上述目的,本发明第二方面实施例提出了一种程序的部署装置,包括:映射模块,用于将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,其中,预先在所述容器镜像内部署的功能至少包括:操作系统功能和通信功能;保存模块,用于保存所述容器镜像,得到镜像文件,其中,所述镜像文件为允许迁移的文件。可选的,所述装置还包括:迁移模块,用于在保存所述容器镜像,得到镜像文件之后,将所述镜像文件迁移至其他运行环境中;编译模块,用于所述其他运行环境中的进程启动时,使用所述镜像文件内的所述可执行文件和对应的动态库编译所述其他运行环境中的应用程序。可选的,所述映射模块,用于:利用编译安装工具或者脚本编译所述可执行文件和对应的动态库的安装选项,所述安装选项包括安装目录和动态库的依赖关系;根据所述安装选项对所述可执行文件和对应的动态库进行镜像打包。可选的,所述装置还包括:设置模块,用于在所述其他运行环境中的进程启动之前,设置启动所述容器镜像的环境变量。可选的,所述映射模块,还用于:在所述容器镜像内预安装网络协议栈及所述网络协议栈的并行库。本发明实施例的程序的部署装置,通过将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,以及保存所述容器镜像,得到镜像文件,有效地降低了程序部署的难度,实现快速安装部署。为了实现上述目的,本发明第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如第一方面实施例所述的程序的部署方法。为了实现上述目的,本发明第四方面实施例还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如第一方面实施例所述的程序的部署方法。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。附图说明构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是本发明一个实施例的程序的部署方法的流程图;图2是本发明一个实施例的动态库的依赖关系示意图;图3是本发明另一个实施例的程序的部署方法的流程图;图4是本发明又一个实施例的程序的部署方法的流程图;图5是本发明一实施例的程序的部署装置的结构示意图;图6是本发明另一实施例的程序的部署装置的结构示意图;图7是本发明又一实施例的程序的部署装置的结构示意图。具体实施方式需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。以下结合具体实施例对本发明作进一步详细描述,这些实施例不能理解为限制本发明所要求保护的范围。下面参考附图描述本发明实施例的程序的部署方法、装置和计算机设备。图1是本发明一实施例的程序的部署方法的流程图,如图1所示,该方法包括以下步骤:s1,将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内。在将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内之前,需要预先在容器镜像内部署一些基础功能,如操作系统功能和通信功能。其中,操作系统功能可通过部署基本的操作系统运行环境和运行时库实现,而无需部署图形界面gui相关的软件包。通信功能则可通过在容器镜像内预安装网络协议栈及网络协议栈的并行库来实现。为了在容器镜像内能够使用infiniband等高速网络通信,在容器镜像内安装完整的infiniband网络协议栈,并在容器镜像内编译安装基于infiniband的mpi(messagepassinginterface,消息通信接口)并行库。这样后续在容器镜像内对可执行文件和对应的动态库进行镜像打包,均可以使用高速网络通信,保证通信的性能。预先在容器镜像内部署上述功能之后,便可以对可执行文件和对应的动态库进行镜像打包。具体地,可利用编译安装工具或者脚本编译可执行文件和对应的动态库的安装选项,然后根据安装选项对可执行文件和对应的动态库进行镜像打包。其中,安装选项包括安装目录和动态库的依赖关系。举例来说,动态库的依赖关系可如图2所示。针对deal.ii,其依赖于petsc、trilinos、p4est、metis等。而trilinos本身也依赖于诸如amesos、epetra、ifpack、aztecoo、sacado、teuchos、melu等。同理,petsc依赖于hypre、mumps等。因此,若要编译安装deal.ii,需要先编译安装petsc、trilinos、p4est、metis等。而编译安装trilinos,则需要先编译安装amesos、epetra、ifpack、aztecoo、sacado、teuchos、melu等。同理,编译安装petsc,则需要先编译安装hypre、mumps等。在编译安装trilinos时,首先通过编译安装工具cmake控制编译安装选项,指定需要安装的amesos、epetra、ifpack、aztecoo、sacado、teuchos、melu。先编译安装上述程序,再安装trilinos。为了与deal.ii(8.4.1)相兼容,trilinos安装的版本为11.4.3。在编译安装petsc时,通过python脚本编译安装目录及需要安装的hypre、mumps等。先安装hypre、mumps,再安装petsc。为了与deal.ii(8.4.1)相兼容,petsc安装的版本为3.6.4。在编译安装p4est和metis时,由于p4est和metis未依赖任何程序,则可以直接通过configure脚本编译安装目录进行安装。为了与deal.ii(8.4.1)相兼容,p4est和metis程序库安装的版本分别为1.1和5.1.0。在编译安装petsc、trilinos、p4est、metis之后,便可以编译安装deal.ii(8.4.1)。同样的,编译安装deal.ii(8.4.1)时,通过cmake编译安装选项,指定trilinos、petsc、p4est、metis等的安装目录,这样在编译安装deal.ii的时候可以查找到上述程序对应的头文件和库文件。s2,保存容器镜像,得到镜像文件。其中,镜像文件为允许迁移的文件,其格式为可编辑格式,如第三代扩展文件系统ext3格式。本发明中的容器镜像,主要是利用singularity容器技术实现的。singularity是一种适用于高性能计算领域的容器技术。通过该容器技术可以实现deal.ii的快速安装部署,大大降低了deal.ii的使用部署难度。本发明实施例的程序的部署方法,通过将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,以及保存容器镜像,得到镜像文件,有效地降低了程序部署的难度,实现快速安装部署。在本发明的另一个实施例中,如图3所示,程序的部署方法还包括:s3,将镜像文件迁移至其他运行环境中。s4,其他运行环境中的进程启动时,使用镜像文件内的可执行文件和对应的动态库编译其他运行环境中的应用程序。封装完成的镜像文件可以通过复制快速迁移到其他运行环境中。举例来说,启动进入容器镜像后,可直接使用deal.ii编译对应的其他运行环境中的应用程序。进程在启动时,读取镜像文件内的可执行文件和对应的动态库,只有操作系统内核与主机端是共享的。另外,容器镜像内部是一个完整的运行环境,无需在容器外安装deal.ii依赖的程序。同时容器外安装的其他版本的程序也不会影响到容器内的运行环境。通过上述方式,解决了当在不同的操作系统环境和编译器环境下安装时,经常出现编译报错的问题。此外,为了便于多进程多节点间并行通信,启动容器镜像时仅对挂载点进行隔离,而不对网络、ipc(inter-processcommunication,进程间通信)等命名空间进行隔离。这样进程间进行通信时,可直接利用主机网络和ipc等机制建立通信。通过上述方法,能够降低通信的复杂度,有利于在高性能计算集群环境下进行多节点多进程的并行计算。在本发明的又一个实施例中,如图4所示,方法还包括:s5,在其他运行环境中的进程启动之前,设置启动容器镜像的环境变量。为了便于程序的使用,还可对启动容器镜像的环境变量进行修改,例如修改include、library_path、ld_library_path等环境变量。这样在启动容器镜像时,自动加载上述环境变量,从而在编译运行的时候能够查找到程序对应的头文件和库文件。为了实现上述实施例,本发明还提出了一种程序的部署装置。图5是本发明一实施例的程序的部署装置的结构示意图。如图5所示,该装置包括映射模块51和保存模块52。映射模块51,用于将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,其中,预先在容器镜像内部署的功能至少包括:操作系统功能和通信功能。保存模块52,用于保存容器镜像,得到镜像文件,其中,镜像文件为允许迁移的文件。应当理解的是,本实施例的程序的部署装置与第一方面实施例的程序的部署方法的描述一致,此处不再赘述。本发明实施例的程序的部署装置,通过将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,以及保存容器镜像,得到镜像文件,有效地降低了程序部署的难度,实现快速安装部署。在本发明的另一个实施例中,如图6所示,程序的部署装置还包括迁移模块53和编译模块54。迁移模块53,用于在保存容器镜像,得到镜像文件之后,将镜像文件迁移至其他运行环境中。编译模块54,用于其他运行环境中的进程启动时,使用镜像文件内的可执行文件和对应的动态库编译其他运行环境中的应用程序。本发明实施例的程序的部署装置,通过在保存容器镜像,得到镜像文件之后,将镜像文件迁移至其他运行环境中,并其他运行环境中的进程启动时,使用镜像文件内的可执行文件和对应的动态库编译其他运行环境中的应用程序,解决了当在不同的操作系统环境和编译器环境下安装时,经常出现编译报错的问题。在本发明的又一个实施例中,如图7所示,程序的部署装置还包括设置模块55。设置模块55,用于在其他运行环境中的进程启动之前,设置启动容器镜像的环境变量。本发明实施例的程序的部署装置,通过在其他运行环境中的进程启动之前,设置启动容器镜像的环境变量,实现了在启动容器镜像时,自动加载上述环境变量,从而在编译运行的时候能够查找到程序对应的头文件和库文件,便于程序的使用。为了实现上述实施例,本发明还提出了一种计算机设备。该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现如第一方面实施例的程序的部署方法。为了实现上述实施例,本发明还提出了一种非临时性计算机可读存储介质。该非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如第一方面实施例的程序的部署方法。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。需要说明的是,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。当前第1页1 2 3 当前第1页1 2 3 
技术特征:1.一种程序的部署方法,其特征在于,包括:
将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,其中,预先在所述容器镜像内部署的功能至少包括:操作系统功能和通信功能;
保存所述容器镜像,得到镜像文件,其中,所述镜像文件为允许迁移的文件。
2.如权利要求1所述的方法,其特征在于,在保存所述容器镜像,得到镜像文件之后,所述方法还包括:
将所述镜像文件迁移至其他运行环境中;
所述其他运行环境中的进程启动时,使用所述镜像文件内的所述可执行文件和对应的动态库编译所述其他运行环境中的应用程序。
3.如权利要求1所述的方法,其特征在于,将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,包括:
利用编译安装工具或者脚本编译所述可执行文件和对应的动态库的安装选项,所述安装选项包括安装目录和动态库的依赖关系;
根据所述安装选项对所述可执行文件和对应的动态库进行镜像打包。
4.如权利要求2所述的方法,其特征在于,在所述其他运行环境中的进程启动之前,还包括:
设置启动所述容器镜像的环境变量。
5.如权利要求1所述的方法,其特征在于,预先在所述容器镜像内部署通信功能,包括:
在所述容器镜像内预安装网络协议栈及所述网络协议栈的并行库。
6.一种程序的部署装置,其特征在于,包括:
映射模块,用于将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,其中,预先在所述容器镜像内部署的功能至少包括:操作系统功能和通信功能;
保存模块,用于保存所述容器镜像,得到镜像文件,其中,所述镜像文件为允许迁移的文件。
7.如权利要求6所述的装置,其特征在于,所述装置还包括:
迁移模块,用于在保存所述容器镜像,得到镜像文件之后,将所述镜像文件迁移至其他运行环境中;
编译模块,用于所述其他运行环境中的进程启动时,使用所述镜像文件内的所述可执行文件和对应的动态库编译所述其他运行环境中的应用程序。
8.如权利要求6所述的装置,其特征在于,所述映射模块,用于:
利用编译安装工具或者脚本编译所述可执行文件和对应的动态库的安装选项,所述安装选项包括安装目录和动态库的依赖关系;
根据所述安装选项对所述可执行文件和对应的动态库进行镜像打包。
9.如权利要求7所述的装置,其特征在于,所述装置还包括:
设置模块,用于在所述其他运行环境中的进程启动之前,设置启动所述容器镜像的环境变量。
10.如权利要求6所述的装置,其特征在于,所述映射模块,还用于:
在所述容器镜像内预安装网络协议栈及所述网络协议栈的并行库。
11.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-5任一所述的程序的部署方法。
12.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5任一所述的程序的部署方法。
技术总结本发明公开了一种程序的部署方法、装置和计算机设备。其中,程序的部署方法包括:将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,其中,预先在容器镜像内部署的功能至少包括:操作系统功能和通信功能;保存容器镜像,得到镜像文件,其中,镜像文件为允许迁移的文件。本发明实施例的程序的部署方法、装置和计算机设备,通过将可执行文件和对应的动态库进行镜像打包,并将打包结果映射到容器镜像内,以及保存容器镜像,得到镜像文件,有效地降低了程序部署的难度,实现快速安装部署。
技术研发人员:解西国;韩孟之;孙建鹏
受保护的技术使用者:曙光信息产业(北京)有限公司
技术研发日:2019.09.12
技术公布日:2021.03.12