GAMESS-US 2013-May、2014-Dec、2016-Aug版编译方法

GAMESS-US 2013-May、2014-Dec、2016-Aug版编译方法

Compilation method of GAMESS-US version 2013-May, 2014-Dec, 2016-Aug

文/Sobereva @北京科音
First release: 2013-Jul-3   Last update: 2021-Apr-6


不同版本的GAMESS-US的编译方法总有一些不同。本文介绍GAMESS-US 2013-May和2014-Dec版编译方法。不同版本的GAMESS-US的编译方法总有一些不同。本文介绍GAMESS-US 2013-May和2014-Dec版编译方法。2016-Aug版编译方法和本文一样,只不过下面输入skip那一步改为输入proceed就行了。
GAMESS-US 2011-Aug-11版编译方法见http://sobereva.com/105
GAMESS-US 2009 R3版编译方法见http://sobereva.com/50

2021-Apr-6注:本文的编译方法对于CentOS 8结合Intel OneAPI 2021版编译GAMESS-US 2020(R2)版经测试依然使用。但是执行./config生成配置文件的对话有所变化,需根据提示随机应变。让你输入mkl版本号的时候应当输入12而不要输入当前实际版本号,否则在执行./lked gamess 00的时候无法连接MKL。此外,第4节在switch (`hostname`)后面插入额外内容的那一步不再需要。

编译环境:
编译器和数学库:ifort 12.1.0+MKL。均安装在默认路径。编译器的获取方法可参考《Amber11+AmberTools1.5及CUDA版安装方法,以及Amber12安装方法》(http://sobereva.com/103
系统:RHEL6-U1 64bit(Vmware7.1.2虚拟机)
用户:root
计算姬:Toshiba X500 (i7-2630QM)。程序将安装在/sob/gamess下。

 

1. 生成配置文件
将压缩包解压至/sob/gamess,并进入此目录
执行./config,依次输入([enter]代表直接敲回车跳过提示)
[enter]
linux64
[enter]   //使用默认路径
[enter]   //使用默认路径
[enter]   //使用默认版本号00
ifort
12
[enter]   //忽略ifort 12.0有bug的提示
[enter]
mkl
/opt/intel/mkl
skip
[enter]
[enter]
sockets
no  //不尝试LIBCCHEM,这是用来通过nVidia的GPU加速HF和MP2任务用的,还很不成熟。
此时配置文件install.info在当前目录下生成了


2. 编译ddi
cd ddi
./compddi
把得到的ddikick.x移动到上一级目录,即/sob/gamess下。


3. 编译代码并连接为可执行文件
cd ..
./compall
经过十几分钟的编译,objects目录下生成了近300个文件。并且/sob/gamess下产生了gamess.00.x可执行文件。(如果没产生,手动执行./lked gamess 00)

注:如果你的CPU核心超过32个,应当将compddi里第一次的set MAXCPUS=后面的值改为当前的CPU核心数之后再执行compddi。


4. 配置运行环境
建立/sob/gamess/scr文件夹
对/sob/gamess/rungms文件作如下修改:
把set TARGET=sockets下面的三行改为
set SCR=/sob/gamess/scr
set USERSCR=/sob/gamess/scr
set GMSPATH=/sob/gamess

把这里的NCPUS后面的数值改成想默认用的CPU核心数:if (null$NCPUS == null) set NCPUS=1

为了能单机多核计算,在switch (`hostname`)这行下面插入以下内容。其中xxx是本机名,即运行hostname命令所显示的内容。
         case xxx:
            set NNODES=1
            set HOSTLIST=(`hostname`:cpus=$NCPUS)
            breaksw

PS:建议在rungms文件一开头的#!/bin/csh部分下方加上rm -f /sob/gamess/scr/*,使得每次调用rungms时都自动清空临时目录。

之后就可以用比如./rungms test.inp来运行了,并行运算用的核数就是上面NCPUS设的。如果想指定用比如3个核心并行运行,则用./rungms test.inp 00 3。


5. 测试
把/sob/gamess/runall文件里第一处si.msg.chem.iastate.edu改为本机名。把./rungms exam$NUM $VERNO 1里面的1改为并行的核数。

运行./runall 00进行测试,一开始按回车。共47个测试任务将依次执行,产生的log文件产生在/sob/gamess下。
将所有产生的log文件拷贝到/sob/gamess/tests/standard目录下,进入此目录后运行./checktst,此脚本会将计算结果与标准结果进行对照。笔者机子上47个测试任务的结果全部检验通过。

注意如果之前已经用runall做过了测试,那么应当先把/sob/gamess/scr目录下清空。