我正在使用来自python3的qsub提交代码,{here是完整代码):
scfc = ["qsub", "-Wblock=true", "script.sh"]
optstate = ["opt1", "opt2", "opt3"]
for sstate in optstate:
subprocess.call(scfc)
sdir = optstate.index(sstate)
print(sstate)
genincar2(sdir)
shutil.copy2("INCAR", "INCAR"+"."+str(sstate))
shutil.copy2("CONTAR", "CONTCAR"+"."+str(sstate))
和script.sh是:
#!/bin/bash
#PBS -S /bin/bash
#PBS -N Test
#PBS -l select=2:ncpus=24:mpiprocs=24
#PBS -q workq
#PBS -joe
#PBS -V
export I_MPI_FABRICS=shm:tmi
export I_MPI_PROVIDER=psm2
export I_MPI_FALLBACK=0
export KMP_AFFINITY=verbose,scatter
module load intel/2018
module load vasp/5.4.4
cd $PBS_O_WORKDIR
cat $PBS_NODEFILE > pbs_nodes
echo Working directory is $PBS_O_WORKDIR
NPROCS=`wc -l < $PBS_NODEFILE`
NNODES=`uniq $PBS_NODEFILE | wc -l`
mpirun -np $NPROCS --machinefile $PBS_NODEFILE vasp_std
我期望-Wblock=true
(还有subprocess.call
)的代码在进入sdir = optstate.index(sstate)
行之前要等待完成vasp_std代码。
事实并非如此,并且由于CONTCAR
尚未产生错误。
如果我直接从命令行提交qsub
,则阻止工作正常。
在python中,我也尝试过check_call
,但运程没有变化。
有人可以帮忙吗?
我正在使用的系统具有:
pbsnodes --version
pbs_version = 18.1.3
python3 --version
Python 3.4.9
uname -a
Linux master1.clusternet 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux