SkyForm任务调度系统技术速递(第一期)
Apptainer容器作业
Apptainer是专为HPC设计的容器技术,是Singularity容器技术的一个分支。它管理简便,不像Docker那样需要启动Linux服务(docker)。普通用户可以简便地上传容器镜像文件,让后直接使用。
AIP对Apptainer/Singularity作业的支持,尤其是MPI的支持进行了优化,保证多节点MPI作业在每个节点上只有一个容器。
Apptainer/Singularity的容器镜像可以轻易从Docker镜像库下拉。
对于Enterprise Linux (RHEL、CentOS、Oracle Linux、Rocky Linux等),Apptainer安装包下载路径为:
https://github.com/apptainer/apptainer/releases/download/v1.0.2/apptainer-1.0.2-1.x86_64.rpm
确保每台需要运行Apptainer作业的节点上都安装了以上的Apptainer软件包。
制作镜像文件
镜像文件制作需要root权限。系统管理员可以自行制作,然后把镜像文件放到共享文件系统中。用户也可在自己有root访问权限的Linux服务器上制作镜像,然后上传到自己的HOME目录中。
apptainer build centos7.sif docker:centos:7
容器制作的方法请参考Apptainer文档:https://apptainer.org/docs/user/main/
递交Apptainer简单作业
csub -I apptainer run /opt/containers/centos7.sif id
Job 4362 has been submitted to the default queue [medium].
Job 4362 is waiting to be started...
Job 4362 has started on host linux7.
uid=997(cadmin) gid=1006(grp_admin) groups=1006(grp_admin),1005(admin)
递交Apptainer MPI作业
AIP的MPI集成脚本impi-mpirun(支持Intel MPI、MPICH、MVAPICH)和ompi-mpirun(支持OpenMPI和IBM MPI)同时支持Apptainer容器作业。递交作业时有三个环境变量或csub参数可以使用:
环境变量 |
csub参数 |
描述 |
CB_SINGULARITY_IMAGE |
-Si |
指定Apptainer镜像文件绝对路径 |
CB_SINGULARITY_OPTIONS |
-So |
指定apptainer run命令行可选参数 |
APPTAINER_BIND |
-Sb |
指定容器中挂载主机上的目录(HOME不用挂载) |
例子:递交OpenMPI Apptainer作业,共需128个核,每个节点32个核,交互式作业, 作业输出文件为: 作业号.out:
source /opt/openmpi/openmpi.env
csub -Si /opt/containers/centos7.sif -Sb /opt/openmpi -n 128 -R map[perhost=32] -I -o %J.txt ompi-mpirun ./mympi_prog
同样的方法也可用于Intel MPI、MPICH、MVAPICH,只需把ompi-mpirun改成impi-mpirun。
在以上的例子中,AIP会用两个容器来运行作业,每个节点上一个apptainer容器,每个容器中运行32个MPI任务。
与普通MPI作业类似,AIP对整个作业在所有节点上的进程都进行监控,在杀死作业是确保所有节点上属于这个作业的进程都杀掉。
- 2022-03-22
- 2022-03-22
- 2022-03-22
- 2022-03-22
- 2022-03-18
- 2022-03-18