#!/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
Ich habe oben Bash-Skript, das mehrere Aufträge zur gleichen Zeit über PBS_ARRAYID senden ermöglicht. Mein Problem ist, dass mein Modell (simplex.bin) beim Ausführen etwas in mein Home-Verzeichnis schreibt. Also, wenn ein Job auf einmal läuft oder warten, bis die nächsten Jobs fertig sind, Sachen nach Hause zu schreiben, dann ist es in Ordnung. Da ich jedoch 1000 Jobs gleichzeitig haben möchte, versuchen 1000 von ihnen, das gleiche Zeug nach Hause zu schreiben, was dann zum Absturz führt. Gibt es eine clevere Möglichkeit, den zweiten Job einfach zu übermitteln, nachdem der erste bereits für eine bestimmte Zeit gestartet wurde (sagen wir 5 Minuten)? Ich habe bereits zwei Optionen überprüft und gefunden: Startet den 2. Job, wenn er fertig ist, oder startet zu einem bestimmten Datum/Zeitpunkt.QSub Array Job Verzögerung
Dank
Sie können auch den ersten Job im Hintergrund starten, für einige Zeit schlafen, starten Sie den zweiten Job im Hintergrund und gehen Sie weiter so – GMichael
@GMichael: können Sie es klarer bitte machen? – hieu
Bitte sehen Sie meine Antwort unter – GMichael