前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >离线编译OpenMolcas+QCMaquis

离线编译OpenMolcas+QCMaquis

作者头像
用户7592569
发布2021-02-26 16:20:50
1.5K0
发布2021-02-26 16:20:50
举报
文章被收录于专栏:量子化学

OpenMolcas是收费软件Molcas的开源免费版本,前两年在GitLab上开源;QCMaquis前几个月在GitHub上开源,二者结合可以做DMRG、DMRG-NEVPT2和DMRG-PDFT等方法的计算。软件的详细介绍请阅读公众号前期教程《OpenMolcas 与 QCMaquis 的安装》,文中也讲了如何联网安装。QCMaquis的详细使用请阅读官方手册

代码语言:javascript
复制
https://github.com/qcscine/qcmaquis/tree/master/dmrg/doc

然而该格式其实是源码,不利于直接阅读,最好将.bib和.tex文件下载下来,用LaTeX编译成PDF格式。应使用高级一些的LaTeX编译器,如TeX Live等。考虑到不好编译,笔者自己编译了一份放在网盘上,有效期7天

代码语言:javascript
复制
链接: https://pan.baidu.com/s/1MQ0rf09yN2m4HLtLvI7W5g
提取码: 6gqf

本文仅介绍离线安装方法。由于OpenMolcas和QCMaquis都在不断更新,且近期QCMaquis在GitHub上开源了,以后OpenMolcas很可能会直接在主分支中支持QCMaquis。因此本文可能适用、也可能不适用于以后的版本,请读者举一反三。可以使用个人用户安装,也可以用root账户装。本文安装步骤以个人用户为例,若读者曾经装过以下将介绍的某些库(且版本符合要求),则可直接跳过相应步骤。下文中的make -j16表示用16核并行编译,若读者在实践中发现报错,应先去掉-j参数尝试串行编译下是否仍然报错。

编译器/系统环境基本要求:

(1)GNU编译器>=5.x版本,笔者机子上装的是5.4.0(读者可运行gcc -v查看版本号)。若读者机子上编译器版本太低,可参考教程《Linux下安装高版本GCC》。

注意若将GCC安装到非默认位置(如/opt/gcc-5.4.0),请勿在自己账户的~/.bashrc里导出关于/usr/lib64的库路径,因为显然/usr/lib64里是旧版的库,故意导出旧版库容易造成后续编译问题。QCMaquis手册上写着目前不支持Intel编译器,就不尝试了。

(2)cmake版本>=3.7,笔者机子上装的是3.19.0(可运行cmake --version查看版本号)。若读者机子上版本过低,请到官网

代码语言:javascript
复制
https://cmake.org/download/

下载并安装较新版cmake。

(3)Python 3.x版本,笔者机子上装的是Anaconda Python 3.7.6版(可运行python -V查看版本号)。Anaconda Python可以在其官网

代码语言:javascript
复制
https://www.anaconda.com/products/individual#

下载。

1. 安装HDF5库

代码语言:javascript
复制
https://www.hdfgroup.org/downloads/hdf5/source-code/

下载HDF5源码压缩包,例如hdf5-1.12.0.tar.bz2,(发送到linux下再)解压,改名,进入文件夹

代码语言:javascript
复制
tar -jxvf hdf5-1.12.0.tar.bz2
mv hdf5-1.12.0 hdf5
cd hdf5

依次执行以下三条命令进行编译

代码语言:javascript
复制
./configure --prefix=/home/$USER/software/hdf5-1.12.0 --enable-fortran \
--enable-cxx CC=gcc CXX=g++ FC=gfortran
make -j16
make install

注意\是续行符。

prefix后的安装路径可根据自己的喜好和实际情况修改。

完成后在~/.bashrc中写上环境变量

代码语言:javascript
复制
export HDF5_ROOT=/home/$USER/software/hdf5-1.12.0
export PATH=$HDF5_ROOT/bin:$PATH
export CPATH=$HDF5_ROOT/include:$CPATH
export LD_LIBRARY_PATH=$HDF5_ROOT/lib:$LD_LIBRARY_PATH

执行source ~/.bashrc或退出重登录。

完成后所需库文件都在hdf5-1.12.0文件夹里,而原hdf5文件夹没有用了,可以删除,这也是一开始更改目录名的目的。

2. 安装GSL库

官网下载若过慢,可寻找合适的镜像点下载,例如

代码语言:javascript
复制
https://mirrors.nju.edu.cn/gnu/gsl

笔者选择的是2.6版。执行类似步骤

代码语言:javascript
复制
tar -zxvf gsl-2.6.tar.gz
mv gsl-2.6 gsl
cd gsl
./configure --prefix=/home/$USER/software/gsl-2.6 FC=gfortran CC=gcc CXX=g++
make -j16
make install

完成后在~/.bashrc中写上环境变量

代码语言:javascript
复制
export GSL_ROOT_DIR=/home/$USER/software/gsl-2.6
export PATH=$GSL_ROOT_DIR/bin:$PATH
export CPATH=$GSL_ROOT_DIR/include:$CPATH
export LD_LIBRARY_PATH=$GSL_ROOT_DIR/lib:$LD_LIBRARY_PATH

执行source ~/.bashrc或退出重登录。

完成后所需库文件都在gsl-2.6文件夹里,而原gsl文件夹没有用了,可以删除。

3. 安装Boost库

本公众号之前发过一篇《Boost.MPI的编译》教程,里面是1.55版本。然而QCMaquis要求Boost>=1.56,笔者此次安装的是1.57版,可在

代码语言:javascript
复制
https://sourceforge.net/projects/boost/files/boost/1.57.0/

下载。不建议使用更高版本的boost,因为可能会导致后续QCMaquis编译报boost相关错误。而1.55与1.57可以共存,不冲突。执行类似步骤

代码语言:javascript
复制
tar -jxvf boost_1_57_0.tar.bz2
mv boost_1_57_0 boost
cd boost
./bootstrap.sh --prefix=/home/$USER/software/boost_1_57_0 --with-libraries=all --with-toolset=gcc
./b2 -j16 --layout=tagged link=static,shared install

此处我们不需要MPI相关库,因此无需修改project-config.jam文件。这里我们也用了GCC编译Boost,不建议去尝试Intel编译器。完成后在~/.bashrc中写上环境变量

代码语言:javascript
复制
export BOOST_ROOT=/home/$USER/software/boost_1_57_0
export BOOST_INCLUDE=$BOOST_ROOT/include:$BOOST_INCLUDE
export BOOST_LIB=$BOOST_ROOT/lib:$BOOST_LIB
export LD_LIBRARY_PATH=$BOOST_ROOT/lib:$LD_LIBRARY_PATH
export CPATH=$BOOST_ROOT/include:$CPATH

执行source ~/.bashrc或退出重登录。完成后所需库文件都在boost_1_57_0文件夹里,而原boost文件夹没有用了,可以删除。

4. 安装支持QCMaquis的OpenMolcas

代码语言:javascript
复制
https://gitlab.com/Molcas/OpenMolcas/-/tree/qcmaquis-release

下载分支压缩包,例如OpenMolcas-qcmaquis-release.tar.bz2。目前请勿使用OpenMolcas master主分支。解压

代码语言:javascript
复制
tar -jxvf OpenMolcas-qcmaquis-release.tar.bz2
mv OpenMolcas-qcmaquis-release OpenMolcas_q
cd OpenMolcas_q
mkdir bin

此处改名仅仅是笔者嫌文件夹名称过长,改个短的。后续一般不删OpenMolcas_q文件夹。创建bin文件夹以便编译完成后存放pymolcas脚本。先在~/.bashrc末尾写上如下环境变量

代码语言:javascript
复制
export MOLCAS_WORKDIR=/scratch/$USER
export MOLCAS_MEM=16GB
export MOLCAS_PRINT=3
export MOLCAS_NPROCS=1
export PATH=/home/$USER/software/OpenMolcas_q/bin:$PATH
export MOLCAS=/home/$USER/software/OpenMolcas_q
export OMP_NUM_THREADS=16

注意MOLCAS环境变量较多,详细含义请参见官方PDF手册

代码语言:javascript
复制
https://molcas.gitlab.io/OpenMolcas/Manual.pdf

此处的设置仅为笔者个人偏好,不一定适合读者机子的实际情况。建议在~/.bashrc末尾写是因为过一会儿pymolcas才能被自动放至我们新建的bin目录里。执行source ~/.bashrc或退出重登录。

在编译前我们需要简单改一行代码,打开src/rasscf/cictl.f文件,搜索wfn_dmrg_checkpoint,dmrg,将这行底下的if (doDMRG) then往上挪两行,即挪到#ifdef _DMRG_行下,否则输出文件经常报HDF5-DIAG: Error detected in HDF5的错误,它不影响计算结果,但是看着很乱。官方说以后的OpenMolcas会做这个改动,届时我们就不用自己改了,当前我们只能手动改一下。然后配置编译参数,在OpenMolcas_q文件夹内执行

代码语言:javascript
复制
mkdir build && cd build
CC=gcc CXX=g++ FC=gfortran cmake -DLINALG=MKL -DOPENMP=ON \
-DDMRG=ON -DNEVPT2=ON \
-DCMAKE_INSTALL_PREFIX=/home/$USER/software/OpenMolcas_q ..

注意最后有两个点不要少,表示上级目录。到

代码语言:javascript
复制
https://github.com/qcscine/qcmaquis/releases
https://github.com/qcscine/nevpt2/releases

分别下载qcmaquis和nevpt2压缩包。接着仔细阅读以下步骤,必要时逐行复制粘贴

代码语言:javascript
复制
cd External/qcmaquis/tmp/
rm -f qcmaquis-gitclone.cmake qcmaquis-gitupdate.cmake
touch qcmaquis-gitclone.cmake qcmaquis-gitupdate.cmake
cd ../src/
rm -rf qcmaquis
将下载好的qcmaquis压缩包发送至此处
tar -zxf qcmaquis-release-3.0.1.tar.gz
mv qcmaquis-release-3.0.1 qcmaquis
rm -rf qcmaquis-release-3.0.1.tar.gz

cd ../../nevpt2_ext/tmp
rm -f nevpt2_ext-gitclone.cmake nevpt2_ext-gitupdate.cmake
touch nevpt2_ext-gitclone.cmake nevpt2_ext-gitupdate.cmake
cd ../src/
rm -rf nevpt2_ext
将下载好的nevpt2压缩包发送至此处
tar -zxf nevpt2-release-3.0.tar.gz
mv nevpt2-release-3.0 nevpt2_ext
rm -rf nevpt2-release-3.0.tar.gz

cd ../../..
make -j16
make install

16核编译仅需约2分钟。执行ls ../bin/可以看到许多.exe可执行文件和pymolcas(这是我们使用OpenMolcas的脚本)

5. 测试OpenMolcas是否正常工作

我们到一个新的文件夹里去,执行pymolcas --version查看版本号

代码语言:javascript
复制
mkdir ~/molcas_examples
cd ~/molcas_examples
pymolcas --version

应显示类似如下信息

代码语言:javascript
复制
python driver version = py2.14
(after the original perl EMIL interpreter of Valera Veryazov)

随意测试几个OpenMolcas自带标准算例

代码语言:javascript
复制
pymolcas verify standard:000
pymolcas verify standard:075
pymolcas verify standard:097

自带标准算例位于OpenMolcas_q/test/standard/下,数目较多。

若想全部测试,去掉:000即可。

测试QCMaquis全部自带算例(位于OpenMolcas_q/test/qcmaquis/下)

代码语言:javascript
复制
pymolcas verify qcmaquis

这需要10-20分钟。在笔者机子上大部分例子通过,009号算例失败,看了下报错没啥影响。若几乎全都失败这说明安装有误,或库不满足要求。若读者想自己学做CASSCF、DMRG和NEVPT2等计算,可以模仿这些自带算例并结合官方手册学习,内容十分丰富。

顺便一提,笔者开发的MOKIT程序可以调用这些软件自动做多参考计算,无需学习使用OpenMolcas和QCMaquis,也无需学习复杂的CASSCF计算。MOKIT免费开源,可在

代码语言:javascript
复制
https://gitlab.com/jxzou/mokit

下载,其详细介绍请阅读《自动做多参考态计算的程序MOKIT》。下期笔者将展示MOKIT调用这些软件做DMRG等计算的例子。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子化学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档