CN111221541A - 集群并行程序部署方法以及装置 - Google Patents
集群并行程序部署方法以及装置 Download PDFInfo
- Publication number
- CN111221541A CN111221541A CN201911368791.2A CN201911368791A CN111221541A CN 111221541 A CN111221541 A CN 111221541A CN 201911368791 A CN201911368791 A CN 201911368791A CN 111221541 A CN111221541 A CN 111221541A
- Authority
- CN
- China
- Prior art keywords
- parallel program
- mirror image
- library
- program
- container
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种集群并行程序部署方法以及装置,该集群并行程序部署方法包括:依次对所述并行程序的运行环境的多个程序库构建镜像,以生成运行环境的镜像;将所述运行环境的镜像作为基础镜像对所述并行程序构建镜像,以生成并行程序的镜像;将生成的所述并行程序的镜像部署到所需节点上。本发明有上述技术方案,提高了HPC应用分发和部署效率,解决了传统部署方式遇到的问题,简化了部署流程和难度。
Description
技术领域
本发明涉及高性能计算技术领域,具体来说,涉及一种集群并行程序部署方法以及装置。
背景技术
在高性能计算(High performance computing,HPC)中,MPI(Message PassingInterface,消息传递接口)是一种常用的编程接口。高性能计算中会有同时有大量的进程进行并行计算,进程间通过MPI进行消息通信和数据同步。MPI底层可以使用共享内存或Infiniband高速网络实现高效的节点内通信和节点间通信。
传统HPC并行程序一般采用源码包方式发布。要部署这些程序,首先要在高性能计算集群中安装相应的编译器、数学库以及MPI库,然后借助于编译脚本完成编译环境检测、处理器优化、底层通信优化,从而高效地利用高性能集群的计算能力进行加速。这些基础环境安装以及编译优化参数选择都对集群的使用者提出了越来越高的挑战。
近些年来,以docker为代表的容器技术得到了越来越广泛的应用。容器可以将应用及其运行环境(如动态库、配置文件等)一起打包到容器内,容器封装完成后可在各种Linux操作***版本下运行。容器技术基于Linux内核提供的cgroups和namespace技术,是一种轻量级的虚拟化技术。与常规的虚拟化技术相比,容器直接运行于宿主机的内核上,没有中间虚拟化层带来的性能损失,因此更加高效,适合于封装对性能敏感的HPC并行程序。容器可以实现秒级的启动速度,这大大优于虚拟机(一般启动需要几分钟)。另外,相比于虚拟机庞大的镜像文件(一般在几个GB以上),容器镜像文件更小,一般在几百MB左右,更加适合于应用发布。
docker作为容器技术的代表,近些年来在云计算等领域应用越来越广泛。在HPC领域,docker也被用来打包一些HPC应用。但docker的一些技术特点造成它不是HPC容器化部署的理想方法,docker容器的启动方式、镜像管理方式以及网络隔离等使它与传统HPC软件栈兼容性较差。
具体来说,docker使用Linux内核提供的cgroups和namespace实现了资源的限制和隔离,为容器内的应用提供了一套独立于宿主机的运行环境(如运行时库、网络栈等)。在资源隔离方面,docker应用了UTS、IPC、PID、NET等多种namespace,这使得基于docker容器在封装HPC应用在运行时会出现一些问题,与传统的HPC软件栈兼容较差,主要有以下几个问题:
docker使用了cgroups和namespace等技术进行资源的隔离,而HPC应用程序正与之相反,通过MPI等方式将计算整合在一起,实现大规模并行计算。过多的资源隔离使得docker在运行HPC应用时存在一些困难;
docker跨物理机通信方面配置复杂,不适合HPC应用并行通信。由于docker默认启用了网络隔离,即容器具有与宿主机独立的网络栈,当容器进行跨物理主机通信时,需要配置复杂的虚拟网卡(veth)和iptables规则,或者通过vxlan等方式通信。对于HPC应用,经常需要进行大规模跨节点并行计算。在运行HPC应用前,需要先配置好跨节点的容器通信,增加了应用的运行难度;
docker容器的启动方式与传统HPC应用并行启动方式兼容性较差。传统HPC应用一般通过MPI方式并行。应用运行时由MPI提供的进程管理器(一般为mpirun)负责在对应的节点启动应用进程。而docker容器启动通过docker run命令管理,与传统HPC应用启动方式兼容性较差;
docker镜像存放方式不适用于HPC集群。docker镜像采用分层管理方式,存放于本地磁盘上(一般在/var目录下)。HPC集群中,应用一般存放在共享存储***上,所有节点均挂载共享存储,实现一致的访问。镜像存储在本地磁盘首先会占用比较多的磁盘空间。另外,当本地磁盘上没有对应镜像时,需要到镜像仓库节点上去下载。当进行大规模并行计算时,大量的计算节点会同时到镜像仓库节点下载镜像,一方面造成应用启动缓慢,另外大规模的访问往往会导致镜像仓库节点崩溃,造成应用启动失败;
常规的HPC并行程序分发和部署一般采用源码包方式。安装和部署这一类应用需要在部署机器上安装相应的编译器、程序库文件等,来准备好应用的运行环境。通常这需要花费较多的时间,并且需要应用安装人员了解相关软件安装部署方法,对人员要求较高。
发明内容
针对相关技术中的上述问题,本发明提出一种集群并行程序部署方法以及装置,能够解决传统部署方式遇到的问题,简化集群并行程序部署流程和难度。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种集群并行程序部署方法,包括:
依次对并行程序的运行环境的多个程序库构建镜像,以生成运行环境的镜像;
将运行环境的镜像作为基础镜像对并行程序构建镜像,以生成并行程序的镜像;
将生成的并行程序的镜像部署到所需节点上。
根据本发明的实施例,多个程序库包括:应用软件栈中的***底层库、位于***底层库上层的Infiniband驱动层库、位于Infiniband驱动层库上层的编译器库、位于编译器库上层的MPI并行库、位于MPI并行库上层的数学库;其中,在应用软件栈中,并行程序位于多个程序库的上层。
根据本发明的实施例,依次对并行程序的运行环境的多个程序库构建镜像包括:安装Singularity容器;利用Singularity容器依次对多个程序库构建镜像。
根据本发明的实施例,对多个程序库构建镜像包括:对***底层库构建镜像,包括:使用Singularity容器的build命令读取Recipe文件,并执行Recipe文件的相应字段的命令以构建***底层库的镜像,其中,Recipe文件包括***底层库的镜像构建的流程。
根据本发明的实施例,对多个程序库构建镜像包括:对编译器库构建镜像,编译器可包括多种编译器器,包括:利用Recipe文件的%file字段,将打包的编译器文件复制到Singularity容器内的目录下;利用Recipe文件的%post字段安装配置编译器;利用Recipe文件的%environment字段配置Singularity容器内的与编译器相关的环境变量。
根据本发明的实施例,对多个程序库构建镜像,包括:对MPI并行库构建镜像,包括:利用Recipe文件的%file字段,将MPI源码包复制到Singularity容器内的目录下;利用Recipe文件的%post字段安装MPI源码包;利用Recipe文件的%environment字段配置与MPI相关的环境变量。
根据本发明的实施例,将运行环境的镜像作为基础镜像对并行程序构建镜像包括:利用Recipe文件指定运行环境的镜像为基础镜像;复制并行程序的源码包和编译配置文件;利用Recipe文件的%post字段执行并行程序的编译和安装。
根据本发明的另一方面,提供了一种集群并行程序部署装置,包括:
环境镜像构建模块,用于依次对并行程序的运行环境的多个程序库构建镜像,以生成运行环境的镜像;
应用镜像构建模块,用于将运行环境的镜像作为基础镜像对并行程序构建镜像,以生成并行程序的镜像;
部署模块,用于将生成的并行程序的镜像部署到所需节点上。
根据本发明的实施例,多个程序库包括:应用软件栈中的***底层库、位于***底层库上层的Infiniband驱动层库、位于Infiniband驱动层库上层的编译器库、位于编译器库上层的MPI并行库、位于MPI并行库上层的数学库;其中,在应用软件栈中,并行程序位于多个程序库的上层。
根据本发明的实施例,环境镜像构建模块包括:容器安装子模块,用于安装Singularity容器;镜像构建子模块,用于利用Singularity容器依次对多个程序库构建镜像。
本发明的上述技术方案,通过容器化部署方法将HPC并行程序及其依赖的环境打包为镜像,无需在部署机器上安装相关运行环境,无需执行编译过程,直接拷贝到目标机器上即可运行,提高了部署速度,降低了部署难度,无需执行复杂的编译过程,不需要处理编译链接过程中的各种错误,HPC并行程序镜像由HPC专业人员制作,镜像制作过程中进行编译优化,提高程序运行速度,容器化部署方式不会降低并行程序的运行速度,适合HPC应用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的集群并行程序部署方法的流程图;
图2是根据本发明实施例的HPC软件栈的结构示意图;
图3是根据本发明实施例的Singularity容器技术支持的镜像格式的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,根据本发明实施例的集群并行程序部署方法,包括以下步骤:
S12,依次对并行程序的运行环境的多个程序库构建镜像,以生成运行环境的镜像;
S14,将运行环境的镜像作为基础镜像对并行程序构建镜像,以生成并行程序的镜像;
S16,将生成的并行程序的镜像部署到所需节点上。
本发明有上述技术方案,提供了一种HPC集群并行程序部署方法,通过容器技术实现了HPC应用一次安装,到处运行,提高了HPC应用分发和部署效率。另外,还通过容器技术,HPC应用相关的工作流(如预处理、后处理等)可一起打包到容器中,方便了多种应用间的配合使用,解决了传统部署方式遇到的问题,简化了部署流程和难度。容器化部署方法将HPC并行程序及其依赖的环境打包为镜像,无需在部署机器上安装相关运行环境,无需执行编译过程,直接拷贝到目标机器上即可运行,提高了部署速度,降低了部署难度,无需执行复杂的编译过程,不需要处理编译链接过程中的各种错误,HPC并行程序镜像由HPC专业人员制作,镜像制作过程中进行编译优化,提高程序运行速度,容器化部署方式不会降低并行程序的运行速度,适合HPC应用。
在一些实施例中,本发明的集群并行程序部署方法利用Singularity容器技术来实现。解决了docker对HPC容器化遇到的问题,实现了HPC并行程序的容器化部署。
根据本发明的实施例,在步骤S12处,多个程序库可以包括:应用软件栈中的***底层库、位于***底层库上层的Infiniband驱动层库、位于Infiniband驱动层库上层的编译器库、位于编译器库上层的MPI并行库、位于MPI并行库上层的数学库;其中,在应用软件栈中,并行程序位于多个程序库的上层。
如图2所示,是典型的HPC应用软件栈。HPC应用运行依赖于一些程序库,这些程序库主要包括数学库(blas、lapack、fftw等),MPI并行库(intelMPI、openMPI等实现形式),编译器相关的库(intel编译器、gcc编译器等)。另外MPI库为利用Infiniband网络通信还需要Infiniband网络相关的用户态的库。最后,所有的程序和程序库一般都依赖于***底层库(例如glibc等)。由于Singularity容器与主机共用操作***内核,物理主机加载好设备的驱动程序(内核模块)后,容器内的应用可直接使用该设备,不需要在容器内再加载对应的内核模块。根据容器的这些特点,所有运行于内核之上的程序和程序库(图中虚线以上的部分)都需要打包到Singularity容器镜像中。由于HPC软件栈呈现下图所示的分层结构,可以根据如下分层结构来依次构建镜像,最终完成镜像打包。
在一些实施例中实施例,在步骤S12处,安装Singularity容器;利用Singularity容器依次对多个程序库构建镜像。
根据本发明的实施例,在步骤S12处,对多个程序库构建镜像包括:对***底层库构建镜像,包括:使用Singularity容器的build命令读取Recipe文件,并执行Recipe文件的相应字段的命令以构建***底层库的镜像,其中,Recipe文件包括***底层库的镜像构建的流程。
根据本发明的实施例,在步骤S12处,对多个程序库构建镜像包括:对编译器库构建镜像,编译器可包括多种编译器,包括:利用Recipe文件的%file字段,将打包的编译器文件复制到Singularity容器内的目录下;利用Recipe文件的%post字段安装配置编译器;利用Recipe文件的%environment字段配置Singularity容器内的与编译器相关的环境变量。
根据本发明的实施例,在步骤S12处,对多个程序库构建镜像,包括:对MPI并行库构建镜像,包括:利用Recipe文件的%file字段,将MPI源码包复制到Singularity容器内的目录下;利用Recipe文件的%post字段安装MPI源码包;利用Recipe文件的%environment字段配置与MPI相关的环境变量。
根据本发明的实施例,在步骤S14处,将运行环境的镜像作为基础镜像对并行程序构建镜像包括:利用Recipe文件指定运行环境的镜像为基础镜像;复制并行程序的源码报和编译配置文件;利用Recipe文件的%post字段执行并行程序的编译和安装。
以下将介绍Singularity容器的安装方法,Singularity容器使用Infiniband/OPA高速网络进行跨节点通信的方法,Singularity容器内安装MPI并行库以及利用Singularity容器对HPC应用容器化部署方法。下面首先介绍Singularity的安装方法,然后介绍各层镜像的构建方法。
Singularity安装
Singularity以源码包的形式发布,首先到Singularity网站(https://github.com/Singularityware/Singularity)下载源码包。然后执行如下命令编译安装:
tar xvf singularity-2.4.2.tar.gz
cd singularity-2.4.2
./configure--prefix=/public/software/apps/singularity/2.4.2
make
make install
也可以使用rpmbuild命令生成rpm包,使用rpm命令安装,命令如下:
#指定rpm包安装路径
PREFIX=/opt/Singularity
rpmbuild-ta--define="_prefix$PREFIX"--define"_sysconfdir$PREFIX/etc"--define"_defaultdocdir$PREFIX/share"singularity-2.4.2.tar.gz
制作好的PRM包可以在/root/rpmbuild/RPMS/x86-64下找到,执行yum install命令完成安装。
singularity-2.4.2-1.el7.x86_64.rpm
singularity-devel-2.4.2-1.el7.x86_64.rpm
singularity-debuginfo-2.4.2-1.el7.x86_64.rpm
singularity-runtime-2.4.2-1.el7.x86_64.rpm
yum install Singularity*
***底层镜像构建
如图3所示,Singularity支持多种镜像格式,例如ext3、sandbox、squashfs。其中sandbox为包含镜像根文件***目录,ext3为文件***为ext3格式的镜像文件,以上两种格式是可编辑的,占用空间比加大。镜像修改完成后,可以创建为只读的squashfs格式,镜像会大大压缩,方便进行应用分发。Squashfs也是Singularity 2.4版本后默认的镜像格式。
Singularity使用build命令来完成镜像构建过程。build命令可以是docker镜像、本地容器、本地压缩包以及Recipe文件。其中Recipe文件与docker中的dockerfile类似。Recipe文件定义了bootstrap、%setup、%post、%files、%environment、%runscript等字段,这些字段规定了创建镜像的方式、创建镜像时执行的脚本、需要复制的文件、环境变量设置、容器启动默认程序等。build命令会读取Recipe文件,执行相应字段规定的命令完成镜像创建。由于Recipe文件包含了镜像创建的所有流程,是一种很好的镜像创建手段。
***底层镜像包括***基础库(例如glibc)和Infiniband网络相关的库。在一个实施例中,基于Centos7.4***构建镜像,在镜像中安装Infiniband网络驱动。下面是构建镜像使用的Recipe文件。
在Recipe文件的BootStrap字段中指定使用Centos:7.4.1708的docker镜像为基础镜像,%file字段中指定将Infiniband驱动文件拷贝到容器内的/tmp目录下。然后,在%post字段中指定构建镜像时要执行的命令,主要操作有配置好驱动yum源,然后安装Infiniband驱动用户态相关的rpm包(主要有libibverbs、rdma等)。镜像创建完成后执行%test字段规定的命令。在本实施例中,镜像创建完成后执行ibstat,检查在容器中是否可使用Infiniband网络。
将上述Recipe文件保存为ib_mlnx.def,执行如下命令完成镜像创建工作,镜像保存为/public/Singularity/images/ib_mlnx.img。
Singularity build/public/Singularity/images/ib_mlnx.img ib_mlnx.def
至此,包括Infiniband驱动的***基础镜像创建完成。
编译器镜像构建
接下来基于***基础镜像完成编译器镜像构建过程。GNU编译器在一般的linux发行版本中都有包含,可使用yum命令安装。对于Intel编译器,首先提取编译器相关的二进制文件和函数库,打包为压缩文件,然后打包到镜像中即可。Intel编译器中包含了MKL数学库,可随编译器一起打包到镜像中。
使用下面的Recipe文件完成镜像构建。首先在BootStrap字段中指定基于本地镜像构建,使用之前创建的基础镜像ib_mlnx.img,然后在%file字段中指定将打包好了Intel编译器复制到容器内的/opt目录下。在%post部分执行yum命令安装GNU编译器,并把Intel编译器压缩包展开。最后在%environment字段中配置容器内的环境变量,将编译器相关的二进制文件、头文件和库文件加入***PATH,INCLUDE,LIBRARY_PATH和LD_LIBRARY_PATH等环境变量中。
将上述文件保存为intel.def,执行如下命令完成编译器镜像构建。
Singularity build/public/Singularity/images/intel.img intel.def
MPI镜像构建
对于HPC应用,MPI是一种常用的并行方式。MPI镜像镜像基于之前完成的编译器镜像构建,在镜像中打包了OpenMPI。其他版本的MPI也可参考OpenMPI的方法创建。
下面是创建镜像使用的Recipe文件。首先在Bootstrap字段中指定使用本地镜像,使用之前完成的intel.img。然后在%file部分指定将openMPI源码包拷贝到容器内的/mnt目录。接下来在%post字段中执行openMPI的编译安装过程。最后在%environment字段中配置相关的环境变量。
将上述文件保存为openmpi.def,然后执行如下命令完成镜像构建工作。
Singularity build/public/Singularity/images/openmpi.img openmpi.def
HPC应用镜像构建
执行完上面几个步骤后,Singularity容器镜像内已打包Infiniband通信库、编译器(包含数学库)和MPI库等,具备了HPC应用的完整环境,可进行HPC应用安装和镜像构建。
在本实施例中,以HPC的典型应用HPL为例,介绍HPC应用镜像的构建方法。下面是创建镜像使用的Recipe文件。首先指定使用之前完成的openmpi.img作为基础镜像,然后将HPL源码包HPL-2.2.tar.gz和编译配置文件Make.intel复制到镜像内,执行%post目录的脚本可完成HPL的编译安装工作。
将上述文件保存为hpl.def,然后执行如下命令完成镜像创建工作。
Singularity build/public/singualarity/images/hpl.img hpl.def
至此,完成了HPL的镜像创建工作。由于镜像内已包含了运行HPL所有的软件环境,镜像创建完成后,可直接将镜像文件拷贝到要其他节点即可完成HPL的部署工作,不需要执行复杂的编译安装流程。对于其他HPC应用,可参考HPL应用的方法,实现HPC并行程序容器化部署。
本发明提出的HPC并行程序容器化部署方法解决了传统部署方式遇到的问题,简化了部署流程和难度。以以上制作完成的HPL应用镜像为例,直接将hpl.img拷贝到目标机器上即可完成应用部署。执行如下命令即可运行容器内的HPL程序。
Singularity exec/public/Singularity/images/hpl.img xhpl
对于使用作业调度***的HPC集群,可使用如下slurm脚本完成HPL计算任务的提交。在slurm作业提交脚本中指定使用2个节点,每个节点运行24个进行,使用srun命令完成HPL进程启动。
#!/bin/bash
#SBATCH-J HPL
#SBATCH-N 2
#SBATCH--ntasks-per-node=24
#SBATCH-p test
srun--MPI=pmi2 singularity exec/public/Singularity/images/hpl.imgxhpl
对于HPC并行程序,程序的计算效率非常重要。所以常规的虚拟化技术虽然可减少部署难度,但HPC并行程序在虚拟机中运行有较大的性能损失。与之对应的,Singularity容器内的应用直接运行与主机内核之上,性能损失几乎可忽略不计。下表比较了容器内运行的HPL和物理主机上直接运行HPL的效率对比。
可以看到容器内运行的HPL在进行跨节点并行计算效率与物理主机上运行的效率几乎没有差别。本发明提供的集群并行程序部署方法合适作为HPC并行程序的分发和部署方法。
根据本发明的实施例,还提供了一种集群并行程序部署装置。在一些实施例中,集群并行程序部署装置用于执行上述的集群并行程序部署方法。集群并行程序部署装置可以包括:
环境镜像构建模块,用于依次对并行程序的运行环境的多个程序库构建镜像,以生成运行环境的镜像;
应用镜像构建模块,用于将运行环境的镜像作为基础镜像对并行程序构建镜像,以生成并行程序的镜像;
部署模块,用于将生成的并行程序的镜像部署到所需节点上。
在一个实施例中,多个程序库包括:应用软件栈中的***底层库、位于***底层库上层的Infiniband驱动层库、位于Infiniband驱动层库上层的编译器库、位于编译器库上层的MPI并行库、位于MPI并行库上层的数学库;其中,在应用软件栈中,并行程序位于多个程序库的上层。
在一个实施例中,环境镜像构建模块包括:容器安装子模块,用于安装Singularity容器;镜像构建子模块,用于利用Singularity容器依次对多个程序库构建镜像。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种集群并行程序部署方法,其特征在于,包括:
依次对所述并行程序的运行环境的多个程序库构建镜像,以生成运行环境的镜像;
将所述运行环境的镜像作为基础镜像对所述并行程序构建镜像,以生成并行程序的镜像;
将生成的所述并行程序的镜像部署到所需节点上。
2.根据权利要求1所述的集群并行程序部署方法,其特征在于,所述多个程序库包括:应用软件栈中的***底层库、位于所述***底层库上层的Infiniband驱动层库、位于所述Infiniband驱动层库上层的编译器库、位于所述编译器库上层的MPI并行库、位于所述MPI并行库上层的数学库;
其中,在所述应用软件栈中,所述并行程序位于所述多个程序库的上层。
3.根据权利要求1所述的集群并行程序部署方法,其特征在于,依次对所述并行程序的运行环境的多个程序库构建镜像,包括:
安装Singularity容器;
利用所述Singularity容器依次对所述多个程序库构建镜像。
4.根据权利要求2所述的集群并行程序部署方法,其特征在于,对所述多个程序库构建镜像,包括:
对所述***底层库构建镜像,包括:
使用Singularity容器的build命令读取Recipe文件,并执行所述Recipe文件的相应字段的命令以构建所述***底层库的镜像,其中,所述Recipe文件包括所述***底层库的镜像构建的流程。
5.根据权利要求2所述的集群并行程序部署方法,其特征在于,对所述多个程序库构建镜像,包括:
对所述编译器库构建镜像,所述编译器可包括多种编译器,包括:
利用Recipe文件的%file字段,将打包的编译器文件复制到所述Singularity容器内的目录下;
执行Recipe文件的%post字段命令安装配置编译器;
利用Recipe文件的%environment字段配置所述Singularity容器内的与所述编译器相关的环境变量。
6.根据权利要求2所述的集群并行程序部署方法,其特征在于,对所述多个程序库构建镜像,包括:
对所述MPI并行库构建镜像,包括:
利用Recipe文件的%file字段,将MPI源码包复制到所述Singularity容器内的目录下;
利用Recipe文件的%post字段安装所述MPI源码包;
利用Recipe文件的%environment字段配置与所述MPI相关的环境变量。
7.根据权利要求1所述的集群并行程序部署方法,其特征在于,将所述运行环境的镜像作为基础镜像对所述并行程序构建镜像,包括:
利用Recipe文件指定所述运行环境的镜像为基础镜像;
复制所述并行程序的源码报和编译配置文件;
利用Recipe文件的%post字段执行所述并行程序的编译和安装。
8.一种集群并行程序部署装置,其特征在于,包括:
环境镜像构建模块,用于依次对所述并行程序的运行环境的多个程序库构建镜像,以生成运行环境的镜像;
应用镜像构建模块,用于将所述运行环境的镜像作为基础镜像对所述并行程序构建镜像,以生成并行程序的镜像;
部署模块,用于将生成的所述并行程序的镜像部署到所需节点上。
9.根据权利要求8所述的集群并行程序部署装置,其特征在于,所述多个程序库包括:应用软件栈中的***底层库、位于所述***底层库上层的Infiniband驱动层库、位于所述Infiniband驱动层库上层的编译器库、位于所述编译器库上层的MPI并行库、位于所述MPI并行库上层的数学库;
其中,在所述应用软件栈中,所述并行程序位于所述多个程序库的上层。
10.根据权利要求9所述的集群并行程序部署装置,其特征在于,所述环境镜像构建模块包括:
容器安装子模块,用于安装Singularity容器;
镜像构建子模块,用于利用所述Singularity容器依次对所述多个程序库构建镜像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911368791.2A CN111221541A (zh) | 2019-12-26 | 2019-12-26 | 集群并行程序部署方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911368791.2A CN111221541A (zh) | 2019-12-26 | 2019-12-26 | 集群并行程序部署方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111221541A true CN111221541A (zh) | 2020-06-02 |
Family
ID=70827824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911368791.2A Withdrawn CN111221541A (zh) | 2019-12-26 | 2019-12-26 | 集群并行程序部署方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111221541A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445595A (zh) * | 2020-11-26 | 2021-03-05 | 深圳晶泰科技有限公司 | 基于slurm计算平台的多任务提交*** |
CN112463123A (zh) * | 2020-11-25 | 2021-03-09 | 北京字跳网络技术有限公司 | 任务编译方法、装置、网络节点、***及存储介质 |
CN113076109A (zh) * | 2021-04-08 | 2021-07-06 | 成都安恒信息技术有限公司 | 一种跨平台的部署脚本语言的方法 |
CN113835683A (zh) * | 2021-09-17 | 2021-12-24 | 博锐尚格科技股份有限公司 | 一种目标程序的镜像制作方法和装置 |
CN115102851A (zh) * | 2022-08-26 | 2022-09-23 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种面向hpc与ai融合计算的融合平台及其资源管理方法 |
CN117407008A (zh) * | 2023-12-14 | 2024-01-16 | 之江实验室 | 一种面向微小型数据中心的***组件集群部署方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404385A (zh) * | 2011-10-25 | 2012-04-04 | 华中科技大学 | 面向高性能计算的虚拟集群部署***和部署方法 |
CN109034386A (zh) * | 2018-06-26 | 2018-12-18 | 中国科学院计算机网络信息中心 | 一种基于资源调度器的深度学习***及其方法 |
WO2019153829A1 (zh) * | 2018-02-12 | 2019-08-15 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及*** |
CN110543311A (zh) * | 2019-09-05 | 2019-12-06 | 曙光信息产业(北京)有限公司 | 一种镜像构建方法、装置及存储介质 |
CN106776005B (zh) * | 2016-11-23 | 2019-12-13 | 华中科技大学 | 一种面向容器化应用的资源管理***及方法 |
-
2019
- 2019-12-26 CN CN201911368791.2A patent/CN111221541A/zh not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404385A (zh) * | 2011-10-25 | 2012-04-04 | 华中科技大学 | 面向高性能计算的虚拟集群部署***和部署方法 |
CN106776005B (zh) * | 2016-11-23 | 2019-12-13 | 华中科技大学 | 一种面向容器化应用的资源管理***及方法 |
WO2019153829A1 (zh) * | 2018-02-12 | 2019-08-15 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及*** |
CN109034386A (zh) * | 2018-06-26 | 2018-12-18 | 中国科学院计算机网络信息中心 | 一种基于资源调度器的深度学习***及其方法 |
CN110543311A (zh) * | 2019-09-05 | 2019-12-06 | 曙光信息产业(北京)有限公司 | 一种镜像构建方法、装置及存储介质 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463123A (zh) * | 2020-11-25 | 2021-03-09 | 北京字跳网络技术有限公司 | 任务编译方法、装置、网络节点、***及存储介质 |
CN112463123B (zh) * | 2020-11-25 | 2023-07-14 | 北京字跳网络技术有限公司 | 任务编译方法、装置、网络节点、***及存储介质 |
CN112445595A (zh) * | 2020-11-26 | 2021-03-05 | 深圳晶泰科技有限公司 | 基于slurm计算平台的多任务提交*** |
CN113076109A (zh) * | 2021-04-08 | 2021-07-06 | 成都安恒信息技术有限公司 | 一种跨平台的部署脚本语言的方法 |
CN113076109B (zh) * | 2021-04-08 | 2023-07-04 | 成都安恒信息技术有限公司 | 一种跨平台的部署脚本语言的方法 |
CN113835683A (zh) * | 2021-09-17 | 2021-12-24 | 博锐尚格科技股份有限公司 | 一种目标程序的镜像制作方法和装置 |
CN115102851A (zh) * | 2022-08-26 | 2022-09-23 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种面向hpc与ai融合计算的融合平台及其资源管理方法 |
CN117407008A (zh) * | 2023-12-14 | 2024-01-16 | 之江实验室 | 一种面向微小型数据中心的***组件集群部署方法及装置 |
CN117407008B (zh) * | 2023-12-14 | 2024-04-19 | 之江实验室 | 一种面向微小型数据中心的***组件集群部署方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111221541A (zh) | 集群并行程序部署方法以及装置 | |
CN110543311B (zh) | 一种镜像构建方法、装置及存储介质 | |
US9959105B2 (en) | Configuration of an application in a computing platform | |
US20210349706A1 (en) | Release lifecycle management system for multi-node application | |
US9170797B2 (en) | Automated deployment of an application in a computing platform | |
KR102370568B1 (ko) | 모놀리식 레거시 애플리케이션들에 기초한 마이크로서비스들의 컨테이너화된 전개 | |
US9262238B2 (en) | Connection management for an application in a computing platform | |
US9413819B1 (en) | Operating system interface implementation using network-accessible services | |
CN112416524A (zh) | 基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置 | |
US20200034167A1 (en) | Automatic application migration across virtualization environments | |
US20100205604A1 (en) | Systems and methods for efficiently running multiple instances of multiple applications | |
US9965307B2 (en) | Building virtual appliances | |
CN109799998B (zh) | OpenStack集群配置及批量部署方法及*** | |
CN111061487A (zh) | 一种基于容器的负载均衡分布式编译***和方法 | |
CN111610985A (zh) | 一种国产平台上的kubernetes集群快速部署方法 | |
Piras et al. | Container orchestration on HPC clusters | |
CN117112122A (zh) | 一种集群部署方法和装置 | |
WO2002075541A3 (en) | Method and apparatus for providing application specific strategies to a java platform including start and stop policies | |
CN113407257A (zh) | Mysql集群部署方法、装置、电子设备及存储介质 | |
Jung et al. | Oneos: Middleware for running edge computing applications as distributed posix pipelines | |
CN115145604A (zh) | 一种容器化的电力营销***部署方法 | |
Sethi et al. | Rapid deployment of SOA solutions via automated image replication and reconfiguration | |
CN111008043A (zh) | 一种云平台的服务器启动方法及终端 | |
Sekigawa et al. | Web Application-Based WebAssembly Container Platform for Extreme Edge Computing | |
RU2521265C2 (ru) | Система и способ автоматической обработки системных ошибок программного обеспечения |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200602 |
|
WW01 | Invention patent application withdrawn after publication |