量子化学程序ORCA的安装方法
文/Sobereva@北京科音 2018-Dec-21
0 前言
ORCA是一款对学术用户免费但不开源的量子化学程序,发展迅猛,流行程度越来越高,用户越来越多。虽然ORCA的安装很简单,都不需要编译源代码,但还是有不少量子化学初学者经常问怎么安装,这里就统一说一下。当随着ORCA程序更新,导致最新版安装方法与本文存在较大差异时,本文也将同步更新。目前下文对应的是4.1版。ORCA虽然有也有Mac版,但由于极其小众,安装方法这里就不提了。
ORCA官网是https://orcaforum.kofo.mpg.de,和ORCA论坛是绑定的。进去之后注册个新用户,登陆后就可以进入论坛,页面上方有Download按钮,进去就可以下载了。如果在国内下载太慢,在计算化学公社论坛http://bbs.keinsci.com的“量子化学”版的“资源分享”区里可以找到ORCA的百毒网盘链接。ORCA程序体积颇大(尺寸和版本关系很大),安装前最好保证目录下有至少10GB空间。
为了测试安装后ORCA是否能正常运行,这里提供个简单的测试文件,将之复制到比如test.inp里。此任务要求4核并行:
! BLYP def2-SVP noautostart miniprint pal4
* xyz 0 1
C 0.00000000 0.00000000 -0.56221066
H 0.00000000 -0.92444767 -1.10110537
H -0.00000000 0.92444767 -1.10110537
O 0.00000000 0.00000000 0.69618930
*
1 Windows版的安装
ORCA的Windows版只有64bit的,如果你还在坚持使用老掉牙的32bit Windows,就别指望用Windows版了,要么装64bit Windows系统,要么在现有的32bit Windows下用VMware虚拟机装个64bit Linux跑ORCA Linux版。
在ORCA的download页面里有好几种windows版。由于一般肯定是要做并行计算的,所以只能串行计算的serial only不要下载。带着MPI字样的都是并行版,有不同的压缩格式,为了省时间,建议下载尺寸较小的tar.zst后缀的压缩包,比如orca_4_1_0_win64_msmpi100.tar.zst。
.tar.zst中的.tar后缀代表这是个文件包,而.zst代表这个包是通过一种新兴的压缩率很高的名为Zstandard算法压缩后的。解压zst格式需要额外装zstd程序。zstd可以在其官网https://facebook.github.io/zstd/下载,点击上方的latest release,选择后缀为win64的zip包下载即可。然后把zstd的zip包解压,把ORCA的tar.zst压缩包放到这个目录里,进入Windows的命令行模式(按住shift点击右键,选择“在此处打开命令行窗口”或打开powershell窗口),然后输入比如zstd -d orca_4_1_0_win64_msmpi100.tar.zst,就把这个包解压成了.tar后缀的文件,然后用winrar、7zip之类的程序再把.tar包展开,就得到了ORCA文件夹,将之挪到恰当的位置。
ORCA是基于MPI库进行并行运算的程序,目前的版本在Windows下是依赖于Microsoft MPI (MSMPI)库运行的,因此还要给系统安装MSMPI。不同的ORCA版本要求的MSMPI库的版本也不同,比如ORCA程序包的文件名带着msmpi100,就说明需要MSMPI 10.0才能运行。Google一下MSMPI 10.0就可以立刻找到MSMPI的下载地址,下载并安装之即可。
下面测试ORCA能否正常并行运行。将本文开头的测试文件拷到某处,然后进入操作系统的命令行模式,输入比如D:\ORCA\orca H2CO.inp > H2CO.out来执行H2CO.inp并将输出信息输出到H2CO.out。注意输入文件要求并行计算时,必须像这样输入ORCA的绝对路径才行。如果计算中途的输出信息看起来很正常,最后也显示****ORCA TERMINATED NORMALLY****,就说明没问题。(如果并行不正常的话,可能会看到输出信息是混乱交错的,这是由于各个进程没有真正协同工作所致)
2 Linux版的安装
下面的内容涉及到一些最基本的Linux常识性知识,如果你对Linux是零基础,看下面内容之前建议看看《Gaussian的安装方法及运行时的相关问题》(http://sobereva.com/439)的1.1节。
2.1 安装OpenMPI
ORCA在Linux下是通过OpenMPI这种MPI库实现并行的。ORCA文件包的文件名当中直接体现了要求的OpenMPI库版本,比如文件名里有openmpi313就代表需要OpenMPI 3.1.3。所有版本的OpenMPI源代码都包可以在https://www.open-mpi.org上下载,比如3.1.3的下载地址为https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.3.tar.bz2。并行方式运行ORCA之前需要先编译OpenMPI库。
用诸如tar -xjf openmpi-3.1.3.tar.bz2命令解压之,进入此目录,输入以下命令,程序就会被安装到/sob/openmpi313目录下
./configure --prefix=/sob/openmpi313 --disable-builtin-atomics
make all install -j
注:这里用-j是为了通过并行编译降低编译过程耗时。但如果编译中途出现诡异报错,请去掉-j再试。
如果你的操作系统的shell是bash,就编辑用户目录下的.bashrc文件,比如用vi ~/.bashrc命令,将诸如以下两行加入到文件末尾
export PATH=$PATH:/sob/openmpi313/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/sob/openmpi313/lib
然后重新登录机子或者重新打开命令行,以上设置就生效了,可以输入比如mpiexec -V,如果正常显示出了OpenMPI的版本,说明已经装好了。之前解压出来的openmpi-3.1.3目录现在也可以删掉了。
2.2 安装ORCA
ORCA的Linux版分为静态库(static)版本和动态库(shared)版本。懂一些编程知识的人都知道差别是什么。ORCA包含一大批可执行文件,有很多子程序在多个可执行文件里被使用。如果开发者在编译ORCA时,这些被共用的子程序都被编译进每一个利用了它们的可执行文件里,就叫静态库版本,这种版本体积比较大。如果把将共用的子程序做成一个动态库文件,被各个可执行文件在实际运行的时候调用,就叫动态库或者共享库版本,这种版本体积比静态库版本要小。这两种版本在实际计算速度上没有可察觉的差别,因此建议使用动态库版本,下载耗时少而且省硬盘。动态库版本在文件包的名字里会有shared字样。
建议大家下载带着shared和.tar.xz字样的ORCA包,比如orca_4_1_0_linux_x86-64_shared_openmpi313.tar.xz。然后用
tar -xJf orca_4_1_0_linux_x86-64_shared_openmpi313.tar.xz
命令即可解压之。
注:虽然.tar.zst的ORCA包尺寸更小一点,但还得自己装zstd程序,略麻烦,所以这里不用。
假设ORCA解压后的目录是/sob/orca410/,就在.bashrc文件里加入
export PATH=$PATH:/sob/orca410
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/sob/orca410
重新进入终端令以上语句生效后即可运行ORCA,并行运行时必须写明ORCA的绝对路径,如:
/sob/orca/orca410 test.inp > test.out
如果懒得每次都写绝对路径,可以在.bashrc里加上下面这句
alias orca='/sob/orca410/orca'
这代表令orca命令等价于/sob/orca410/orca。
2.3 相关问题
如果你在编译OpenMPI的时候提示找不到编译器,说明你机子里没装gcc,安装方法一Google就有。对于比如CentOS、Fedora系统,可以用yum install gcc来安装。
如果你是在root用户下使用ORCA,必须每次执行的命令都带着-allow-run-as-root选项才行,这很烦人,但可以通过在编译OpenMPI之前修改OpenMPI的源代码来避免,见《root用户在用openmpi并行计算时避免加--allow-run-as-root的方法》(http://sobereva.com/409)。
如果你的机子里之前装有其它MPI库或OpenMPI的其它版本,且在终端里输入which mpiexec命令的时候指向的是那些库的目录,则ORCA有极大几率会无法正常并行,需要你恰当处理以避免其优先级盖过你自己新装的OpenMPI。
有些系统如CentOS自带了名为orca的带有图形界面的屏幕阅读器程序,直接输入orca命令启动的是那个程序,和本文的orca毫无联系。应当用rpm -e orca命令将自带的那个orca卸载掉。