問題タブ [qsub]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - qsubジョブがサーバーで終了したときにbashスクリプトを自動的に実行するにはどうすればよいですか?
サーバーに送信したすべてのジョブが完了したら、スクリプトを実行したいと思います。
たとえば、私は送信します
そして、開始されたジョブのリストを取得します。すべてが完了したら、サーバー上で別のスクリプトを自動的に開始して、これらのジョブからの出力を処理したいと思います。
次のエレガントでない解決策を回避するのに役立つアドバイスをいただければ幸いです。
上記の呼び出しからの1000個のジョブIDのそれぞれを別のファイルに保存すると、実行中のジョブの現在のリスト、つまり次の呼び出しからの出力に対して、各ファイルの内容を確認できます。
30分ごとにチェックするだけですが、もっと良い方法があると思います。
environment - SGE-QSUBは-syncモードでジョブを送信できません
バイナリプログラムへの入力用にファイルを準備し、バイナリプログラムの実行をSGEキューイングシステムバージョン6.2u2に送信するperlスクリプトがあります。
ジョブは-sync y
、親perlスクリプトがwaitpid関数を使用して送信されたジョブのステータスを監視できるようにするオプションを使用して送信されます。
親perlスクリプトにSIGTERMを送信すると、このシグナルが各子に伝播され、子がこのシグナルをqsubに転送して、関連するすべての送信済みジョブを正常に終了するため、これも非常に便利です。
-sync y
したがって、このオプションを使用してジョブを送信できることが非常に重要です。
残念ながら、次のエラーが発生し続けます。
Unable to initialize environment because of error: range_list containes no elements
'contains'の不適切なスペルに注意してください。それはタイプミスではありません。これは、コード/エラーメッセージのこの領域がいかに不十分に維持されている必要があるかを示しています。
このエラーを生成する送信を試行しても、STDOUTファイルとSTDERRファイル*.e{JOBID}
およびは生成されません*.o{JOBID}
。送信は完全に失敗します。
このエラーメッセージをグーグルで検索すると、あいまいなメッセージボードに未解決の投稿が表示されるだけです。
このエラーは確実には発生しません。スクリプトを再実行できますが、同じジョブで必ずしもエラーが発生するわけではありません。また、どのノードからジョブを送信しようとしても問題ではないようです。
私の希望は、ここの誰かがこれを理解できることです。
したがって、これらの質問のいずれかに答えると、私の問題は解決します。
- このエラーは、より新しいバージョンのSGEでも持続しますか?
- これを回避するためにqsubのコマンドラインオプションを変更できますか?
- このエラーメッセージは一体何を話しているのでしょうか。
matlab - sge(qsub) を使用した matlab 分散コンピューティング
最近、クラスターでコードを実行するためのアクセス権を取得しました。私のコードは完全に並列化可能ですが、その並列性を最大限に活用する方法がわかりません。大きな行列の要素を計算する必要があり、それぞれが他の要素から独立しています。行列の計算を高速化するために、複数のマシン (100 など) で実行するジョブを送信したいと考えています。
今、私は複数のジョブを送信して、それぞれが行列の一部を計算し、それを .mat ファイルに保存するスクリプトを作成しました。最後に、それらをマージしてマトリックス全体を取得します。個々のジョブを送信するために、新しい .m ファイル (run1.m、run.2、...) を作成して変数を設定し、関数を実行してマトリックス内の関連部分を計算しました。したがって、基本的に run1.m は
次に、compute_dists_matrix は id を使用して、計算する部分を見つけます。次に、run1.m から run60.m までを作成し、それらをクラスターに qsub するスクリプトを作成しました。
たとえば、いくつかの MATLAB 機能を使用してこれを行うためのより良い方法があるかどうか疑問に思います。これは非常に典型的なタスクのように見えるからです。
perl - Perlで生成されたスクリプトをSGEに送信するときにジョブIDをキャプチャする
Perlは、入力と出力の両方で実行されるコマンドパイプを開くことができません。これにより、送信のジョブIDが失われるため、qsubを介してSGEに送信するときに問題が発生します。生成されたスクリプトをSGEに送信し、 SGEが割り当てたジョブIDをキャプチャするにはどうすればよいですか?
performance - 仕事が完了するまでqsubブロックを作成しますか?
現在、「ペイロード」プログラムの数千のインスタンスを実行し、出力の後処理を行うドライバー プログラムがあります。shell()
ドライバーは現在、関数を使用して、複数のスレッドからペイロード プログラムを直接呼び出します。このshell()
関数は、現在の作業ディレクトリでコマンドを実行し、コマンドの実行が完了するまでブロックし、コマンドによって stdout に送信されたデータを返します。これは、単一のマルチコア マシンでうまく機能します。qsub
並列処理を増やすために、ドライバーを変更して、代わりに大規模な計算クラスターにジョブを送信したいと考えています。
qsub
コマンドの結果をファイルではなく stdout に出力し、ジョブが完了するまでブロックする方法はありますか? 基本的に、コマンドの「通常の」実行と同じように動作するようにして、ドライバー プログラムをできるだけ変更せずにクラスターに並列化できるようにします。
編集: すべてのグリッド エンジンはほぼ標準化されていると思いました。そうでなくても問題ない場合は、Torque を使用しています。
python - 情報なしでpbsで殺されたpythonプログラム
pbs_torque によって管理されるクラスターで rpy2 を使用して単純な Python プログラムを実行しています。私の問題は、同じコードが完全に機能し、他の場合は論理的な理由やエラートレースなしで強制終了されることです. プログラムの実行中のランダムな時点で、実行が終了します。私が得る唯一の出力エラーはこれです:
kill: 20: そのようなプロセスはありません
私はそのメッセージを印刷していないことに言及する必要はありません。一部の出力エラー ファイルには、このメッセージが複数回含まれています。いくつか検索しましたが、関連するヘルプは見つかりませんでした。クラスターのすべてのノードは同じ構成を持ち、コアごとにプログラムの 1 つのインスタンスを実行することになっています。
提案は大歓迎です。
ありがとう
cluster-computing - job1 が終了してから 5 秒後 (または任意の値) に job2 を実行するように qsub を設定するにはどうすればよいですか?
現在、ジョブ 1 がいつ終了するかを見積もってから、「#PBS -a [myEstimatedTime+5]」ディレクティブを使用して、ジョブ 2 の qsub を実行しています。推定。
より良い解決策はありますか?
cluster-computing - ディレクトリ内のすべてのファイルのプロセスを QSUB しますか?
使ってきました
タスクを Sun GridEngine クラスターにサブミットしようとしましたが、あまり便利な名前が付いていないデータ セット (超大規模なものも) を使用していることに気付きました。これについて最善の方法は何ですか?それらすべての名前を変更しようとすることもできますが、名前には保持する必要がある情報が含まれており、明らかに多くの問題が発生します。すべてをjsonに前処理することもできますが、qsub -all_contents_of_directoryだけにする方法があれば、それが理想的です。
私はSOLですか?問題のディレクトリに移動して、. -exec 'qsub setupscript.sh {}'?
continuous-integration - Jenkins継続的インテグレーションテストシステムのOracleGridEngineにジョブを送信します
Jenkinsでbashスクリプトを実行する方法を知っています。ただし、qsubを使用してbashスクリプトをOGEシステムに送信すると、Jenkinsは自分のジョブが終了したかどうかをどのようにして知ることができますか?
linux - マルチスレッドアプリケーションでのqsub(sge)の使用
使用しているクラスターネットワークにマルチスレッドジョブを送信したかったのですが、qsubに関するマニュアルページでは、これがどのように行われるかが明確ではありません。デフォルトでは、マルチスレッドに関係なく、通常のジョブとして送信されると思います。スレッド化-しかし、これは問題を引き起こす可能性があります。つまり、同じコンピューターに多くのマルチスレッド化されたジョブを送信し、処理速度を低下させます。
誰かがこれを達成する方法を知っていますか?ありがとう。
バッチサーバーシステムはsgeです。