编译安装QE+PLUMED

无管理员权限在集群上编译安装QE和PLUMED

Posted by TSingularity on June 26, 2025

“Let’s go!”

前言

Quantum Espresso(QE)是一款开源的DFT软件,可以进行DFT电子结构计算,同时还支持BOMD和CPMD,可以说是All in one了,这也是我一直使用它的原因之一。但是QE也存在一些缺点,比如输入文件和输出格式不够直观,往往需要自己写一些脚本来适配其输出格式。

PLUMED是一个用来增强采样的软件包,在计算自由能方面应用较广,并且上手也非常简单。 QE和PLUMED我已经编译过许多次了,这个也是之前记录的notes,今天整理了一下,以下内容我将会介绍如何在无管理员权限的情况下在集群上编译安装QE和PLUMED。

准备工作

  • Quantum Espresso 官网或者Gitlab下载的软件包:q-e-qe-7.0.tar.gz
  • Github下载的软件包:plumed-src-2.9.2.tgz
  • libxc 官网下载的软件包:libxc-6.2.2.tar.gz
  • gcc、intel、openmpi、fftw等可以视自己的情况选择

准备好上面的软件包后,就可以进行编译了。这里选取的版本是 qe-7.0,比起CP2K来说,QE的插件没有那么多,因而编译安装简单许多,但还是有点小坑,比如libxc库的编译。并且qe-7.0对编译器要求没有那么严格,只是需要保证所有库都要使用统一的编译器。如果编译器不统一,PLUMED和libxc可能会出一些问题,有时候能编译通过,在运行时也会报错。总之保证编译器统一是一个非常好的习惯。

编译QE

gcc编译

学校集群上的编译器和数学库非常冗杂,我们不知道每一个库到底是哪一个编译器编译的,这对于我们的安装会有一些麻烦,所以我决定直接将后续所有的lib全部统一用自己本地编译器编译,首先就是gcc,最新版本不知道会不会有兼容问题,所以就选取了CP2K官网测试兼容性最好的版本gcc-9.3.0。命令如下

1
2
3
4
5
./contrib/download_prerequisites
mkdir build && cd build
/configure --prefix=/path/to/gcc-9.3.0/ --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib
make
make install

然后添加环境变量

1
2
3
4
5
6
7
export LD_LIBRARY_PATH="/path/to/gcc-9.3.0/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="/path/to/gcc-9.3.0/lib64:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="/path/to/gcc-9.3.0/ibexec:$LD_LIBRARY_PATH"
export PATH="/path/to/gcc-9.3.0/bin:$PATH"
export INCLUDE="/path/to/gcc-9.3.0/include:$INCLUDE"
export CPATH="/path/to/gcc-9.3.0/include:$CPATH"
export MANPATH="/path/to/gcc-9.3.0/share/man:$MANPATH"

MKL安装

直接去 intel 官网下载 oneapi 的基础包和高性能计算包,会将所需要的编译器、MKL等全部安装。当然还有环境变量的设置。

1
source /public/spst/home/zhaoyq22022/intel/oneapi/setvars.sh

编译FFTW

1
2
./configure --prefix=/public/spst/home/zhaoyq22022/mathlib/fftw-3.3.10-intel2021.10.0 --enable-threads --enable-mpi CC=icc MPICC=mpiicc F77=mpiifort --enable-shared --enable-static --enable-float --enable-openmp
make && make check && make install

设置环境变量

1
2
3
export PATH=/public/spst/home/zhaoyq22022/mathlib/fftw-3.3.10-intel2021.10.0/bin:$PATH
export C_INCLUDE_PATH=/public/spst/home/zhaoyq22022/mathlib/fftw-3.3.10-intel2021.10.0/include:$C_INCLUDE_PATH
export LD_LIBRARY_PATH=/public/spst/home/zhaoyq22022/mathlib/fftw-3.3.10-intel2021.10.0/lib:$LD_LIBRARY_PATH 

openMPI安装

命令如下

1
2
./configure --prefix=/path/to/openmpi-4.1.4
make all install

环境变量设置

1
2
3
4
5
export PATH="/path/to/openmpi-4.1.4/bin:$PATH"
export LD_LIBRARY_PATH="/path/to/openmpi-4.1.4/lib:$LD_LIBRARY_PATH"
export INCLUDE="/path/to/openmpi-4.1.4/include:$INCLUDE"
export CPATH="/path/to/openmpi-4.1.4/include:$CPATH"
export MANPATH="/path/to/openmpi-4.1.4/share/man:$MANPATH"

intel 编译如下

1
2
./configure --prefix=/public/spst/home/zhaoyq22022/mathlib/openmpi-4.1.6-cuda11.6-intel2021.10.0 CC=icc CXX=icpc FC=ifort F77=ifort --with-cuda=/public/software/compiler/cuda/7/cuda-11.6 --enable-shared=yes --enable-static=yes --enable-mpi-fortran=yes --enable-mpi-cxx=yes
make && make check && make install

libxc安装

QE内置的泛函比较少,特别是我经常用到的SCAN泛函是没有内置的,因此必须要安装libxclibxc 默认是用 gcc 编译的,所以我们的 QE 部分也要用 gcc 编译。 命令如下

1
2
3
4
./configure --prefix=/path/to/libxc-6.0.0 --enable-shared
make
make check
make install

如果选择intel编译器,则运行如下命令

1
2
./configure --prefix=/public/spst/home/zhaoyq22022/mathlib/libxc-6.2.2-intel2021.10.0 CC=icc FC=ifort --enable-shared --enable-static
make && make check && make install

准备wannier90

不准备wannier90的话会在make all阶段报错 命令如下

1
2
cd archive/
wget https://codeload.github.com/wannier-developers/wannier90/tar.gz/v3.1.0

编译、安装QE

使用gcc编译器

命令如下

1
./configure --prefix=/public/spst/home/zhaoyq22022/softwares/qe-7.0-gnu9.3.0 --with-libxc=yes --with-libxc-prefix=/public/spst/home/zhaoyq22022/mathlib/libxc-6.2.2-gnu9.3.0 --with-libxc-include=/public/spst/home/zhaoyq22022/mathlib/libxc-6.2.2-gnu9.3.0/include --enable-openmp --enable-parallel CC=gcc MPIF90=mpif90 F77=mpif90 F90=mpif90 FC=gfortran

在这一步,更详细的参数设置可以去产生的make.inc文件中设置,比如设置编译器的路径,编译器的优化等级,是否使用openmp等。编译过程中遇到的各种问题都可以通过调整make.inc文件中的参数来解决。 然后运行如下命令

1
2
3
4
make all
make epw
make w90
make install

添加环境变量

1
export PATH="/path/to/qe-7.0-gnu9.3.0/bin:$PATH"
使用intel编译器
1
2
3
4
5
6
./configure --prefix=/public/spst/home/zhaoyq22022/softwares/qe-7.0-intel2021.10.0/ --with-libxc=yes --enable-openmp CC=icc MPIF90=mpiifort F77=ifort F90=ifort FC=ifort CFLAGS=-O2 FCLAGS=-O2 FFLAGS=-O2 F90FLAGS=-O2
./configure --prefix=/public/spst/home/zhaoyq22022/softwares/q-e-qe-7.0-intel2021.10.0 --enable-openmp --enable-parallel MPIF90=mpiifort CC=mpiicc F90=ifort F77=mpiifort --with-libxc --with-libxc-prefix=/public/spst/home/zhaoyq22022/mathlib/libxc-6.2.2-intel2021.10.0 --with-libxc-include=/public/spst/home/zhaoyq22022/mathlib/libxc-6.2.2-intel2021.10.0/include
make all
make epw
make w90
make install

至此,QE已经编译安装完成了。注意,我们要保留一下QE的编译目录,因为后面在与PLUMED结合时会用到。在以后的使用中,QE的编译目录最好也留着,因为如果需要其他模块还可以接着编译安装的。

PLUMED 安装

官方发行版的PLUMED安装比较简单,只需要下载源码包,解压,然后运行./configuremakemake install即可。

而对于测试版的PLUMED(这里是指plumed2.tar.gz,版本号为v2.5-dev),需要注意的是部分CV的代码仅支持intel编译器,还有一些仅支持关闭openmp,因此需要进行一些设置。

1
./configure CXX=mpiicpc CC=mpiicc --enable-mpi=yes --disable-openmp --prefix=/public/spst/home/zhaoyq22022/softwares/plumed2-ema-master

执行完相应配置后,与QE类似,PLUMED也可以查看Makefile.conf并对某些项目进行微调,比如默认的-O2优化可以改为-O3以提升性能。修改无误后,可以运行make命令进行编译和make install进行安装。对于测试版的PLUMED,make check命令会报错,原因可能是未及时修改部分代码,可以忽略。

QE 和 PLUMED结合

前面我们已经编译安装了QE和PLUMED,现在可以将二者结合起来使用。我们先来到QE的编译目录下,执行

1
plumed patch -p

然后选择我们QE的版本,接着执行

1
2
3
4
make all
make epw
make w90
make install

如果现在全部通过的话,那么现在就可以使用了。

提交任务

准备好所需要的QE的输入文件和PLUMED的配置文件(必须命名为plumed.dat),导入所有的环境变量后执行

1
mpirun -np $NPROCS pw.x -pd .true. -plumed -i bo.in >> bo.log

后记

看起来过程比CP2K要稍显复杂,但其实比CP2K是要容易的。每一台机器的环境不同,编译参数设置的会有所不同,这些参数也只是学校集群的环境摸索出来的,不同机器实际运行环境天差地别,这些参数也只是仅供参考。