HPC断点续算计算方案
操作场景
在HPC领域很多应用本身是支持断点续算功能的,例如LAMMPS, GROMACS。同时HPC常用的调度软件也对断点续算有集成支持,如PBS、Slurm与LSF等。
本节以LAMMPS为例,介绍如何在HPC进行断点续算。
步骤1 安装FFTW
依次执行以下命令,安装FFTW软件。
yum install gcc-gfortran gcc-c++
wget http://www.fftw.org/fftw-3.3.8.tar.gz
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/mpi/gcc/openmpi-2.1.2a1/lib64/
export PATH=/usr/mpi/gcc/openmpi-2.1.2a1/bin:$PATH
tar -zxvf fftw-3.3.8.tar.gz
cd fftw-3.3.8/
./configure --prefix=/opt/fftw CC=gcc MPICC=mpicc --enable-mpi --enable-openmp --enable-threads --enable-avx --enable-shared
make && make install
步骤2 安装lammps
步骤3 配置lammps
- 算例输入文件。
以melt为例,生成一个算例melt.in文件。设置每迭代100步生成一个checkpoint文件,假定该文件存放在共享目录“/share”中。内容如下:
# 3d Lennard-Jones melt units lj atom_style atomic lattice fcc 0.8442 region box block 0 20 0 20 0 20 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 dump 1 all xyz 100 /share/sample.xyz run 10000 every 100 "write_restart /share/lennard.restart"
- 生成用于checkpoint续算的输入文件“melt.restart.in”,内容如下:
# 3d Lennard-Jones melt read_restart /share/lennard.restart run 10000 every 100 "write_restart /share/lennard.restart"
- 生成pbs作业脚本“job.pbs”,内容如下:
#!/bin/sh #PBS -l ncpus=2 #PBS -o lammps_pbs.log #PBS -j oe export PATH=/usr/mpi/gcc/openmpi-2.1.2a1/bin:$PATH export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/mpi/gcc/openmpi-2.1.2a1/lib64/module if [ ! -e "/share/lennard.restart" ]; then echo "run at the beginning" mpiexec --allow-run-as-root -np 2 /share/lmp_mpi -in /share/melt.in else echo "run from the last checkpoint" mpiexec --allow-run-as-root -np 2 /share/lmp_mpi -in /share/melt.restart.in fi
步骤4 提交作业,且运行期间无中断
在不中断作业的情况下,提交作业并运行,查看作业运行时间。
- 执行以下命令,提交作业。
- 作业运行结束后,执行以下命令,查看作业信息。
如图3所示,可以看到作业一共运行了4分10秒。
步骤5 提交作业,模拟计算中断,使用断点续算模式完成计算
模拟作业中断情况:提交作业后,通过关机计算节点的方式手动中断作业,查看中断前、后作业运行时间。