2

Torque/Moab を使用して実行する R スクリプトがあります。ただし、壁時計の時間制限は、スクリプトの終了に必要な時間よりもはるかに短いです。解決すべき問題の性質上、スクリプトをこれ以上並列化することはできません。

特定の間隔でワークスペースのバックアップを作成するようにスクリプトを変更し、バックアップから再開して計算を続行します。

ただし、壁時計の時間制限に達した後、必要な限り、スクリプトを Torque/Moab スケジューラに自動的に再送信するソリューションが必要です。

ありがとう。

4

2 に答える 2

0

標準的なことは、それ自体を送信する runscript を作成することです。これをチェーニングと呼びます。必要最小限の bash の例として、次のスクリプトが/path/to/script.shあり、JOB_ID が特定の Torque セットアップを参照する変数を表しているとします (おそらくPBS_JOBID?)

#!/bin/bash
#MSUB OPTIONS...

#(
#sleep 60 #for example
msub -l depend=${JOB_ID} /path/to/script.sh > /path/to/next_job.msub
#)&

[do hard work here: run your r script, etc.]

canceljob $(cat /path/to/next_job.msub)

ここで重要なのは、next_job(依存関係によって) 現在のジョブが終了したときにのみ実行される新しいジョブを送信する行です (終了するか正常に終了するかに関係なく)。「大変な作業」のステップが終了すると、フォローアップ ジョブがキャンセルされます。しかし、「大変な作業」のステップが実時間 (またはその他の理由) によって中断された場合、canceljobコマンドに到達することはなく、サブミットされたジョブが最終的に実行されます。

私は通常、提出物を括弧で囲み、少し寝てから&(つまり、4、5、7 行目のコメントを外して) メイン スクリプトからそのプロセスを分離します。このようにして、「ハードワーク」に問題があり、最初の 1 分ほどで失敗した場合、そのプロセスは終了し、非常に短いが失敗したジョブの無限の連鎖が発生することはありません。

于 2016-02-05T23:49:21.450 に答える
0

ウォールタイム @ 送信を増やすには力が必要ですか? もしそうなら、送信スクリプトで次のようなことを行うことができます:

#PBS -l walltime='00:00:00:00" #( DD:HH:min:SS)

そうでない場合は、確認するために小さなクライアントを作成する必要があるという Manetheran に同意します。

于 2013-07-26T20:50:48.227 に答える