GAMESS编译教程
在免费的量子化学计算软件中使用最多的应该要数GAMESS了,GAMESS的功能十分强大,能完成多种类型的计算任务,很大程度上可以成为Gaussian的替代品。当然GAMESS也有很多缺点,笔者自身的使用感受是:一、没有官方的配套可视化软件,这会给很多非专业的用户在构建输入文件和分析计算结果时带来麻烦;二、输入文件的构建极其不友好;三、基组默认使用6D,作为一个开源软件,这会给开发者带来一定的麻烦;四、SCF收敛写得极差。好了,不再数落了,毕竟有时候还是要用的。
首先到GAMESS官网填写邮箱等信息之后,获得下载网页的密码,到对应网站下载源代码,笔者所用的机器环境为64位CentOS 7,intel编译器,因此下载如下版本:
GAMESS version November 11, 2017 R3 for 64 bit IA64/x86_64 under Linux with Intel compilers
以下使用root用户进行安装,并确保安装完成后普通用户均可使用。编译环境:Intel Xeon E5 2670处理器,64位CentOS 7,ifort 18.0.1,MKL数学库,
解压源文件压缩包到/opt目录下
tar -zxvf gamess-current.tar.gz
得到gamess目录。
进入gamess目录,执行./config,开始进行配置。
(1) enter
(2) 输入机器类型:linux64
(3) 设置安装目录,由于我已经将源文件解压到/opt下,所以可选默认路径,直接回车,也可自己定义路径
(4) enter
(5) 版本号,可以自己设定,默认为00,则编译完成后会生成gamess.00.x可执行文件
(6) 选择fortran编译器,此处填ifort
(7) 编译器版本号,此处填18
(8) enter
(9) 选择数学库版本,此处填mkl
(10) 填写MKL库路径,此处需要自己去寻找机器上MKL库的路径,笔者的机器为/opt/intel/mkl
(11) proceed
(12) enter
(13) enter
(14) 一般做节点内并行,选sockets即可
(15) no
至此配置结束。
后面的安装过程在/opt/gamess/machines/readme.unix文件中有详细介绍,可以参考。
编译DDI,这是GAMESS官方的并行库。
(1) 进入ddi目录:cd ddi
(2) ./compddi
(3) 注意编译完了的提示:mv ddikick.x ..,照做就是。
编译源代码并生成可执行文件
(1) 退出ddi目录:cd ..
(2) ./compall,这一步会有很多屏幕输出,也可按官方的方法将屏幕输出写入一个文件:./compall >& compall.log &,若编译过程出错,可以在这个log文件中查看。这一步需要的时间比较长,官方提示你可以去喝杯咖啡。
(3) 喝完咖啡进行链接:./lked gamess 00,不出意外的话,就可以看到gamess.00.x可执行程序生成了。
修改rungms脚本
GAMESS的最终运行是用rungms这个脚本来实现的,我们需要根据实际的运行环境修改这个脚本。
(1) 在一开始的一大堆注释结束后,对下面几个变量进行修改:
set SCR=/scratch/$USER/gamess #这是临时文件目录
set USERSCR=/scratch/$USER/gamess #同上
set GMSPATH=/opt/gamess #GAMESS的安装目录
(2) 下面几行实际上提示了GAMESS的运行命令:
set JOB=$1 #作业名称,即输入文件名称
set VERNO=$2 #版本号,例如我们刚刚编译的00版本
set NCPUS=$3 #使用的进程数
因此,GAMESS的运行命令为:
rungms XXX 00 16 >& XXX.out &
(3) 下面两行即为上面两个变量的默认值:
if (null$VERNO == null) set VERNO=00
if (null$NCPUS == null) set NCPUS=1根据自己的实际情况进行设置。
(4) 并行运算设置:
向下找到
if ($NCPUS > 1) then
switch (`hostname`)在这个switch语句中添加一个case语句:
case node01: #输入节点名字
if ($NCPUS > 16) set NCPUS=16 #最多使用进程数
set NNODES=1
set HOSTLIST=(`hostname`:cpus=$NCPUS)
breaksw用户将/opt/gamess这个目录写入环境变量:
export PATH=$PATH:/opt/gamess
至此全部安装完毕。使用上面提到的命令即可进行GAMESS的计算。如果手头有输入文件,可以进行测试,如果看到最后输出ddikick.x: exited gracefully.,则说明运行成功。关于GAMESS的详细使用,我们后面会陆续写一些教程,GAMESS官方也有很详细的说明书可以参考。