跳转至

Lammps编译安装

环境:235集群,Rocky Linux 8.6,Slurm作业管理系统,Intel oneAPI 2022.01编译器

下载源码包

使用wget在Lammps下载官网下载稳定版 直接使用wget下载https链接会报证书错误,需要加--no-check-certificate参数,或者进行如下操作:

[userA@quantum ~]$ echo "check-certificate = off" > ~/.wgetrc
然后使用wget下载、解压
[userA@quantum ~]$ cd chemsoft/
[userA@quantum chemsoft]$ wget https://download.lammps.org/tars/lammps-stable.tar.gz
[userA@quantum chemsoft]$ tar -zxvf lammps-stable.tar.gz
[userA@quantum chemsoft]$ cd lammps-23Jun2022/

salloc申请编译计算节点

集群管理节点一般做了限制,不允许在上面直接运行作业或编译,我们也没专门设置编译节点,因此需要在计算节点上编译。为避免正常作业与编译抢占CPU,我们把编译也按正常作业提交即可。

[userA@quantum lammps-23Jun2022]$ salloc -N 1 -n 4 -p lzl-grp -w node27
-N 申请的计算节点数目;-n 申请的任务核数;-p 申请的作业队列;-w 申请的计算节点名称。 账号可使用队列的名称:可使用sacctmgr show ass user=$(whoami) format=part查看。队列所对应的节点可用sinfo或者pestat命令查看。 这里我们申请一个计算节点,4核,使用lzl-grp队列,申请计算节点为node27.
[userA@quantum lammps-23Jun2022]$ qa
 JOBID NAME           USER ST         TIME TIME_LIMIT   NODES   CPUS    PARTITION NODELIST(REASON)
 31834 interactive   userA  R        49:05 UNLIMITED        1      4      lzl-grp node27
使用qa命令可查看申请作业的运行状态,JOBID为31834。

编译Lammps

先ssh到申请的计算节点

[userA@quantum lammps-23Jun2022]$ ssh node27
在src目录下执行需要安装的package
[userA@node27 ~]$ cd chemsoft/lammps-23Jun2022/src/
[userA@node27 src]$ make clean-all
[userA@node27 src]$ make yes-all
[userA@node27 src]$ make no-lib
make yes-all命令代表编译Lammps时安装所有包;make no-lib命令是取消需要外链的包。 在src目录下可执行make package-status查看选择了哪些包安装(yes)哪些没安装(no)。 刷新Intel oneAPI的环境变量
[userA@node27 src]$ source /opt/intel/oneapi/setvars.sh
使用make进行编译,-j后的数字代表多核并行编译,这里用salloc申请的4核。
[userA@node27 src]$ make -j 4 intel_cpu_intelmpi &>make.log &
正常编译完成后会再src目录下生成lmp_intel_cpu_intelmpi二进制可执行文件。 退出编译的计算节点,并杀掉申请的作业号。
[userA@node27 src]$ exit
[userA@quantum lammps-23Jun2022]$ scancel 31834
salloc: Job allocation 31834 has been revoked.
[userA@quantum lammps-23Jun2022]$ qa
 JOBID NAME           USER ST         TIME TIME_LIMIT   NODES   CPUS    PARTITION NODELIST(REASON)

Lammps的提交脚本

[userA@quantum lammps]$ cat test.sh 
#!/bin/bash
# Job submission script for SLURM:
# Usage: sbatch <this_script>
#
#SBATCH -J test
#SBATCH -o test.o%J
##SBATCH -e test.e
#SBATCH -N 1
#SBATCH --ntasks-per-node=8
#SBATCH -t 2022:06:00
#SBATCH -p sunh-grp
#############################################################################
#    -J: name of job
#    -o: file for batch script's standard output
#    -e: file for batch script's standard error
#    -N: number of nodes on which to run (N = min[-max])
#    -n: number of tasks to run
#    -t: time limit
#    -p: partition requested
#    -w: request a specific list of hosts
#############################################################################

# go to work dir
cd $SLURM_SUBMIT_DIR

# The program we want to execute
EXEC=/home/userA/chemsoft/lammps-23Jun2022/lmp_intel_cpu_intelmpi

# export the environment variables of Intel oneAPI
source /opt/intel/oneapi/setvars.sh

echo "Starting LAMMPS run at" `date`

# running program
time mpiexec.hydra -n $SLURM_NTASKS $EXEC -in test.lj

echo "Finished LAMMPS run at" `date`
echo "Work Dir is : $SLURM_SUBMIT_DIR"
当前目录下有test.lj输入文件和test.sh作业提交脚本,使用sbatch test.sh提交作业
[userA@quantum lammps]$ ll
total 8
-rw-r--r-- 1 userA ifmc  639 Sep 27  2022 test.lj
-rw-r--r-- 1 userA ifmc 1260 Sep 27  2022 test.sh
[userA@quantum lammps]$ sbatch test.sh 
Submitted batch job 31850
[userA@quantum lammps]$ qa
 JOBID NAME           USER ST         TIME TIME_LIMIT   NODES   CPUS    PARTITION NODELIST(REASON)
 31850 test          userA  R         0:04 84-06:06:00      1      8     sunh-grp node33

参考

  1. 使用Intel oneAPI编译运行LAMMPS
  2. 超简单LAMMPS 安装教程 centos系统
本文阅读量  次
本站总访问量  次