• 回答数

    4

  • 浏览数

    1866

  • 收藏数

    0

作者:不念过去 发表于 2018-11-27 09:52:55
跳转到指定楼层
你好!我集群上提交amber的运行脚本是这个脚本runamber.sh:
#!/bin/bash
JobSub=$1
nodes=$2
ppn=$3
args=$4
if [ ! $JobSub ]; then
echo "Useage: runamber.sh jobname nodes ppn "amber-args" "
exit
else
echo Submitted Jobname = $1
echo Running on $2 Nodes with $3 procesor core per node.
echo Amber args: $4
fi
cat$JobSub
#!/bin/bash
#
#PBS -l nodes=$nodes:ppn=$ppn
#PBS -l walltime=240:00:00
#PBS -j oe
#PBS -V
# go to work dir
cd \$PBS_O_WORKDIR
# The program we want to execute
EXEC=/share/apps/amber10/bin/sander.MPI
# Load Intel Cluster Tools
source /etc/profile.d/env-modules.sh
module load intel/compiler
module load intel/impi
module load intel/mkl
NP=\`cat \$PBS_NODEFILE|wc -l\`
N_MPD=\`cat \$PBS_NODEFILE|uniq|wc -l\`
# Intel MPI Home
MPI_HOME=/opt/intel/impi/4.0.0.027
\$MPI_HOME/bin64/mpdcleanup -r ssh -f \$PBS_NODEFILE
\$MPI_HOME/bin64/mpdboot -r ssh -n \$N_MPD -f \$PBS_NODEFILE
# running program
\$MPI_HOME/bin64/mpiexec -genv I_MPI_DEBUG 3 -genv I_MPI_DEVICE ssm -n \$NP \$EXEC $args
grep "Total time" \$JobSub.output
# clean mpd daemon
\$MPI_HOME/bin64/mpdallexit
rm -rf $JobSub
EOF
qsub $JobSub
但这个脚本每次只能这样提交一个作业
/share/apps/PBS/runamber.sh min 1 8 "-O -i min.in -o min.out -p 4d.prmtop -c 4d.inpcrd -r min.rst -ref 4d_b.inpcrd"
我有几个作业是连续的
就是下一个作业要用到上个作业的结果
怎么在一个脚本中一次提交呢?
把上面多个任务提交命令按顺序写入PBS中,提交后所有的任务会同时运行,但由于没有上一步的结果,失败退出,只运行了第一个任务。
请问我应该怎么修改脚本,或者写一个PBS脚本呢?谢谢了!
分享:
回复

使用道具

该用户从未签到

新手上路

Rank: 1

积分
47
极客币
103
主题
24
帖子
45
注册时间
2018-10-19
在线时间
2 小时
性别
保密
发表于 2018-11-27 09:53:10 | 显示全部楼层
我想,应该可以把qsubxxx.pbs这样的命令放到一个shell脚本里面执行吧,爱写多次写多少次啊。
每一行的qsub交一次作业。
我是没有试过qsub里面有没有循环命令的土人,但是我上面说的应该可行
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
37
极客币
105
主题
27
帖子
44
注册时间
2018-10-19
在线时间
2 小时
性别
保密
 楼主| 发表于 2018-11-27 09:53:39 | 显示全部楼层
我写了一个test.pds 脚本
#PBS -N test
#PBS -o /home/tang/2131/prod4.out
#PBS -e /home/tang/2131/my.err
#PBS -l nodes=1:ppn=8
#PBS -l walltime=500:00:00
#PBS -l cput=2000:00:00
cd /home/tang/2131
/share/apps/PBS/runamber.sh test1 1 8 "-O -i prod.in -o prod5.out -p 4d .prmtop -c prod4.rst -r prod5.rst -x prod5.mdcrd"
echo "------"
/share/apps/PBS/runamber.sh test2 1 8 "-O -i prod.in -o prod6.out -p4d.prmtop -c prod5.rst -r prod6.rst -x prod6.mdcrd"
echo "------"
/share/apps/PBS/runamber.sh test3 1 8 "-O -i prod.in -o prod7.out -p 4d.prmtop -c prod6.rst -r prod6.rst -x prod6.mdcrd"
echo "------"
/share/apps/PBS/runamber.sh test4 1 8 "-O -i prod.in -o prod8.out -p 4d.prmtop -c prod7.rst -r prod7.rst -x prod7.mdcrd"
echo "------"
提交任务qsub test.pbs
会同时运行这四个任务,而不是一个运算完接着下一个。如果直接运行调用amber命令 又不知道该如何调用并行计算。
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
35
极客币
99
主题
26
帖子
39
注册时间
2018-10-19
在线时间
2 小时
性别
保密
发表于 2018-11-27 09:53:56 | 显示全部楼层
我建议你不要把amber用的参数通过args传到脚本里,而是直接写到脚本里,这样就可以顺序执行。以下是个我的例子,建议你参考。但是还是要和HPC管理员联系,他们应该给出具体建议。
#!/bin/bash
#
#PBS -l nodes=2:ppn=8
#PBS -l walltime=500:00:00
#PBS -j oe
#PBS -o stdout
#PBS -e stderr
#PBS -V
#PBS -q default

source /public/software/intel/Compiler/11.1/059/bin/intel64/ifortvars_intel64.sh
source /public/software/intel/mkl/bin/intel64/mklvars_intel64.sh
source /public/software/intel/mpi/intel64/bin/mpivars.sh


# go to work dir
cd $PBS_O_WORKDIR

# The program we want to execute (modify to suit your setup)
EXEC=/public/home/*****/amber10/exe/sander.MPI

# setup mpd env (Of course use some other secret word than "dfadfs")
if [ ! -f ~/.mpd.conf ]; then
/bin/echo "secretword=dfadfs" >> ~/.mpd.conf
/bin/chmod 600 ~/.mpd.conf
fi

##########################################################
# The following should be no need to
#   change any of these settings for normal use.
##########################################################


# Intel MPI Home
MPI_HOME=/public/software/intel/mpi/intel64/bin


# setup Nums of Processor
NP=`cat $PBS_NODEFILE|wc -l`
echo "Numbers of ProcessorsNP"
echo "---------------------------"

# Number of MPD
N_MPD=`cat $PBS_NODEFILE|uniq|wc -l`
echo "started mpd Number: $N_MPD"
echo "---------------------------"

# setup mpi env (em64t)
$MPI_HOME/mpdboot -r ssh -n $N_MPD -f $PBS_NODEFILE


# running program
$MPI_HOME/mpiexec -genv I_MPI_DEBUG 3 -genv I_MPI_DEVICE ssm -n $NP $EXEC -O -i
min1.in -o min1.out -inf min1.inf -c *.crd -r *.min1 -p *.top
$MPI_HOME/mpiexec -genv I_MPI_DEBUG 3 -genv I_MPI_DEVICE ssm -n $NP $EXEC -O -i
min2.in -o min2.out -inf min2.inf -c *.crd -r *.min2 -p *.top
# clean
$MPI_HOME/mpdallexit
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
37
极客币
105
主题
27
帖子
44
注册时间
2018-10-19
在线时间
2 小时
性别
保密
 楼主| 发表于 2018-11-27 09:54:06 | 显示全部楼层
感谢你的建议,我试一试看。
回复

使用道具 举报

高级模式 评论
您需要登录后才可以回帖 登录 | 立即注册 微信登录