QE和Abinit都是目前免费开源的第一性原理计算软件,都是采用赝势和平面波的方法,其中QE的相应模块也常称为Pwscf,现在QE能够实现的功能也越来越多,所以相比Abinit,QE官网提供了大部分常用的赝势,使用比较方便。本文主要介绍QE的安装以及可能遇到的各种问题。
硬件平台并未使用计算工作站,而是个人电脑,采用了Intel最新的i9 7980XE 芯片,内部有18核36线程,内存使用4通道32G DDR4 3600MHz。
1. Linux系统的安装
QE和abinit等计算软件首先需要一个linux系统,这里选择ubuntu作为计算平台,安装ubuntu操作系统并且和windows组成双系统。由于Win 7已经无法支持x299主板芯片,表现为键鼠等无法识别,所以windows系统选择win10;ubuntu版本目前最新为ubuntu18.04,可以安装,但是不建议安装最新版本,因为18.04版本里安装并行环境以及QE编译等会遇到很多问题,需要额外做些多余的工作,问题很多,如果为了稳妥,建议直接安装ubuntu16.04LTS版本。后者由于linux内核版本较低,可能安装后无法识别Geforce显卡以及无线网卡,而ubuntu18.04则无此问题。
安装win10和Ubuntu双系统,建议先安装win10,留下Ubuntu安装所需的硬盘空间。首先安装win10,利用u盘制作winPE系统(工具可以直接利用网上提供的老毛桃等软件制作),如果安装镜像出现错误,可以直接利用PE内自带的windows安装器来安装。win10安装好后,再安装ubuntu,如果是ubuntu18.04,则可能用ultraISO工具写入硬盘映像后引导会出错,这时可用Rufus等工具写入(下载链接http://rufus.akeo.ie)。如果安装版本为ubuntu16.04,则可以直接用ulatraISO即可。ubuntu安装时不用选择和win10共存,而是用其它选项,这时可自由设计分区,建议设立swap分区,容量和内存一样大;然后可以直接设立ext4文件分区用于挂载/根目录,这时候要注意,很多教程建议独立分区分别挂载/home,/usr,如果想要采用这种,建议一定要为/或/opt/留下足够大的空间,因为intel所需的并行编译包只能安装在/opt/intel目录下,需要12G,如果空间不够,则无法安装。然后再设立一个分区efi(小于1G,注意,当BIOS无UEFI时则无此选项),将引导挂载在此分区,这是BIOS为UEFI模式时可选择,如果非UEFI模式,则可以将Ubuntu的引导挂在在win10 C所在分区,这样开机直接进入Ubuntu的grub引导,如果win10为uefi模式启动,则这是出现的系统选项内的wi10项目并不能进入win10,如果想进入win10,需要在BIOS中启动顺序中第一项改为Windows boot manager则可进入win10。
2. Ubuntu系统内的配置
在开始安装QE或者Abinit等之前,首先需要让Ubuntu系统联网检查更新,之后为系统安装c、c++和Fortran的编译器。编译器可以选择GNU的gcc、g++和gfortran,如果用的是intel的平台,可以选择安装intel的icc、icpc和ifort编译器(intel的并行编译器包可在官网下载,但目前需要注册,如果有学校邮箱,可免费得到序列号)。
2.1 选择GNU的gcc和gfortran编译器:
Ubuntu系统对用户和文件读写权限有细致的划分,所以最好将所需软件安装在自己的工作目录下(/home/用户名),这样编译安装时就无需总是利用sudo命令临时成为root用户。由于默认sudo命令成为root用户的时间较短,每次sudo都要频繁输入密码,所以为了方便,可以延长sudo命令在终端内的时间,终端输入sudo visudo,在打开的文件内,将原来的Defaults env_rese改为:
Defaults env_rese,timestamp_timeout=20
上面的20单位为分钟,就是一次输入sudo密码后可以维持20分钟。在ubuntu系统内打开终端,在终端内可以直接使用sudo apt-get install gcc以及g++和gfortran来安装c、c++和Fortran的编译器。安装完成后可查看安装编译器的版本:
ls /usr/bin/gcc* -l
Ubuntu18.04默认安装的是gcc-7,相应的Fortran编译器为gfortran-7,都是通过在/usr/bin/目录下通过链接方式将gcc链接到gcc-7; 如果QE安装的是qe6.x版本,则与以上版本的编译器存在问题(在configure后,make环节会出错,可能会出现各种如:can’t open module file ‘fox_dom.mod’等奇怪问题,或者recipe for ** failed 等提示)。这种原因可能是高版本gcc-7或者gfortran-7编译器和qe之间存在兼容问题。解决方法就是降低编译器的版本,这里选择安装低版本gcc-5,g++-5,gfortran-5(版本6也可以),安装方式直接用sudo apt-get install gcc-5等(c++和fortran的编译器为g++-5,gfortran-5),安装好后进行配置,可以选择系统默认使用哪种版本的编译器:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60
上面的数字40和60表示优先级,数值越大则优先级越高,系统优先选择作为默认的编译器。这里将gcc-7的优先级写为60,如此系统会将gcc链接到gcc-7,即使用较高版本的编译器作为默认。以后使用时可以采用如下命令更换系统默认的编译器版本:
sudo update-alternatives --config gcc
终端会在上述命令后列出编译器的所有版本,让你选择一种。所以之后都选择低版本的gcc,即gcc-5,其余的gfortran和g++都是同样的配置方法,将上述命令内的gcc替换即可,如此编译器就安装好了。补充说明:为了之后编译安装并行计算openmpi,还需要安装c++的相关package,否则后文编译openmpi时的configure环节会出现c++ preprocessor “/lib/cpp” fails sanity check等问题,因此最好再安装build-essential:可sudo apt-get install build-essential即可。
2.2 选择intel的编译器
Intel的编译器会使用Intel相应的数学库,因此如果采用intel芯片,使用intel编译器,计算效率会有所改善(特别是多核处理器)。如果要使用intel的编译器以及并行环境,最好在ubuntu16.04进行,ubuntu18.04可能会出现一些问题。intel的并行编译包(包括c、Fortran等编译器和并行环境以及库函数等)可在intel官网下载(需要官网注册,如果有学校edu邮箱,就可以免费得到序列号,不过需要等几天才能邮件收到回复和下载链接以及序列号,所以需要提前注册。等收到邮件后就可以通过官网下载linux版本的安装包文件parallel_studio_xe_2018_update3_cluster_edition.tgz包,大小有4个G左右,包括编译器和mkl库和并行计算包等),目前网上也有相应的破解版(可直接百度搜索Intel Parallel Studio XE 2018)。终端内使用tar解压:
tar -xzvf 压缩文件名
解压后进入文件内目录,直接在终端输入命令:
./install.sh
然后程序会引导你安装,过程中需要你输入邮件里的序列号,然后完全按照引导程序的提示安装即可。引导程序提示安装完成后需要配置,主要是配置环境变量PATH和LD_LIBRARY_PATH,后者的配置非常重要。配置选择修改用户目录下的.bashrc文件:
sudo vim ~/.bashrc
在文件后添加:
PATH=“/opt/intel/compilers_and_libraries_2018.3.222/linux/bin/intel64:/opt/intel/compilers_and_libraries_2018.3.222/linux/daal/bin:/opt/intel/compilers_and_libraries_2018.3.222/linux/ipp/bin:/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl/bin:/opt/intel/compilers_and_libraries_2018.3.222/linux/pstl/bin:/opt/intel/compilers_and_libraries_2018.3.222/linux/tbb/bin:$PATH” LD_LIBRARY_PATH=”/opt/intel/compilers_and_libraries_2018.3.222/compiler/include/intel64:/opt/intel/compilers_and_libraries_2018.3.222/compiler/lib/intel64:/opt/intel/compilers_and_libraries_2018.3.222/linux/daal/bin:/opt/intel/compilers_and_libraries_2018.3.222/linux/ipp/lib/intel64:/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64:/opt/intel/compilers_and_libraries_2018.3.222/linux/tbb/lib/intel64/gcc4.7:$LD_LIBRARY_PATH”
补充:如果不用intel的编译器,但是用intel的芯片,为了进一步优化,可选择安装mkl库,这个可以直接下载,安装不需要序列号,同样会引导安装,配置:
sudo vim ~/.bashrc
在文件最后添加:
PATH=“/opt/intel/bin:/opt/intel/mkl/bin:$PATH”
LD_LIBRAY_PATH=”/opt/intel/lib/intel64:/opt/intel/mkl/lib/intel64:$LD_LIBRARY_PATH”
但是要说明,这个mkl库和openmpi不太兼容,会出现一些错误,如果处理器核心大于8个,则用QE安装时如果在configure环节找到使用了mkl库,则之后make all后,利用openmpi做并行计算,计算时会发现mpirun -np的核数目大于8会出现段错误,这个原因可能和mkl版本有关,所以提醒要注意。
3. 并行计算openmpi的安装
并行计算需要MPI,目前免费版本有openmpi,可在官网下载最新版本的openmpi,目前是openmpi3.1.1.tar.gz,用tar 命令解压后进入文件目录。注意,openmpi安装时所用编译器必须和之后QE安装时作用编译器一致。
3.1 采用gcc和gfortran编译器
解压openmpi压缩包后直接进入目录内,然后终端输入:
./configure --prefix=”指定的安装目录”
如果不指定安装兖,则默认安装到/usr/local/openmpi。configure完成后,注意终端有无提示错误,没有错误,就可以编译和安装了,终端输入:
make
没有错误,则继续在终端输入:
make install
如果指定目录不在用户目录下,需要sudo make install,openmpi在make和makeinstall时,即使用gcc和gfortran的高版本编译器,也不会出现什么问题,但之后QE在make环节会出错,所以这里依旧采用低版本的编译器来编译安装。安装完成后进行配置(这里假设采用默认路径安装),依旧是修改用户目录下的.bashrc文件,添加:
PATH=“/usr/local/openmpi/bin:$PATH”
LD_LIBRAY_PATH=”/usr/local/openmpi/lib:$LD_LIBRAY_PATH”
配置完成后通过输入which mpirun来判断配置是否正确。
3.2用intel编译器编译安装
如果想要使用icc和ifort编译安装QE,则并行计算程序也要使用intel编译器编译安装,进入openmpi的目录:
./configure --prefix=”指定的安装目录” CC=icc CXX=icpc F77=ifort FC=ifort
虽然这时你是选择用intel的icc编译,但是如果你安装的gcc版本为7,或者系统默认使用的是高版本的gcc编译器,则configure环节会出错:can‘t find a C99 compiler, 提示在check icc支持C99的时候出现no;所以当你降低gcc的版本到5或者6,则configure可正常进行。之后和用gcc和gfortran一样,make,make install并且配置。
4. Quantum Espressor的安装
在QE的官网直接下载最新版的qe,目前最新版本为qe6.3。用tar命令解压后进入目录:
4.1使用gcc和gfortran
直接解压安装包后进入目录,在终端输入:
./configure
完成后注意观察有没有找到并行环境(找到最后会有:Parallel environment detected successfully),然后观察找到mkl库没有(注意,装了mkl后,计算可能会有问题,效率并未提高),如果没有可以按照configure结束最后提示用LIBDIRS=“寻找路径”重新配置,并且要观察configure最后有没有找到并行环境,如果正常,可以make all或者输入make然后按照出来的列表,选择make PW等。注意,如果用的是高版本的gcc-7,gfortran-7,则configure会正常,但是make时会出现各种问题,表象依旧是can’t open module file ‘’等,或者recipe for ** failed 等提示。
4.2使用intel编译器
如果openmpi是使用intel的编译器编译,则直接默认:
./configure
就会使用ifort和icc编译器,可以注意终端内的提示。如果依旧使用的是gcc和gfortran,则可以用下述命令:
./configure CC=icc F77=ifort CXX=icpc F90=ifort
如果终端未提示错误,并且找到并行环境,就可以继续输入:
make
make all
输入make后会出现选项,可以选择需要安装的模块,如PW,PP等。安装完成后,主要检查安装目录内的bin内有无pw,pp等文件,然后配置路径名,但是要求检测到的并行计算软件也是用一致的编译器,如用openmpi,则openmpi也要用相应的编译器,也可直接使用parallel_studio_xe_2018_update3_cluster_edition.tgz包内的并行软件,只要在路径设置好,QE在configure时就会检测到。并行计算时,如果要判断用那种MPI,只需要which mpirun来判断。但是intel的mpirun使用时会有错误,所以最好还是使用openmpi。
5. 计算测试
测试使用某一slab计算文件,在i5-6500台式机上计算用时73min,发现不同编译器编译后的QE计算时间相差并不明显,但是在I9-7980XE平台上,用intel的编译器编译安装的QE计算需要12min,如果用GNU的编译器编译后需要23min,可见对于多核用intel编译器,效率改善非常明显。
补充:ABINIT的安装
abinit官网下载安装包,目前版本是abinit.8.3.3.tar.gz,用tar解压后进入目录,abinit可以直接利用gcc等编译器的版本7,所以不必降低gcc的版本:
./configure --prefix="目录" –with-mpi-prefix="openmpi的目录" --enable-mpi='yes'
如果想要选择编译器,可以用FC和CC,配置没有问题后,可以make all install。