计算化学公社

标题: VASP如何构建pbs任务脚本 [打印本页]

作者
Author:
天空之城    时间: 2017-10-21 21:57
标题: VASP如何构建pbs任务脚本
本帖最后由 天空之城 于 2017-10-21 22:50 编辑

   请教一下如果写vasp的pbs任务脚本
谢谢

作者
Author:
zsu007    时间: 2017-10-22 00:01
#!/bin/bash
#========================================#
# PBS Job submission script for VASP
#========================================#
# 1. PBS job control

#PBS -S /bin/bash
#PBS -N vasp4.6
#PBS -j oe
#PBS -q Acb65
#PBS -l nodes=1:ppn=12
##PBS -l walltime=00:30:00
#PBS -V

#========================================#
# 2. Job specification

cd ${PBS_O_WORKDIR}


inputfile="INCAR"

#========================================#
# 3. Integrity check
export LANG=C
source /public/software/profile.d/intel-env.sh
source /public/software/profile.d/impi-env.sh
export I_MPI_DEVICE=rdssm
export I_MPI_PIN=off

echo
echo "Starting VASP run at" `date`
echo
master=`hostname`
echo "The job submission node is $master"
echo "The working directory is " ${PBS_O_WORKDIR}

echo "VASP input file is" ${PBS_O_WORKDIR}/${inputfile}


#========================================#
# 4. Parallel execution
# make sure to use serial math lib
export MKL_SERIAL=YES
export MKL_NUM_THREADS=1
export OMP_NUM_THREADS=1
export GOTO_NUM_THREADS=1

echo
echo "VASP execution start at" `date`
echo

## Show system info
hostname > host.info
grep 'Linux' /etc/issue >> host.info
grep 'model name' /proc/cpuinfo |cut -d: -f2 |uniq -c >> host.info
grep 'cpu M' /proc/cpuinfo >> host.info
grep 'MemTotal' /proc/meminfo >> host.info
free -g >> host.info
ulimit -a >> host.info
cat $PBS_NODEFILE >> host.info

if [ -z "`grep AuthenticAMD /proc/cpuinfo`" ];then
export vasp_exe=/public/software/vasp/vasp4.6.35-impi-em64t-sca
else
export vasp_exe=/public/software/vasp/vasp4.6.35-impi-amd64-clc
fi

echo The VASP version is ${vasp_exe} >> host.info

PROCS=`cat $PBS_NODEFILE | wc -l`

qstat -n $PBS_JOBID|awk -F+ '(NR>6) {for(i=1;i<=NF;i++) print $i}'|awk '(NF>0) {print $1}'|awk -F'/' '{printf("-n 1 -host %s numactl --localalloc --physcpubind %d %s\n",$1,$2,ENVIRON["vasp_exe"])}' > impi.${PBS_JOBID}

for NP in $PROCS;
do

  ## for Intel MPI ##
  mpirun -r ssh -configfile impi.${PBS_JOBID} >& $NP.log
  mv OUTCAR $NP.OUTCAR

#  ## delete useless file ##
#  rm -f CHG
#  rm -f CHGCAR
#  rm -f CONTCAR
#  rm -f DOSCAR
#  rm -f EIGENVAL
#  rm -f OSZICAR
#  rm -f PCDAT
#  rm -f vasprun.xml
#  rm -f WAVECAR
#  rm -f XDATCAR
done

作者
Author:
zsu007    时间: 2017-10-22 00:01
#!/bin/bash
#========================================#
# PBS Job submission script for VASP
#========================================#
# 1. PBS job control

#PBS -S /bin/bash
#PBS -N vasp5.2
#PBS -j oe
#PBS -q Acb65
#PBS -l nodes=1:ppn=12
##PBS -l walltime=00:30:00
#PBS -V

#========================================#
# 2. Job specification

cd ${PBS_O_WORKDIR}


inputfile="INCAR"

#========================================#
# 3. Integrity check
export LANG=C
source /public/software/profile.d/intel-env.sh
source /public/software/profile.d/impi-env.sh
export I_MPI_DEVICE=rdssm
export I_MPI_PIN=off

echo
echo "Starting VASP run at" `date`
echo
master=`hostname`
echo "The job submission node is $master"
echo "The working directory is " ${PBS_O_WORKDIR}

echo "VASP input file is" ${PBS_O_WORKDIR}/${inputfile}


#========================================#
# 4. Parallel execution
# make sure to use serial math lib
export MKL_SERIAL=YES
export MKL_NUM_THREADS=1
export OMP_NUM_THREADS=1
export GOTO_NUM_THREADS=1

echo
echo "VASP execution start at" `date`
echo

## Show system info
hostname > host.info
grep 'Linux' /etc/issue >> host.info
grep 'model name' /proc/cpuinfo |cut -d: -f2 |uniq -c >> host.info
grep 'cpu M' /proc/cpuinfo >> host.info
grep 'MemTotal' /proc/meminfo >> host.info
free -g >> host.info
ulimit -a >> host.info
cat $PBS_NODEFILE >> host.info

if [ -z "`grep AuthenticAMD /proc/cpuinfo`" ];then
export vasp_exe=/public/software/vasp/vasp5.2.12-impi-em64t-sca
else
export vasp_exe=/public/software/vasp/vasp5.2.12-impi-amd64-sca
fi

echo The VASP version is ${vasp_exe} >> host.info

PROCS=`cat $PBS_NODEFILE | wc -l`
qstat -n $PBS_JOBID|awk -F+ '(NR>6) {for(i=1;i<=NF;i++) print $i}'|awk '(NF>0) {print $1}'|awk -F'/' '{printf("-n 1 -host %s numactl --localalloc --physcpubind %d %s\n",$1,$2,ENVIRON["vasp_exe"])}' > impi.${PBS_JOBID}

for NP in $PROCS;
do

  ## for Intel MPI ##
  mpirun -r ssh -configfile impi.${PBS_JOBID} >& $NP.log
  mv OUTCAR $NP.OUTCAR

#  ## delete useless file ##
#  rm -f CHG
#  rm -f CHGCAR
#  rm -f CONTCAR
#  rm -f DOSCAR
#  rm -f EIGENVAL
#  rm -f OSZICAR
#  rm -f PCDAT
#  rm -f vasprun.xml
#  rm -f WAVECAR
#  rm -f XDATCAR
done

作者
Author:
zsu007    时间: 2017-10-22 00:02
以上两个脚本是单位超算中心使用的,希望对你有所帮助!
作者
Author:
auroraustc    时间: 2017-10-28 15:20
简单地给一个例子。方括号【】内的内容(包括方括号【】)仅仅是解释说明,不要一起复制到提交的脚本xxx.PBS中。

【开始。test1.pbs】
#!/bin/bash -x
#PBS -N VASP_TEST 【这一行用来给提交的作业起个名字,比如叫VASP_TEST】
#PBS -l nodes=2:ppn=8 【这一行指定运行使用的cpu核心数。现在的设定是使用2个包含8个cpu核心的节点,共16和cpu核心。也可以写成比如nodes=node5:ppn=8+node2:ppn=8这样,指定在node5和node2上运行,每个node用8个核心】
#PBS -j oe
#PBS -q normal 【这行表示把作业提交到normal队列】  
#define variables

echo $PBS_O_WORKDIR
NCPUS=`wc -l $PBS_NODEFILE | awk '{print $1}'`
echo $NCPUS

【前面这些用来设定提交作业的参数等,下面开始执行脚本】
#
#running jobs
#

【设定作业路径等参数。此处默认所需环境变量已经在~/.bashrc中设置好了。如果需要设定环境变量,也可以直接写在下面,比如export PATH=XXX之类的】
cd $PBS_O_WORKDIR
#
MPI=/public/software/intel/intel_2015_update6/impi_latest/intel64/bin/mpirun
VASP=~/username/vasp.5.4.1.vtst/bin/vasp_std
runvasp="$MPI -np $NCPUS -machinefile $PBS_NODEFILE $VASP"
logfile=runlog

【以下开始执行vasp。和bash命令相同】

$runvasp > runlog

for i in 01 02
do
cd $i
$runvasp > test_$i
done

【结束】

作者
Author:
qiaobeiming    时间: 2017-10-29 18:55
学习一下
作者
Author:
FanZL    时间: 6 day ago
各位老师,我使用集群的vasp有六个节点,但提交vasp的脚本没有定义交到哪个节点上,只有使用的核数。请问需要补充nodes吗?
前面回复的示例#PBS -l nodes=2:ppn=8
我使用的脚本#JSUB -n 24




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3