私たちの学校HPCにはスケジューラはありません。したがって、ジョブキューよりも良いことはありません。したがって、qsub
並列ジョブの送信を通過または自動化することはできませんsbatch
。
ジョブを「送信」するために常に使用した方法は、screen:と入力してを押し、次に入力して+screen
を押してから分離することです。Enter./runMyJob.sh
CTRLad
ここで、複数の並列画面セッションを開始し、各セッションでタスクを実行し、最後にすべての画面セッションを分離するプロセスを自動化/スクリプト化したいと思います。
ご覧のように、手動操作中にEnterとCTRL+を押してaから、を押しますd。これらのキーストロークをどのようにスクリプト化しますか?
PS:スケジューラなしでHPCで並列ジョブ送信を実装するのに役立つ提案を歓迎します!
ベストアンサー1
キーストロークだとは思わず、作業を完了すると思います。キーストロークは相互作用の一形態です。タスクを自動化する方法はスクリプトを書くことです。
画面から作業を開始してすぐに切り離すには、次の手順を実行します。
screen -md ./runMyJob.sh
タスクを見つけやすくするために、-S
セッション名を設定するオプションがあります。
たとえば、タスク実行可能ファイルの名前をセッション名として使用する次のスクリプトを作成できます。
#!/bin/sh
screen -md -S "${1##*/}" "$@"
と同じ名前をsubmit
付けてPATH(シングルユーザーバイナリのインストール場所は何ですか?そしてどのUnixコマンドで見つかったホームディレクトリパスを追加するには?役に立つかもしれません)実行可能にしてください(chmod +x ~/bin/submit
)。タスクを開始するには、次を実行します。
submit ./runMyJob.sh
並列実行の場合は調査できます。GNUパラレル。
ジョブ送信フレームワークは、ジョブを開始する以上の機能を実行します。また、利用可能なCPU時間とメモリがある場所で実行するようにスケジュールし、送信者にログを送信します。管理者にジョブを送信するための適切なフレームワークを設定するように依頼する必要があります。