一、前言
Quantum Espresso(QE)是基于密度泛函理论、平面波法和赝势法用于纳米尺度下电子结构计算和材料建模的开源计算机代码。它可以运行在从并行计算机到服务器和电脑等各个Linux架构上,支持全局状态计算,结构优化,分子动力学,势能面计算,电化学和特殊边界条件,反应性质,光谱特性和量子转移等计算。
目前QE支持的交换关联能包括LDA、GGA(PBE、PW91)、meta-GGA、HF和混杂函数(PBEO,B3LYP,HSE),同时它支持DFT+U以及DFT+U+V,支持的赝势包括NC、PAE和UltraSoft。
相比于VASP、Material Studio等商业软件来说,QE完全开源免费,目前支持CPU和GPU编译,其中CPU又分串行编译和并行编译。对于QE功能来说,PW是几乎所有运算的核心,本文将着重简述CPU并行版编译,并用Intel编译器进行PW编译(相比于普通编译,使用Intel编译计算性能更高)。
二、Intel One-mkl安装
首先安装后面需要的第三方依赖:
sudo apt install -y --no-install-recommends autoconf gawk gcc g++ make git
下载Intel One-mkl安装包,本次教程用2023.2.0.49497离线版本(相比于Online版本,本文教程后续不会出现安装界面,报错几率更小)。
wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/adb8a02c-4ee7-4882-97d6-a524150da358/l_onemkl_p_2023.2.0.49497_offline.sh
下载好Intel One-mkl离线版本后,执行下列指令进行静默安装,即不出现安装界面。
sudo sh ./l_onemkl_p_2023.2.0.49497_offline.sh -a --silent --eula accept
安装好后,可以执行下列指令,删除安装包(看个人需求)。
rm l_onemkl_p_2023.2.0.49497_offline.sh
三、Intel HPC安装
下载Intel HPC 2023.2.0.49440离线版本。
wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/0722521a-34b5-4c41-af3f-d5d14e88248d/l_HPCKit_p_2023.2.0.49440_offline.sh
安装HPC,执行下列指令
sudo sh ./l_HPCKit_p_2023.2.0.49440_offline.sh -a --silent --eula accept
下载好One-MKL和HPC后,使用下面指令加载环境变量。
source /opt/intel/oneapi/setvars.sh
可以考虑将其加入~/.bashrc防止每次打开终端都输入该指令(看个人需求)
echo 'source /opt/intel/oneapi/setvars.sh' >> ~/.bashrc
同样,可以执行下列指令删除安装包(看个人需求)
rm l_HPCKit_p_2023.2.0.49440_offline.sh
三、QE Intel编译
下载QE-7.2版本,执行下列指令
wget https://gitlab.com/QEF/q-e/-/archive/qe-7.2/q-e-qe-7.2.tar.gz
解压缩tar.gz文件,执行下列指令:
tar -xvzf q-e-qe-7.2.tar.gz
进入相应文件夹:
cd q-e-qe-7.2
配置PW,执行下列指令
./configure \
F90=mpiifort \
MPIF90=mpiifort \
CC=mpicc CXX=icc \
F77=mpiifort \
FFLAGS="-O3 -assume byterecl -g -traceback" \
LAPACK_LIBS="-L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl" \
BLAS_LIBS="-L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl" \
SCALAPACK_LIBS="-L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl"
编译PW,执行下列指令(其中的4表示CPU线程数,如果你电脑较大,可以调整,使用${NUM_PROCS}可以查看,不过WSL2可能会不显示,毕竟不完整,可以参考Windows的任务管理器的性能界面里的CPU内核数,但它可能会偏小)
sudo make -j4 pw
由于本文未指定安装位置,可以不用执行make pw install指令 ,如果你指定--prefix,可能需要执行该指令。
配置环境变量,执行下列指令(可以手动加):
echo "export PATH=`pwd`/bin:$PATH" >> ~/.bashrc
加载环境变量(会警告你Intel重复加载,问题不大,不影响)
source ~/.bashrc
四、测试代码
由于QE自带的pseudo并不完整,使用自带的test-suite可能会报错,这里选用其他测试方法。这里选用sobereva老师的测试压缩包进行测试(可能网站不稳定,有时访问不了,这里给个百度网盘链接,文件不大,应该可以直接点下载,后续WSL2输入cp /mnt/{Windows本地下载文件夹} ~指令(更改下载文件夹,Windows本地路径,WSL会自动挂载),会复制到用户文件夹内,如果你用Ubuntu的话,考虑下载Winscp,并配置SSH环境)。
wget http://sobereva.com/attach/562/diamond.zip
链接:
https://pan.baidu.com/s/1tZe4t1Zd7usHesw1i05tYg?pwd=wkjyhttps://pan.baidu.com/s/1tZe4t1Zd7usHesw1i05tYg?pwd=wkjy 解压zip文件,执行下列指令(如果提示你unzip未安装,按它提示指令安装即可)
unzip diamond.zip
进入解压文件夹内:
cd diamond
运行下列指令测试:
mpirun -n 4 pw.x < pwscf.in > pwscf.out
查看pwscf.out文件
cat pwscf.out
如果最后看到job done相关字眼说明安装完成了