一. 前言
在《教程如何在Linux下安装Gaussian 16》里详细讨论了如何安装Gaussian 16,并通过作业管理系统PBS、LSF来提交Gaussian作业。
如果您的Gaussian 16或Gaussian 09是带Linda的,则支持跨节点并行。本文的主要目的是描述如何在PBS队列管理系统里通过Linda实现跨节点并行。其它的作业管理系统与此类似,您可以举一反三。
二. 准备工作
软件的安装
与不带Linda的Gaussian一样,详见《教程如何在Linux下安装Gaussian 16》。需要强调的是,并没有独立的Linda软件:只有带Linda的Gaussian或不带Linda的Gaussian。因此,你只要安装Gaussian就可以了。如过您的光盘有“withLinda”的字样(见图1),则表示这是带Linda的Gaussian;如果没有,则不支持跨节点并行。
图1. 支持跨节点的Gaussian后面带个with Linda
Gaussian作业的准备
同单核心作业一样,比如作业文件demo.com:
--这里开始----
%chk=demo.chk
%Mem=24GB
#P APFD/6-311+g(2d,p) Opt integral(ultrafinegrid)
Structure: demo APFD/6-311+(2d,p) Opt
0 1
C -0.01670 1.38310 0.00960
C 1.17080 2.08890 0.00210
C 2.37740 1.41390 -0.01300
C 2.39880 0.03140 -0.02070
C 1.21410 -0.67890 -0.01320
C 0.00210 -0.00410 0.00200
O -1.16480 -0.70070 0.00990
H -0.95890 1.91070 0.02600
H 1.15670 3.16880 0.00770
H 3.30470 1.96750 -0.01930
H 3.34260 -0.49350 -0.03290
H 1.23130 -1.75880 -0.01950
H -1.49390 -0.90670 0.89550
!
--这里结束----
3. 环境变量的设置
见《教程如何在Linux下安装Gaussian 16》,鉴于要跨节点并行,需要设定跨节点的通讯协议。本文假设您的集群系统是通过ssh协议进行访问,则在环境变量(写在一个文件g16_env.sh)里设置如下:
#----从这里开始复制---
export g16root=~
export GAUSS_SCRDIR=$g16root/tmp
export GAUSS_LFLAGS="-vv -opt 'Tsnet.Node.lindarsharg: ssh'"
. $g16root/g16/bsd/g09.profile
#----到这里结束复制---
注意:不要忽略空格、“.”等符号,大小写区分。其中Gauss_LFLAGS行告诉Gaussian节点间通过ssh协议访问。
4. PBS作业脚本的准备
假设您的用户名为zdtest,你在您的HOME里安装了Gaussian 16,并且在demo目录里有个Gaussian作业叫test0397.com。假定您要通过PBS向系统请求2个计算节点、每个节点12个核心的计算资源进行计算。则典型的PBS脚本如下:
---------这里开始---------
#输出日志与错误日志
#PBS -o /home/zdtest/demo/test0397_pbs.log
#PBS -e /home/zdtest/demo/test0397_pbs.err
#请求计算资源
#请咨询您的系统管理员具体权限与方式
#PBS -l nodes=2:ppn=12
# 启用环境变量,第3步准备好的
source /home/zdtest/g16_env.sh
# 切换到当前工作目录
# cd $PBS_O_WORKDIR
cd /home/zdtest/demo
#下面一行(不要分为多行)是获取PBS请求到的计算节点
#并告诉Linda:我要在这些节点上进行并行计算
export GAUSS_WDEF="$(cat $PBS_NODEFILEsortuniqawk '' sed 's/,$//')"
#设定每节点SMP并行核心数
export GAUSS_PDEF="12"
#运行Gaussian作业
$g16root/g16/g16 test0397.com
-----到这里结束------
注意: 空格、“.”、“/”,“$”都是有用的,要区分大小写!
假设上述作业保存为:foo.pbs
5. 提交PBS作业,
qsub foo.pbs
领取专属 10元无门槛券
私享最新 技术干货