欢迎光临
我们一直在努力

Gaussian 16‌ Slurm作业自提交脚本

[root@master1 InspurRun]# cat RunG16
#!/bin/bash

JOBN=$1.sbatch

if [ $# -ne 1 ];then
        echo "Usage:$0 <Input.File> "
        echo "e.g., $0 A.gjf ,to submit a job named A and compute cores by nprocshared in A.gjf"
        exit -1
fi

echo -e "\\e[32;5;1mStep NO 1 : Create $JOBN \\e[0m"

GJF_FILE=$1

NCPU=$(grep -i "^%nprocshared" "${GJF_FILE}" | head -1 | sed -E 's/^%nprocshared=([0-9]+).*/\\1/')

if [ -z "${NCPU}" ];then
    echo "错误:在${GJF_FILE}未找到 %nprocshared=数字"
    exit 1
fi

echo "从${GJF_FILE}读取到CPU核心数:${NCPU}"

cat << EOF > $JOBN
#!/bin/bash
#SBATCH –job-name=$1
#SBATCH –partition=CPU
#SBATCH –nodes=1
#SBATCH –ntasks-per-node=1
#SBATCH –cpus-per-task=$NCPU
#SBATCH –error=%x.%j.err
#SBATCH –output=%x.%j.out

CURDIR=\\`pwd\\`

SLOG=\\$SLURM_JOB_NAME.\\$SLURM_JOB_ID.log

echo "SLURM JOB NAME    :       \\$SLURM_JOB_NAME" | tee -a \\$SLOG
echo "SLURM JOB ID      :       \\$SLURM_JOB_ID" | tee -a \\$SLOG
echo "SLURM JOB NODELIST:       \\$SLURM_JOB_NODELIST" | tee -a \\$SLOG
echo "SLURM NPROCS      :       \\$SLURM_NPROCS" | tee -a \\$SLOG
echo "Work DIR is       :       \\$CURDIR" | tee -a \\$SLOG
echo " " | tee -a \\$SLOG

ulimit -s unlimited
ulimit -l unlimited
ulimit -a | tee -a \\$SLOG

NODES=\\`scontrol show hostnames \\$SLURM_JOB_NODELIST\\`
for i in \\$NODES
do
echo "\\$i:\\$SLURM_NTASKS_PER_NODE" >> \\$CURDIR/\\$SLURM_JOB_NAME.\\$SLURM_JOB_ID.nodelist
done

echo "process will start at : " | tee -a \\$SLOG
date | tee -a \\$SLOG
echo "++++++++++++++++++++++++++++++++++++++++" | tee -a \\$SLOG

export GAUSSIAN_ROOT=/home/software/g16
export g16root=/home/software/g16
export GAUSS_EXEDIR=\\$g16root
export PATH=\\${GAUSSIAN_ROOT}:\\$PATH

export GAUSS_SCRDIR=/tmp/\\$SLURM_JOB_ID/$1
mkdir -p \\${GAUSS_SCRDIR}

export OMP_NUM_THREADS=\\${SLURM_CPUS_PER_TASK}
export OMP_PROC_BIND=close

g16 $1

rm -rf \\${GAUSS_SCRDIR}

echo "process end at : " | tee -a \\$SLOG
date | tee -a \\$SLOG

rm -rf \\$CURDIR/\\$SLURM_JOB_NAME.\\$SLURM_JOB_ID.nodelist

echo "++++++++++++++++++++++++++++++++++++++++" | tee -a \\$SLOG
echo "processs will sleep 10s" | tee -a \\$SLOG
sleep 10 | tee -a \\$SLOG

EOF

###Run ENV CHECK LOG
##echo "++++++++++++++++++++++++++++++++++++++++" | tee -a \\$SLOG
##echo "ENV CHECK LOG  +++++++++++++++++++++++++" | tee -a \\$SLOG
##export | tee -a \\$SLOG

sleep 0.5
echo -e "\\e[32mDone\\e[0m"

echo -e "\\e[32;5;1mStep NO 2 : sbatch $JOBN \\e[0m"
sbatch $JOBN
sleep 0.1
echo -e "\\e[32mDone\\e[0m"

echo -e "\\e[32;5;1mNow Wait For queue\\e[0m"
sleep 1.5
squeue

[root@master1 InspurRun]#
 

赞(0)
未经允许不得转载:171主机测评 » Gaussian 16‌ Slurm作业自提交脚本
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址