|
本帖最后由 量化小王子 于 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
复制代码
|
-
-
1.sh
1.04 KB, 下载次数 Times of downloads: 20
评分 Rate
-
查看全部评分 View all ratings
|