Linux系统源码编译安装LAMMPS

貌似可以apt安装,但是不建议,因为自己一般用的包很少,而且movie这些命令需要一些依赖,GPU、Python配置也需要

编译安装的源码在这里,也可以看 官网安装GPU加速python接口

官网很详细,也可以去github提问,作者回复很不错

源码编译安装

如果不知道git,百度

github很慢,建议第二个;其实我最建议的是直接在 github-release 下载稳定版,注意不要预览版(Pre-release),一般 100多M

1
git clone https://github.com/lammps/lammps.git

1
git clone https://gitee.com/yuhldr/lammps.git
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 0 防止污染
cd lammps && mkdir build && cd build

# 1 检测系统有哪些库,比如视频支持、openmpi支持
# 注意安装路径: /opt/LAMMPS/apps,这里权限放好
cmake -D BUILD_SHARED_LIBS=on -D LAMMPS_EXCEPTIONS=on -D PKG_MANYBODY=on -D PKG_PHONON=on ../cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/opt/LAMMPS/apps"

# 2 编译,留一个cpu核心,防止卡
cmake --build . -j $(($(nproc) - 1))

# 2022以后更新了,必须这么编译python库,这一步以后,会被安装在 ~/.local/lib,make install 以后,会按照 CMAKE_INSTALL_PREFIX 的路径重新安装
make install-python -j $(($(nproc) - 1))

# 3 安装
make install

因为安装在 /opt/LAMMPS/apps,所以要配置 lammpspython库c语言库 对应的路径

1
2
3
4
5
6
7
8
9
10
# ************** LAMMPS **************
export LAMMPS_HOME=/opt/LAMMPS/apps
export PATH=$LAMMPS_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LAMMPS_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LAMMPS_HOME/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=$LAMMPS_HOME/lib:$LIBRARY_PATH
export LIBRARY_PATH=$LAMMPS_HOME/lib64:$LIBRARY_PATH
# 不同python版本不一样,直接去看 LAMMPS_HOME 下面有谁
export PYTHONPATH=$LAMMPS_HOME/lib/python3.10/site-packages:$PYTHONPATH
# ************************************

安装以后使用 lmp 就可以运行lammps了

采坑

比如并行、视频输出、安装目录、python库、GPU支持等

git与cmake

如果没有git,安装一个吧,我这里都以ubuntu20.04、root权限为例,其他系统或者没有root权限,百度吧,网上很多源码编译安装到当前用户的方法,或者联系管理员让他们给你安装 git cmake3

1
sudo apt install git cmake3

找不到lmp

默认安装在 ~/.local/bin/lmp,如果你没有设置这个目录在环境变量里,会找不到,所以添加环境变量

如果你用的是 zsh

1
echo "export PATH=$HOME/.local/bin:$PATH" >> ~/.zshrc && source ~/.zshrc

如果你用的是bash(一般都是这个)

1
echo "export PATH=$HOME/.local/bin:$PATH" >> ~/.bashrc && source ~/.bashrc

视频输出

检测 这一步,如果系统没有 ffmpeg, 编译出来的lammps使用 dump movie 时,会报错

我这里是ubuntu系统,需要依赖:多核并行、输出视频,已知问题,opensuse默认安装的ffmpeg不行,需要手动编译源码安,具体怎么安装,百度吧

1
sudo apt-get install ffmpeg gzip

回到刚才的 build 文件夹,删除里面的编译缓存文件,然后重新编译安装lammps

slurm与mpi并行

如果你在使用slurm集群,并且你碰巧编译lammps时,支持了openmpi,但是你这个openmpi与slurm集群的 mpi 不符合,这时候会报错的,一种方法,直接不用并行了

舍弃mpi

回到刚才的 build 文件夹,删除里面的编译缓存文件,然后重新编译安装lammps,但是刚才的

1
2
3
4
5
cmake -D PKG_MANYBODY=yes ../cmake

改为

cmake -D PKG_MANYBODY=yes -D BUILD_OMP=no -D BUILD_MPI=no ../cmake

其他不变

支持mpi

如果在 slurm 集群上运行,必须保证编译 lamppsopenmpislurm 集群支持的 mpi 一致,先查看 slurm 集群支持什么

1
srun --mpi=list

一般如下,主要注意有没有pmix,如果 slurm 太过久远或者管理员技术不够的话,没有 pmix 的选项

1
2
3
4
5
6
srun: MPI types are...
srun: pmix
srun: pmix_v3
srun: cray_shasta
srun: none
srun: pmi2

如果集群管理员技术还可以,支持 pmix_v3 的话,系统里是有对应的 openmpi 的,输入 ompi_info 可以看到 openmpi 相关信息,其中有一条 MPI API 必须与 slurm 的对应

如果连 pmix 的选项都没有的话,你让管理员去看一下这个文章:slurm集群安装与踩坑详解,安装合适的 slurmopenmpi

如果只是没有合适的 openmpi,自己按照那个博客编译一个合适的 openmpi 也行

如果 openmpi 已经合适了,删除 build 文件夹,重新编译即可

环境变量

配置路径,没这个有时会报错,尤其是支持 pythonGPU

1
2
3
4
vim ~/.zshrc

# 如果你没有用zsh,编辑这个文件
vim ~./bashrc

末尾添加如下

1
export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH

并且默认安装路径的时候,在 ~/.local/etc/profile.d/ 有两个 lammps.sh lammps.csh全局的话一般放在 /etc/profile.d

高级

安装路径

cmake -D PKG_MANYBODY=yes ../cmake 这一步,会显示其中一条信息

1
Install path:     ~/.local

我们把在这一步改为

1
-D CMAKE_INSTALL_PREFIX=/usr/local/lammps-2021-12-26

可以安装在 /usr/local/lammps-2021-12-26,既可以避免文件污染,也方便知道版本信息

安装以后

1
cd /usr/local && sudo ln -s lammps-2021-12-26 lammps && cd -

设置环境变量

1
2
3
4
5
export LAMMPS_HOME=/usr/local/lammps
export PATH=$LAMMPS_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LAMMPS_HOME/lib:$LD_LIBRARY_PATH
# 不同python版本不一样,直接去看 LAMMPS_HOME 下面有谁
export PYTHONPATH=$LAMMPS_HOME/lib/python3.10/site-packages:$PYTHONPATH

python

ubuntu2004需要依赖

1
sudo apt install python3-pip

如果需要python接口

1
-D BUILD_SHARED_LIBS=on -D LAMMPS_EXCEPTIONS=on

make install 之前

1
2
# 2022以后更新了,必须这么编译python库
make install-python -j $(($(nproc) - 1))

gpu

GPU需要这个

1
-D PKG_GPU=on -D GPU_API=cuda

计算终止恢复

1
-D PKG_MPIIO=on

声子色散关系

1
-D PKG_PHONON=on -D PKG_KSPACE=on

需要 fftw3,其他系统也一样,注意 dev 那一个,有的叫 devel,很多系统喜欢给他们分开打包

1
sudo apt install fftw3 libfftw3-dev libfftw3-bin -y

如果报错,换一下源 清华源,注意版本号,我的是ubuntu21.10

以上全部

1
cmake  -D PKG_MANYBODY=yes -D CMAKE_INSTALL_PREFIX=/usr/local/apps/lammps/2022.03.06 -D BUILD_SHARED_LIBS=on -D LAMMPS_EXCEPTIONS=on -D PKG_GPU=on -D GPU_API=cuda -D PKG_MPIIO=on -D PKG_PHONON=on -D PKG_KSPACE=on ../cmake/

手册

方法过时了,新的我还没看

编译pdf手册

1
2
3
4
5
6
# 按照前文配置texlive, 并安装如下依赖
sudo apt-get install python-virtualenv git doxygen

# 进入源码doc目录
cd lammps/doc
make pdf

其他系统说明

fedora

2023.5 最新版

ffmpeg

安装 ffmpeg 时,这个发行版的名字是

1
dnf install ffmpeg-free-devel ffmpeg-free

openmpi

安装 openmpi

1
dnf install openmpi openmpi-devel

!!注意,安装以后,编译或者运行时,比如载入openmpi环境,如下:

1
module load mpi/openmpi-x86_64

本文作者:yuhldr
本文地址https://yuhldr.github.io/posts/320.html
版权声明:转载请注明出处!