计算化学公社

标题: 整合Environ插件的Quantum Espresso安装经验 [打印本页]

作者
Author:
qczgzly    时间: 2022-11-4 10:10
标题: 整合Environ插件的Quantum Espresso安装经验
本帖最后由 qczgzly 于 2022-11-4 10:13 编辑

       很多周期性体系的计算需要考虑溶剂效应。CP2K程序有自带的SCCS方法进行隐式溶剂化处理,而QE则依赖于外部插件Environ。environ使用并不容易,需要与QE一起进行安装编译。经过几天的折腾,总算是安装成功。由于QE的安装也不是很容易,所以我把安装过程写在这里,供各位群友参考。[url=]Undo[/url]

       0. 准备工作
       系统为CentOS7.6。之前Sob社长有篇文章介绍用OpenMP编译QE,本文采用MPI方式。设已安装好intel编译器,依次执行以下语句能够得到相应信息:
  1. $ source ~/intel/parallel_studio_xe_2019.1.053/bin/psxevars.sh
  2. $ ifort -v
  3. $ icc -v
复制代码
      下载Environ3.0和Quantum ESPRESSO7.1安装包,解压到安装目录/opt(或其它任意路径)。

       1. 安装Environ3.0
       解压后的Environ路径为/opt/environ3.0。进入该路径,进行环境配置,输入
  1. $ ./configure --with-qe=/opt/QE7.1 --prefix=/opt/environ3.0 MPIF90=mpiifort CC=mpiicc F90=ifort F77=mpiifort
复制代码
其中--with-qe=/opt/QE7.1似可不写,但我没试。--prefix=/opt/environ3.0指安装路径,MPIF90、CC、F90、F77为调用编译器。回车后出现大量输出信息,最后有success即说明完成。
       接下来用vim打开make.inc文件,找到下列大写字母字段所在行,改成如下结果:
  1. FFLAGS         =   -O3 -assume byterecl -g -traceback
  2. BLAS_LIBS      =   -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl
  3. LAPACK_LIBS    =   -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl
  4. SCALAPACK_LIBS =  -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl
  5. FFT_LIBS       =   -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl
  6. MPI_LIBS       =  -L/home/aries/intel/impi/2019.1.144/intel64/lib/ -lmpi
复制代码
第02~05行等号后面的一串内容是怎么来的呢?需要进入https://www.intel.com/content/ww ... isor.html#gs.hhfnvn网页,在一系列下拉列表中选择正确的参数,如下图所示:
              [attach]58228[/attach]
修改完毕,保存退出。然后执行下列语句,进行编译:
  1. $ source ~/intel/parallel_studio_xe_2019.1.053/bin/psxevars.sh
  2. $ make compile -j4
复制代码

       2. 安装QE7.1
       QE的安装方式与Environ基本相同。解压后的QE路径为/opt/qe-7.1,进入该路径,进行环境配置,输入
  1. $ source ~/intel/parallel_studio_xe_2019.1.053/bin/psxevars.sh
  2. $ ./configure --with-environ=/opt/environ3.0 --prefix=/opt/QE7.1 MPIF90=mpiifort CC=mpiicc F90=ifort F77=mpiifort
复制代码
注意此处--with-environ=/opt/envirorn3.0为关键参数,将environ插件加入QE安装。--prefix=/opt/QE7.1指安装路径,也可改为其它。后面的编译器指定与之前一样。
       执行完后打开make.inc文件,注意到与environ有关的字段
  1. ENVIRON_LIBS = -L/opt/environ3.0/libs -lenvsrc -lenvfft -lenvutil
复制代码

并对其它字段做出与上一节相同的修改:
  1. FFLAGS         =   -O3 -assume byterecl -g -traceback
  2. BLAS_LIBS      =   -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl
  3. LAPACK_LIBS    =   -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl
  4. SCALAPACK_LIBS =  -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl
  5. FFT_LIBS       =   -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm -ldl
  6. MPI_LIBS       =  -L/home/aries/intel/impi/2019.1.144/intel64/lib/ -lmpi
复制代码
保存退出。执行下列语句,进行安装:
  1. $ source ~/intel/parallel_studio_xe_2019.1.053/bin/psxevars.sh
  2. $ make all install -j4
复制代码
安装完毕可看到/opt/QE7.1路径下多了一个bin文件夹,里面有很多可执行文件,如pw.x、ph.x等。我个人的情况是提示安装成功,但没有看到这些文件。于是上翻安装过程输出信息,发现有很多“没有写入权限”的提示。于是提高文件夹权限,并sudo一下:
  1. $ chmod g+w /opt/QE7.1
  2. $ sudo make all install -j4
复制代码
成功。

       3. 使用QE+Environ
       在QE的输入文件中加入environ相关字段,下面是一个添加隐式水溶剂的简单示例:
  1. &environ
  2.   verbose = 1
  3.   environ_thr = 1.d2
  4.   environ_type = 'water'
  5. /
  6. &boundary
  7. /
  8. &electrostatic
复制代码
字段的详细说明见environ官网。值得一提的是,通过对&boundary和EXTERNAL_CHARGES字段的设置,还可添加一定形式的电荷分布,这对于模拟一些特殊的界面体系非常有帮助。       输入文件写好后,将文件名改为environ.in,否则安装程序不认。输入下述命令进行计算:
  1. $ source ~/intel/parallel_studio_xe_2019.1.053/bin/psxevars.sh
  2. $ mpirun -np 4 pw.x - --environ -inp environ.in > task-environ.out
复制代码
我在执行时遇到一个小问题,退出登录时任务自动停止。解决办法是在mpirun命令前添加sleep 20 && ,然后立马退出登录。这样20秒后再登录服务器,就能看到pw.x已运行,且反复登录退出都不影响进程。打开task-environ.out,看到如下信息:
  1.         Reading input from environ.in
  2. Warning: card &ENVIRON ignored
  3. Warning: card  VERBOSE = 1 ignored
  4. Warning: card  ENVIRON_THR = 1.D2 ignored
  5. Warning: card  ENVIRON_TYPE = 'WATER' ignored
  6. Warning: card / ignored
  7. Warning: card &BOUNDARY ignored
  8. Warning: card / ignored
  9. Warning: card &ELECTROSTATIC ignored
  10. Warning: card  PBC_AIXS= 3 ignored
  11. Warning: card  PBC_DIM= 3 ignored
  12. Warning: card / ignored

  13.         Current dimensions of program PWSCF are:
  14.         Max number of different atomic species (ntypx) = 10
  15.         Max number of k-points (npk) =  40000
  16.         Max angular momentum in pseudopotentials (lmaxx) =  4

  17.         Reading input from environ.in:
  18.         * setting up water environment
  19.         * using electronic solvent mode
  20.         * setting boundary derivatives method to SCCS default
  21.         * ignoring &electrostatic namelist
复制代码
先是警告忽略&environ等字段,然后又读取了这些字段,不太理解。不过再往后看,又出现了很多关于environ的信息,表明隐式溶剂效应已被纳入计算。注意到输入输出文件所在目录下多了一个environ.debug文件。如果发现一段时间内task-environ.out没有变化,有可能是environ正在运行,输出信息在environ.debug里。
       计算完成后输出文件显示JOB DONE,即成功结束。与未考虑溶剂效应的计算相比,total energy略有降低,计算时长增加了约一倍。

       4. 后记
       以上为参考网络资料加实践的结果。因为我不太懂编译相关知识,很多地方只能说明如何操作,不能说明原理。也可能存在很多概念错误、描述不当等问题,欢迎大家提出宝贵意见或建议。

       5. 参考资料
       https://environ.readthedocs.io/en/latest/index.html
       https://www.bilibili.com/video/B ... 5305272976cf64ad808

作者
Author:
kyuu    时间: 2022-12-13 09:56
xjb改 environ不支持7.x 只支持6
作者
Author:
卡开发发    时间: 2022-12-13 21:50
kyuu 发表于 2022-12-13 09:56
xjb改 environ不支持7.x 只支持6

The following instructions refer to Environ 3.0 installed on QE >= 7.1 For previous versions, please refer to the instructions on the website:    [url]https://environ.readthedocs.io/en/latest/install/install.html[/url]
作者
Author:
丁越    时间: 2023-9-28 13:20
我纠正几点内容:
其中--with-qe=/opt/QE7.1似可不写,但我没试。--prefix=/opt/environ3.0指安装路径,MPIF90、CC、F90、F77为调用编译器。回车后出现大量输出信息,最后有success即说明完成。

这里面--with-qe=/opt/QE7.1是必须要写的参数,而--prefix=/opt/environ3.0没有必要写。

执行完后打开make.inc文件,注意到与environ有关的字段

这些手动添加的内容不是必须的。假如你的oneAPI里的模块都是标准安装的,那么程序就会自动找到这些参数。

在QE的输入文件中加入environ相关字段,下面是一个添加隐式水溶剂的简单示例:

pw.x和Environ的输入文件都是单独的,pw.x输入文件正常该怎么写就怎么写。Environ的输入文件文件名必须是envion.in,然后提交任务时的命令应该是:inf="cell.relax.in" ;mpirun -np 64 pw.x -i ${inf} --environ &> ${inf//in/out}

作者
Author:
qczgzly    时间: 2023-9-29 15:04
丁越 发表于 2023-9-28 13:20
我纠正几点内容:

这里面--with-qe=/opt/QE7.1是必须要写的参数,而--prefix=/opt/environ3.0没有必要写 ...

非常感谢您的指导!




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3