首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qsub数组作业延迟

qsub数组作业延迟
EN

Stack Overflow用户
提问于 2016-07-05 14:01:12
回答 2查看 600关注 0票数 0
代码语言:javascript
复制
#!/bin/bash
#PBS -S /bin/bash
#PBS -N garunsmodel
#PBS -l mem=2g
#PBS -l walltime=1:00:00
#PBS -t 1-2
#PBS -e error/error.txt
#PBS -o error/output.txt
#PBS -A improveherds_my
#PBS -m ae

set -x
c=$PBS_ARRAYID

nodeDir=`mktemp -d /tmp/phuong.XXXXX`
cp -r /group/dairy/phuongho/garuns $nodeDir
cp /group/dairy/phuongho/jo/parity1/my/simplex.bin $nodeDir/garuns/simplex.bin
cp /group/dairy/phuongho/jo/parity1/nttp.txt $nodeDir/garuns/my.txt
cp /group/dairy/phuongho/jo/parity1/delay_input.txt $nodeDir/garuns/delay_input.txt

cd $nodeDir/garuns

module load gcc vle

XXX=`pwd`

sed -i "s|/group/dairy/phuongho/garuns/out|$XXX/out/|" exp/garuns.vpz

awk -v i="$c" 'NR == 1 || $8==i' my.txt > simplex-observed.txt
awk -v i="$c" 'NR == 1 || $7==i {print $6}' delay_input.txt > afm_param.txt
cp "/group/dairy/phuongho/garuns_param.txt" "$nodeDir/garuns/garuns_param.txt"
while true
do
./simplex.bin &
sleep 5m
done

awk 'NR >1' < simplex-optimum-output.csv>> /group/dairy/phuongho/jo/parity1/my/finalresuls${c}.csv
cp simplex-all-output.csv "/group/dairy/phuongho/jo/parity1/my/simplex-all-output${c}.csv"
#awk '$28==1{print $1, $12,$26,$28,c}' c=$c out/exp_tempfile.csv > /group/dairy/phuongho/jo/parity1/my/simulated_my${c}.csv
cp /out/exp_tempfile.csv /group/dairy/phuongho/jo/parity1/my/exp_tempfile${c}.csv

rm simplex-observed.txt
rm garuns_param.txt

我有上面的bash脚本,允许通过PBS_ARRAYID同时提交多个作业。我的问题是,我的模型(simplex.bin)在执行时会向我的主目录写入一些内容。因此,如果一个作业一次运行,或者等到下一个作业完成向home写入内容,那么这是很好的。然而,由于我希望同时运行1000个以上的作业,其中1000个作业试图将相同的内容写入home,然后导致崩溃。有没有一种聪明的方法,在第一个作业已经启动了一段时间(比如5分钟)之后,就提交第二个作业?我已经检查并发现了两个选项:当第一个作业完成时开始第二个作业,或者在特定的日期/时间开始。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-07-05 14:15:00

您可以尝试执行以下操作:

代码语言:javascript
复制
while [ yes ]
do
     ./simplex.bin &
     sleep 2
done

它无休止地在后台启动./simplex.bin进程,等待2秒,启动一个新的./simplex.bin,等等。

请注意,您可能还需要nohup,并为您的./simplex.bin添加标准输入/输出重定向。取决于您的确切要求

票数 0
EN

Stack Overflow用户

发布于 2016-07-08 06:52:04

如果您使用的是Torque,则可以对可以并发运行的作业数量设置限制:

代码语言:javascript
复制
# Only allow 100 jobs to concurrently execute from this job array
qsub myscript.sh -t 0-10000%100

我知道这不是你想要的,但我猜你可以找到一个插槽限制,让它运行而不会崩溃。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38196149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档