计算化学公社
标题:
slurm一键批量提交Gaussian任务至超算集群
[打印本页]
作者Author:
量化小王子
时间:
2024-1-23 23:57
标题:
slurm一键批量提交Gaussian任务至超算集群
本帖最后由 量化小王子 于 2024-1-24 00:16 编辑
小菜鸟之前发过一篇帖子
求助slurm一键提交批量Gaussian任务的实现 - 量子化学 (Quantum Chemistry) - 计算化学公社 (keinsci.com)
,在大神的指导下,利用脚本可以批量提交Gaussian任务,但是提交完毕,发现所有任务都提交到同一个节点,所以最后不了了之,幸运的是,在博主@tiandikuoyuan
批量提交Gaussian任务至pbs队列的脚本 - 量子化学 (Quantum Chemistry) - 计算化学公社 (keinsci.com)
帖子中,有类似脚本,在此基础上,做了小小的改动,使之可以使用slurm作业系统实现批量提交文件内Gaussian任务,并且可以实现跳过已经计算过的任务和计算结束后将chk文件转化成fchk文件,最后还是要感谢博主@tiandikuoyuan,让我可以在提交计算任务时,不用新建多个sh计算脚本。
#!/bin/bash
for inf in *.gjf
do
cat > ${inf%.gjf}.sh << "EOF"
#!/bin/bash
#BATCH -J Go
#SBATCH -p high
#SBATCH -N 1
#SBATCH -n 28
#SBATCH --mem=112GB
#SBATCH --output=%j.out
#SBATCH --error=%j.err
echo ${SLURM_JOB_NODELIST}
echo start on $(date)
INPUT_NAME=1 ##这里输入文件名,不含拓展名##
g16 $INPUT_NAME.gjf
wait
formchk $INPUT_NAME.chk
echo `date +"%Y-%m-%d %H:%M:%S"` job has been completed! >> /public/home/nwnuliujc/log/${inf%.gjf}.log
EOF
path=$(cd "$(dirname "$inf")";pwd)
if [ ! -f ${inf//gjf/log} ]; ##判断gjf文件是否存在对应的log文件
then
name="INPUT_NAME="${inf%.*}
filename="$path/$inf"
sed -i -r "s/(INPUT_NAME=)[^#]*/$name /" ${inf%.gjf}.sh
sed -i -r "s?job?$filename?" ${inf%.gjf}.sh ##替换${inf%.gjf}.sh中文件路径
sbatch ${inf%.gjf}.sh
echo `date +"%Y-%m-%d %H:%M:%S"` ${path}/${inf} has been submitted! >> /public/home/nwnuliujc/log/${inf%.gjf}.log
else
echo `date +"%Y-%m-%d %H:%M:%S"` ${path}/${inf} has been calculated! >> /public/home/nwnuliujc/log/${inf%.gjf}.log
fi
done
rm -f ${inf%.gjf}.sh
复制代码
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3