OpenMolcas 与 QCMaquis 的安装
Molcas 是由瑞典隆德大学主导开发的一个广泛使用的从头算量子化学计算程序,其 CASPT2 计算的速度相比另一个广泛使用的软件包 Molpro 明显更快。此程序之前是收费的;现在此程序的大部分代码已经开源,并且放到了 GitLab 上,称为 OpenMolcas。QCMaquis 则是苏黎世联邦理工学院 Markus Reiher 教授研究组开发的密度矩阵重整化群(DMRG)计算程序,可以和 Molcas 结合进行 DMRG-SCF/NEVPT2 计算,且代码也在 GitLab 开源(但是需要额外申请才可以访问)。本文简要介绍一下 OpenMolcas 与 QCMaquis 程序的编译和安装。
依赖
git
cmake version >= 3.0,有 ccmake 更佳
intel Math Kernel Library
Python 2 (程序名为
python
) 和 Python 3 (程序名为python3
)在 Python 2 中安装 numpy 与 scipy,在 Python 3 中安装 pyparsing
HDF5
GNU Scientific Library: gsl-devel
安装流程
申请 GitLab (https://gitlab.com) 帐号,添加机器的 ssh key。如果还要使用 QCMaquis,则需要申请 QCMaquis 的访问权限 (https://gitlab.com/qc-maquis) (申请通过需要一段时间)。
下载 OpenMolcas 的源代码 (https://gitlab.com/Molcas/OpenMolcas) (建议在 Tag 中寻找 verified snapshot 进行下载)。
创建编译文件夹。
在编译文件夹内执行
CC=gcc CXX=g++ FC=gfortran cmake -DLINALG=MKL -DOPENMP=ON path-to-the-source-folder
,其中path-to-the-source-folder
即为解压后的 OpenMolcas 源代码所在路径。如果要编译 QCMaquis,则需要再增加选项-DDMRG=ON
; NEVPT2 部分需再加-DNEVPT2=ON
。可以使用ccmake
方便地打开对应的编译开关。执行
make -j n
进行编译,其中n
为并行编译使用的并发数。注意在编译过程中会连接 GitLab 网站下载 QCMaquis 及其他依赖的源代码,所以需要保证网络畅通。如果是第一次用 git 连接到 GitLab,还需要手动确认一下。编译完成之后会有添加 QCMaquis 相关环境变量的提示。除此之外,需要声明环境变量
MOLCAS
为当前的编译文件夹,并且将 QCMaquis 相关环境变量添加到 bashrc。
需要注意的问题
当前帐号必须对环境变量
$PATH
中的至少一个路径可写,否则pymolcas
脚本无法被保存。如果使用普通用户身份进行编译安装,请在编译之前创建一个路径用于安置pymolcas
且将此路径加入当前用户的$PATH
。目前推荐使用 GNU 编译器,因为 intel 编译器编译完之后的 rasscf 与 dmrgscf 模块会有段错误,此 bug 在 2015 到 2018 版的所有 intel 编译器上都存在。将默认的优化级别
-O2
修改为-O3
是可以的,这些细节参数的调整推荐使用ccmake
。为了避免执行 cmake 时遇到路径相关的错误,建议在解压后的 OpenMolcas 源代码文件夹中创建编译路径。例如,解压后的源代码文件夹是
OpenMolcas
,创建编译路径为OpenMolcas/build
,则在build
路径下执行cmake ..
。OpenMolcas 的环境变量设置与以前的收费版本 Molcas 完全相同,输入格式也完全相同,可参考 Molcas 的官方说明。这两个版本最大的区别是 OpenMolcas 执行计算时使用 Python 3 脚本
pymolcas
而非以前 Molcas 的可执行程序molcas
。建议编译和使用 OpenMolcas 以及 QCMaquis 时不要安装和使用 Anaconda,当然如果已经安装了 Anaconda 的话只需要暂时注释掉相关环境变量即可。
实战
在一台 CentOS 7.4.1708 系统的计算机上安装 OpenMolcas 和 QCMaquis,假设已安装好 python2, gsl-devel, git, intel MKL 与 HDF5 并且已申请好 GitLab 帐号与权限,ssh key 也已经添加。CentOS 7 默认软件仓库里的 cmake 版本太旧,并且没有 Python 3。我们从解决依赖开始进行 OpenMolcas 与 QCMaquis 的安装。
安装 Python 3
可以自行编译 Python 3.6 并且安装,不过这种方式可能导致 pip
执行时的错误。一种简单的方法是安装 epel 仓库,即,在 root 权限下执行
yum -y install epel-release
然后执行
yum -y install python36
这样即可安装 Python 3.6,但是并没有可执行程序 python3
,需要创建链接
ln -s /usr/bin/python3.6 /usr/bin/python3
接下来需要安装 pip
,执行
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
最后一步是安装 pyparsing,执行
pip3 install pyparsing
安装 cmake 以及 ccmake
cmake 是一个自动化构建系统,可以自动地根据平台和参数生成对应的 Makefile。ccmake 是 cmake 的一个伪图形化界面,可以用来方便地修改 cmake 参数。如果直接编译安装 cmake,那么很大概率是没有 ccmake 的,因为 ccmake 依赖 ncurses。在编译 cmake 之前,执行
yum -y install ncurses-devel
编译 OpenMolcas 与 QCMaquis
假定用户名为 example,我们将 OpenMolcas 的源代码解压至 /home/example/Applications/OpenMolcas
(即,此路径下有 basis_library, CMakeLists.txt 等文件和文件夹),编译位置为此路径下的 build
文件夹。进入路径 /home/example/Applications/OpenMolcas/build
,执行
CC=gcc CXX=g++ FC=gfortran cmake -DLINALG=MKL -DOPENMP=ON -DDMRG=ON ..
这些选项的含义是:
- CC=gcc
: C 编译器使用 gcc
- CXX=g++
: C++ 编译器使用 g++
- FC=gfortran
: Fortran 编译器使用 gfortran
- -DLINALG=MKL
: 线性代数库使用 intel MKL
- -DOPENMP=ON
: 使用 OpenMP 并行
- -DDMRG=ON
: 编译 QCMaquis
- ..
: 源代码路径为当前路径的上一级目录
可以使用
ccmake .
进一步修改编译选项。ccmake
修改选项之后需要按 C
键重新进行配置,然后按 G
键重新生成 Makefile。
假设当前计算机有 28 个 CPU 核心,则执行
make -j 28
进行并行编译。如果当前用户对 $PATH
里的任何文件夹都没有写入权限,那么编译会报错,因为无法放置 pymolcas
脚本。此时只需要将一个能够进行写入的路径添加到 $PATH
中,刷新环境变量之后重新编译。
编译完成之后需要配置环境变量。将如下的内容加入到 /home/example/.bashrc
中:
export MOLCAS=/home/example/Applications/OpenMolcas/build # 编译路径
MOLCAS_MEM=120000 # 内存使用上限
MOLCAS_WORKDIR=/scratch # 临时文件路径
MOLCAS_KEEP_WORKDIR=YES # 计算完成后保留临时文件
MOLCAS_NPROC=28 # 并发线程数
需要注意的是,执行计算的用户必须对临时文件路径有可写权限。另外,如果编译了 QCMaquis,则还需要添加如下的部分:
source /home/example/Applications/OpenMolcas/build/qcmaquis/bin/qcmaquis.sh
export PATH=/home/example/Applications/OpenMolcas/build/alps/bin:/home/example/Applications/OpenMolcas/build/qcmaquis/bin:$PATH
export PYTHONPATH=/home/example/Applications/OpenMolcas/build/alps/lib:/home/example/Applications/OpenMolcas/build/qcmaquis/lib/python/pyeval:/home/example/Applications/OpenMolcas/build/qcmaquis/lib/python:$PYTHONPATH
export LD_LIBRARY_PATH=/home/example/Applications/OpenMolcas/build/alps/lib:$LD_LIBRARY_PATH
可以通过
which pymolcas
来确定 pymolcas
脚本的位置。有时候可能找不到此文件,可以在此处(http://static.shaula.cn/share/pymolcas)下载。