LAMMPS¶
简介¶
LAMMPS 是大规模原子分子并行计算代码,在原子、分子及介观体系计算中均有重要应用,并行效率高,广泛应用于材料、物理、化学等模拟。
可用的版本
集群 | 平台 | 版本 | 模块名 |
---|---|---|---|
飞马一号 | CPU | 20230328 | lammps/20230328-intel-2021.4.0-omp |
飞马一号 | CPU | 20220324 | lammps/20220324-intel-2021.4.0-omp |
飞马一号 | CPU | 20210310 | lammps/20210310-intel-2021.4.0-omp |
飞马一号 | GPU | 20230802 | lammps/20230802-intel-2021.4.0-gpu |
襄阳超算 | CPU |
飞马一号上的LAMMPS¶
- 全局部署版本
本版本支持 intel 加速。对于大部分势函数(eam, lj 等),均推荐使用 intel 加速,计算速度可提升数倍。具体测评和支持范围请见官方文档:LAMMPS INTEL package
使用 intel 加速的 slurm 脚本示例:
#!/bin/bash
#SBATCH --job-name=lmp_test
#SBATCH --partition=64c512g
#SBATCH -N 2
#SBATCH --ntasks-per-node=64
#SBATCH --output=%j.out
#SBATCH --error=%j.err
module load lammps/20230328-intel-2021.4.0-omp
mpirun lmp -pk intel 0 omp 2 -sf intel -i in.lj
注意:若体系不支持 intel package,请使用如下 slurm 脚本:
#!/bin/bash
#SBATCH --job-name=lmp_test
#SBATCH --partition=64c512g
#SBATCH -N 2
#SBATCH --ntasks-per-node=64
#SBATCH --output=%j.out
#SBATCH --error=%j.err
module load lammps/20230328-intel-2021.4.0-omp
mpirun lmp -i in.lj
- 自行编译 LAMMPS
LAMMPS 自行编译十分容易。下面以在思源一号上为例介绍 LAMMPS 安装
1.申请计算节点资源用来编译 LAMMPS,并请注意在全部编译结束后退出:
srun -p 64c512g -n 4 --pty /bin/bash
2.从官网获得最新的 LAMMPS,推荐下载最新的版本
wget https://lammps.sandia.gov/tars/lammps-stable.tar.gz
3.加载 Intel oneapi 模块:
module load oneapi/2021.4.0
4.编译 (以额外安装 MANYBODY, MEAM, RIGID 和 Intel 加速包为例)
$ tar xvf lammps-stable.tar.gz
$ cd lammps-XXXXXX
$ cd src
$ make #查看编译选项
$ make package #查看可用的包
$ make yes-intel yes-manybody yes-meam yes-rigid #添加所需的包
$ make ps #查看计划安装的包列表
$ make -j 4 oneapi #开始编译
5.环境设置
编译成功后,src 文件夹下将生成可执行文件 lmp_oneapi
为了便于后续调用,一个简单的方法是将该文件移至 ~/bin 文件夹:
$ mkdir ~/bin
$ cp lmp_oneapi ~/bin
至此安装和设置完成。如下是计算时所需的 slurm 脚本:
#!/bin/bash
#SBATCH --job-name=lmp
#SBATCH --partition=64c512g
#SBATCH -N 2
#SBATCH --ntasks-per-node=64
#SBATCH --output=%j.out
#SBATCH --error=%j.err
ulimit -s unlimited
ulimit -l unlimited
module load oneapi/2021.4.0
export PATH=~/bin:$PATH
mpirun lmp_oneapi -pk intel 0 omp 2 -sf intel -i in.lj
# 若势函数等体系不支持intel加速,则使用下方语句:
# mpirun lmp_oneapi -i in.lj
运行结果(单位为:秒,越低越好)
lammps/20230328-intel-2021.4.0-omp
核数 | 64 | 128 | 192 |
---|---|---|---|
Wall time | 0:01:57 | 0:01:01 | 0:00:46 |
算例内容如下: in.lj
# 3d Lennard-Jones melt
variable x index 4
variable y index 4
variable z index 4
variable xx equal 20*$x
variable yy equal 20*$y
variable zz equal 20*$z
units lj
atom_style atomic
lattice fcc 0.8442
region box block 0 ${xx} 0 ${yy} 0 ${zz}
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 0 every 20 check no
fix 1 all nve
run 10000