Singularity容器简介
Singularity 旨在以简单、可移植和可重现的方式在 HPC 集群上运行复杂的应用程序。可以在笔记本电脑上使用 Singularity 构建容器,然后在大型 HPC 集群、本地大学或公司的HPC集群、单个服务器、云平台的虚拟机集群上运行。
Singularity容器的主要特点有:
- Singularity容器的镜像文件是SIF(Singularity Image File)格式只读(read-only)文件
- 没有daemon管理进程,不由 daemon 进程代为执行启动容器等指令
- Singularity容器的用户权限、网络等均直接继承宿主机配置
- 支持root用户和非root用户启动Singularity容器,且容器启动前后,用户上下文保持不变,容器内部和外部都是相同的用户
常用的Singularity镜像仓库有:
- Sylabs Cloud
https://cloud.sylabs.io/library
如:singularity pull ubuntu.sif library://library/default/ubuntu:21.04
- Docker Hub 是 Docker 的镜像云平台,singularity 程序会将 docker 格式转换为 singularity 使用的 .sif 格式
如:singularity pull ubuntu.sif docker://ubuntu:latest
- Singularity Hub
如:singularity pull singularity-images.sif shub://vsoch/singularity-images
- 支持 ORAS 的 OCI 镜像云平台
如:singularity pull image.sif oras://registry/namespace/image:tag
安装Singularity组件
环境:ubuntu 20.04
1.安装依赖
# Ensure repositories are up-to-date
sudo apt-get update
# Install debian packages for dependencies
sudo apt-get install -y \
build-essential \
libseccomp-dev \
pkg-config \
squashfs-tools \
cryptsetup
2.安装Go
export VERSION=1.17.2 OS=linux ARCH=amd64
wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz
sudo tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz
rm go$VERSION.$OS-$ARCH.tar.gz
echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
3.安装singularity
export VERSION=3.9.2
wget https://github.com/sylabs/singularity/releases/download/v${VERSION}/singularity-ce-${VERSION}.tar.gz
tar -xzf singularity-ce-${VERSION}.tar.gz
cd singularity-ce-${VERSION}
./mconfig
make -C builddir
sudo make -C builddir install
运行Lammps
1. 下载lammps镜像
sudo singularity pull --arch amd64 library://hpc/default/lammps:latest
2. 准备作业的数据文件
sudo mkdir /data
sudo vi in.lj
文件内容:
# 3d Lennard-Jones melt
units lj
atom_style atomic
lattice fcc 0.8442
region box block 0 80 0 80 0 80
create_box 1 box
create_atoms 1 box
mass 1 1.0
velocity all create 1.44 87287 loop geom
pair_style lj/cut 2.5
pair_coeff 1 1 1.0 1.0 2.5
neighbor 0.3 bin
neigh_modify delay 5 every 1
fix 1 all nve
run 100
3. 运行lammps作业
sudo singularity exec --bind /data:/data library://hpc/default/lammps:latest mpirun -np 4 /lammps/lmp_intel_cpu_intelmpi -in /data/in.lj
参考文档
https://docs.sylabs.io/guides/3.7/user-guide/
https://blog.csdn.net/lovebaby1689/article/details/124255677
https://docs.lammps.org/Run_basics.html
http://docs.hpc.whu.edu.cn/files/whuhpcdocs.wiki/sbatch/singularity.html