自定义脚本提交作业
管理员写的脚本命令只照顾到绝大多数的要求,有少部分需要通过自定义写脚本来解决。分两种情况,一部分是已有软件,另一部分是用户自己安装的软件怎么写提交脚本?
- 已有软件
以VASP为例,可能需要用到k点测试等小脚本,这时可以先使用chemvasp test 8提交作业,再使用“scancel 相应jobid”杀掉刚提交的作业这时产生一个test.sh的作业脚本文件
用
vi test.sh
编辑,在作业运行命令mpirun这一行的上面使用k点测试小脚本;如果是对vasp计算结果后处理,也想直接用一个脚本处理,那就在mpirun这一行的命令下面行添加自己的执行脚本 改好test.sh脚本文件后,用sbatch test.sh
或者qsub test.sh
提交作业 - 未在软件列表的软件 不在集群软件列表的软件,需要编写slurm作业提交脚本文件,用sbatch或qsub提交。要想写好slurm作业提交脚本文件,需要了解SLURM作业管理系统的环境变量、分区等。
分区或队列¶
[userA@quantum ~]$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
gy-grp up infinite 1 mix cu04
gy-grp up infinite 3 alloc cu[01-03]
gy-grp up infinite 4 idle cu[05-08]
zcy-a up infinite 2 mix cu[09-10]
zcy-a up infinite 1 alloc cu11
zcy-b up infinite 3 alloc cu[12-14]
zcy-c up infinite 4 alloc cu[15-18]
zcy-d up infinite 3 mix cu[19-21]
yan-grp up infinite 1 mix cu31
yan-grp up infinite 10 idle cu[22-30,32]
hu-grp up infinite 1 idle cu33
xu-a up infinite 1 idle cu34
xu-b* up infinite 4 mix cu[35,38,42-43]
xu-b* up infinite 5 alloc cu[36-37,39-41]
xu-b* up infinite 3 idle cu[44-46]
环境变量¶
变量名称 | 描述 |
---|---|
$SLURM_SUBMIT_DIR | 提交作业命令的工作目录 |
$SLURM_JOB_USER | 提交作业的主机上作业拥有者的登录名称 |
$SLURM_JOBID | 提交作业时,分配给作业的专有标识符 |
$SLURM_NTASKS | 并行作业所用的核数 |
$SLURM_JOB_NUM_NODES | 并行作业所使用的主机数量 |
编写slurm作业提交脚本¶
以MultiWFN软件提交作业为例,编写multiwfn.sh脚本
#!/bin/bash
# Job submission script for SLURM:
# Usage: sbatch <this_script>
##############脚本第一部分,声明SLURM作业管理系统的请求资源参数#####################
#SBATCH -p gy-grp
#SBATCH -J test_multiwfn
#SBATCH -o test_multiwfn.o%j
#SBATCH -N 1
#SBATCH --ntasks-per-node=8
#SBATCH -t 1538:00:00
########################请求资源参数的解释###################################
# -J: 作业名称
# -o: 标准输出stdout
# -e: 标准错误stderr,不写-e,标准输出stdout和标准错误stderr合并到.ojobid文件中
# -N: 请求的节点数目
# -n: 请求的总核数,如果-N后为1,等同于--ntasks-per-node
# -t: 时间限制
# -p: 申请的分区
# -w: 后面跟请求的指定节点名称
#############################################################################
#################脚本第二部分,定义要运行作业软件的环境变量#######################
# go to work dir
cd $SLURM_SUBMIT_DIR
# export the environment variables of Multiwfn
export Multiwfnpath=/opt/soft/Multiwfn/3.8_dev_20231225
export PATH=$PATH:.:$Multiwfnpath
export KMP_STACKSIZE=100000000
sed "s/nthreads= 4/nthreads= $SLURM_NTASKS/" $Multiwfnpath/settings.ini > settings.ini
export GAUSS_MEMDEF=16GB
########################脚本第三部分,运行作业的命令############################
echo "Starting MultiWFN run at" `date`
# The program we want to execute,根据自己的作业,主要修改的也是下面这一行
echo -e "8\n1\n1\n2\n3" | Multiwfn COCl2.fch
echo "Finished MultiWFN run at" `date`
本站总访问量 次