Gaussian 安装
手动配置环境变量
- 解压软件包
将安装包传入Linux系统任意合适位置,解压到自己主目录下
tar -zxvf G09.D01.tgz -C /root/ # root用户目录用这个
tar -zxvf G09.D01.tgz -C /home/kobe/ #其他用户用这个,kobe就是自己的用户名
- 创建临时文件夹
建立一个文件夹用于储存Gaussian运行过程中产生的临时文件
mkdir /root/g09/scratch # root用户
mkdir /home/kobe/g09/scratch # 其他用户
- 添加环境变量 root用户
echo 'export g09root=/root' >> /root/.bashrc # 指的是g09目录在/root/下
echo 'export GAUSS_SCRDIR=/root/g09/scratch' >> /root/.bashrc # 高斯临时文件夹的位置。上一步创建的
echo 'source /root/g09/bsd/g09.profile' >> /root/.bashrc # 高斯自带的各种环境配置文件
普通用户
echo 'export g09root=/home/kobe' >> /home/kobe/.bashrc
echo 'export GAUSS_SCRDIR=/home/kobe/g09/scratch' >> /home/kobe/.bashrc
echo 'source /home/kobe/g09/bsd/g09.profile' >> /home/kobe/.bashrc
- 使环境变量生效
source /root/.bashrc # root用户
source /home/kobe/.bashrc #普通用户
或者
重新进入终端使以上内容生效(如果你是用Linux图形环境,就关闭终端窗口,然后重新打开。如果你是通过ssh方式登录服务器,就断开连接,然后重新连接服务器)
5.(可跳过)计算资源配置
Gaussian目录下的Default.Route用来设定默认用的计算资源(如果没有此文件就新建一个),-M-设置默认用的最大内存量(一般用MB或GB为单位,也可以用MW和GW,1MW=8MB、1GW=8GB),-P-设置默认用多少CPU核数来并行计算。比如我们想默认用36个核心、最大60GB内存做计算,就在/home/sob/g09/Default.Route里面写入以下内容
-M- 60GB
-P- 36
此文件中的设置优先级低于输入文件里的%mem和%nproc设置。因此,输入文件里没写%mem的时候才会用这里的-M-设置,输入文件里没写%nproc的时候才会使用这里的-P-设置。如果你既没在这里设-P-也没写%nproc,那么程序只用单核计算。如果你既没在这里设-M-也没写%mem,那么G09最多用256MB内存,G16最多用800MB内存(注:值得一提的是G16 C.01有bug,Default.Route里的-M-不生效,必须自己靠%mem方式定义内存。其它版本Gaussian没这个问题)。
- g09权限设置
切换到/root/g09/(/home/kobe/g09/)下,执行
chmod 750 -R *
或者
chmod 750 -R /root/g09/
- 测试
[root@mgt ~]# cd /root/g09/tests/com/
[root@mgt com]# g09 < test0000.com > test.out
[root@mgt com]# cat test.out
Entering Gaussian System, Link 0=g09
Initial command:
/root/g09/l1.exe "/root/g09/scratch/Gau-50835.inp" -scrdir="/root/g09/scratch/"
Entering Link 1 = /root/g09/l1.exe PID= 50836.
Copyright (c) 1988,1990,1992,1993,1995,1998,2003,2009,2013,
Gaussian, Inc. All Rights Reserved.
This is part of the Gaussian(R) 09 program. It is based on
the Gaussian(R) 03 system (copyright 2003, Gaussian, Inc.),
the Gaussian(R) 98 system (copyright 1998, Gaussian, Inc.),
脚本配置运行
#!/bin/bash
#SBATCH -J test #(输入文件文件名,用户根据要跑的文件名自行修改)
#SBATCH -N 1
#SBATCH -n 28
#SBATCH --ntasks-per-node=28
#SBATCH --partition=normal
#SBATCH --output=%j.out
#SBATCH --error=%j.err
export g09root=/root
mkdir -p /tmp/$SLURM_JOB_ID
export GAUSS_SCRDIR=/tmp/$SLURM_JOB_ID
source $g09root/g09/bsd/g09.profile
#Program run command, don't need to modify.
echo "The job start time at: $(date)"
g09 < $SLURM_JOB_NAME.gjf > $SLURM_JOB_NAME.log
rm -rf /tmp/$SLURM_JOB_ID
echo "The job end time at: $(date)"
#SBATCH -J test0000
:
-J
用于指定作业名称,这里作业名称被设置为test0000
。作业名称便于作业识别和管理。#SBATCH -N 1
:
-N
用于指定需要为此作业分配的节点数。此处,请求分配 1 个计算节点。#SBATCH -n 28
:
-n
用于指定作业的总CPU核心数,这里请求总共 28 个核心。#SBATCH --ntasks-per-node=28
:
--ntasks-per-node
用于指定每个节点上运行的任务数(通常对应于 CPU 核心数)。此处指定在每个分配的节点上运行 28 个任务。#SBATCH --partition=normal
:
--partition
指定了提交作业到哪个分区(队列)。SLURM 可以管理多个分区,不同分区可以代表不同的节点集合、不同的用户组或者不同的资源限制。这里指定作业提交到名为normal
的分区。#SBATCH --output=%j.out
:
--output
用于定义捕获作业标准输出的文件名。%j
是作业 ID 的占位符,它会被替换为实际的作业 ID。因此标准输出会被保存到一个以作业 ID 命名的.out
文件中。#SBATCH --error=%j.err
:
--error
用于定义捕获作业标准错误输出的文件名。与--output
类似,%j
会被替换为作业 ID,标准错误输出会被写入到一个以作业 ID 命名的.err
文件中。
测试算例
- 进入算例目录
cd g09/tests/com
依次执行多个指令
比如要依次执行g09 < 1.gjf > 1.out、g09 < 2.gjf > 2.out、g09 < 3.gjf > 3.out,可以只输入一条命令,每条命令间用分号隔开:
g09 < 1.gjf > 1.out;g09 < 2.gjf > 2.out;g09 < 3.gjf > 3.out
也可以写一个文本文件比如t.sh,里面写上
g09 < 1.gjf > 1.out
g09 < 2.gjf > 2.out
g09 < 3.gjf > 3.out
然后用chmod +x *给sh文件加上可执行权限,再输入./t.sh运行即可(后同)。
2. 提交 SLURM 作业
假设 run.sh
是一个存在的有效 SLURM 脚本,它已经正确设置。需要每个节点都正确配置了软件
详情参考http://bbs.keinsci.com/thread-14301-1-1.html
sbatch run.sh
-
查看作业结果
squeue查看slurm作业确保作业号替换为实际的 SLURM 作业编号。
cat 作业号.out