Ich starte ein PBS-Skript, sobald andere abgeschlossen sind. Dazu benutze ich folgende Befehle:warten auf bereits abgeschlossene Jobs
$ job1=$(qsub job1.pbs)
$ jobN=$(qsub jobN.pbs)
$ qsub -W depend=afterok:$job1:$jobN join.pbs
Dies funktioniert in den meisten Fällen. Wenn ich jedoch das Verbindungsskript ausführe, wenn Job1 und JobN bereits beendet sind, wird es auf unbestimmte Zeit inaktiviert, da es darauf wartet, dass die bereits fertig gestellten Jobs beendet werden. Das klingt wahnsinnig, aber genau das passiert. Wenn ich qstat
laufen kann ich deutlich sehen, dass mein Verbindungs Job gehalten wird (‚H‘)
$ qstat -u me
Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
1990613 me workq join.pbs -- 1 1 -- -- H --
jedoch, wenn mindestens eine der Arbeitsplätze noch läuft, während der andere ist schon fertig, dann wird das Verbindungsskript geht nicht untätig und wird fertig sein.
Was also sind die Lösungen, um mit Jobs fertig zu werden, die bereits vorbei sind? Wir müssen diesen Job unbedingt erledigen.
Wenn die Arbeitsplätze von 'qstat' weg sind, das heißt, Sie muss 'keep_completed' erhöhen. Wenn der Join-Job andernfalls ausgeführt werden kann, wird die Abhängigkeit niemals erfüllt und der Hold wird nie freigegeben. – clusterdude
Welche Version von Torque verwenden Sie? Es könnte sein, dass Sie einen Fehler haben, der bereits behoben wurde. – dbeer