問題タブ [pbs]
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.
python - qsubを使用して、連続した独立したジョブをどのくらいの速さで送信できますか?
この質問は、ビジー状態のときに出力されないpbsジョブに関連しています。つまり、PBS / Torqueが「ビジー」の場合、送信するジョブの一部は出力を生成しません。たくさんの仕事が次々と提出されると忙しいのではないかと思いますが、そういう形で提出された仕事の中には、何も出てこないものがよくあります。
ここにいくつかのコードがあります。
「x_analyse.py」というPythonスクリプトがあり、その入力としてデータを含むファイルを受け取り、そのファイルに保存されているデータを分析するとします。
ここで、次のことを行う必要があるとします。(1)N個のそのようなデータファイルを準備します:data_1.pkl、data_2.pkl、...、data_N.pkl(2)「x_analyse.py」をそれぞれで機能させ、結果を書き込みますそれらのそれぞれのファイルに。(3)異なるデータファイルの分析はすべて互いに独立しているため、時間を節約するために、PBS/Torqueを使用してそれらを並行して実行します。(これは本質的に「驚異的並列問題」だと思います。)
私は上記を行うためにこのPythonスクリプトを持っています:
スクリプトは、分析するデータセットを準備し、それをファイルに保存し、このデータセットを分析するためのpbs送信ファイルを書き込み、それを実行するジョブを送信してから、次のデータセットで同じことを再度実行します。 、 等々。
このように、スクリプトが実行されると、ジョブが送信されるときに、ジョブIDのリストが標準出力に出力されます。「ls」は、N個の.subファイルとN個の.pklデータファイルがあることを示します。「qstat」は、すべてのジョブがステータス「R」で実行され、その後、ステータス「C」で完了したことを示します。ただし、その後、「ls」は、「x_analyse.py」によって生成された.out出力ファイルがN個未満であり、結果ファイルがN個未満であることを示しています。実際、一部のジョブでは出力が生成されません。すべてをクリアして上記のスクリプトを再実行すると、同じ動作が得られますが、一部のジョブ(前回と同じである必要はありません)では出力が生成されません。
連続した仕事の提出間の待ち時間を増やすことによって、物事は改善することが示唆されています。
しかし、私は0.1秒、0.5秒、1.0秒、2.0秒、3.0秒を試しましたが、どれも実際には役に立たなかったので、これは最も満足のいくものではないと感じています。50代の待ち時間は問題ないようだと言われていますが、100件の求人を提出しなければならない場合、5000秒程度の待ち時間になり、非常に長いようです。
代わりにジョブ配列を送信して、「qsub」が使用される回数を減らしてみました。以前と同じようにすべてのデータファイルを準備しますが、送信ファイルは「analyse_all.sub」の1つだけです。
その後、
しかし、これでも、一部のジョブはまだ出力を生成しません。
これは一般的な問題ですか?私は正しくないことをしていますか?求人の提出の合間に待つことが最善の解決策ですか?これを改善するために何かできることはありますか?
助けてくれてありがとう。
編集1:
Torqueバージョン2.4.7とMauiバージョン3.3を使用しています。
また、ジョブID 1184430.mgt1のジョブが出力を生成せず、ジョブID 1184431.mgt1のジョブが期待どおりに出力を生成するとします。これらで「tracejob」を使用すると、次のようになります。
編集2:出力を生成しないジョブの場合、「qstat-f」は次を返します。
出力を生成するジョブと比較して:
一方の終了ステータスは0であるように見えますが、もう一方はそうではありません。
編集3:
上記のような「qstat-f」出力から、問題はポストジョブファイル処理の「古いNFSファイルハンドル」に関係しているようです。何百ものテストジョブを送信することで、失敗したジョブを生成するノードの数を特定することができました。ssh
これらを調べることで、で不足しているPBS出力ファイルを見つけることができます。/var/spool/torque/spool
ここでは、他のユーザーに属する出力ファイルも確認できます。これらの問題のあるノードの奇妙な点の1つは、それらが使用するように選択された唯一のノードである場合、ジョブはそれらで正常に実行されることです。この問題は、他のノードと混在している場合にのみ発生します。
ポストジョブ処理の「古いNFSファイルハンドル」を修正する方法がわからないため、「ダミー」ジョブを送信することでこれらのノードを回避します
実際の仕事を提出する前に。これで、すべてのジョブが期待どおりに出力を生成し、連続して送信されるまで待つ必要がなくなりました。
pbs - PBSスクリプト:複数のジョブ、ノード数、変数
PBSジョブ配列内の一意のジョブ間で、使用されるうなずきの数やプログラム自体によって使用される変数の値を操作することは可能ですか?
たとえば、あるスクリプトが1つのノード、次に2つのノード、次に3つのノードなどで異なるジョブ送信としてプログラムを実行する場合があります。一方、別のスクリプトがプログラム内変数の値を段階的に変更する場合があります。
c - OpenMP - 出力なし
openMP での並列化が必要な C コードがあります。コード自体はシリアルに正常に実行されますが、並列化された場合は実行されません。コードは PBS で実行されており、バッチ スクリプトが含まれています。
コードには 2 つの麻痺領域があり、どちらもタイム ループ内にあり、最後に連続して出力ファイルを出力します。理想的には、時間ステップごとに 1 つの出力を持つことです。
タイムステップごとにシリアルにファイルを出力しますが、並行して最初のファイルを出力し、何も出力せずに無期限に実行し続けます(エラーファイル、自作エラーとシステムエラーの両方を含む)。
コード
ノート
- 多次元配列は 200x200x200 であり、20 以上ありますが、現実的に削減することはできません (3D 組織の生物学的細胞特性を表します)。
これにより、メモリ エラーの可能性を調査することになりました。そのため、バッチ スクリプトを変更して、プロセッサあたり 8 GB を許可しました。
- コードには omp_set_num_threads (64) が含まれており、コンパイル行は次のとおりです。
-バッチスクリプトは
mppwidth と aprun が実行されない
事前に感謝し、ひどいスペルの文法や書式設定などについてお詫び申し上げます.
parallel-processing - 異なる引数で同じプログラムの複数のインスタンスを実行する PBS
PBS を介して送信された、クラスター上の各インスタンスで異なる引数を使用して、同じプログラムを複数回実行するにはどうすればよいでしょうか。また、これらのプログラムをそれぞれ別のノードに指定することはできますか? 現在、次のスクリプトを含む PBS があるとします。
単一のノードで単一のプログラムを 1 回実行します。次のスクリプトを使用する場合:
これにより、各プログラムが順次実行されると思いますが、使用するノードは 1 つだけです。複数のノードを宣言してから、特定のノードを実行したいプログラムの各インスタンスに委譲できますか?
どんな助けや提案も大歓迎です。よくわからないことや間違った用語を使用していることをお詫びします...私はクラスター コンピューティングに非常に慣れていません。
cluster-computing - 2つの計算ノードと1つのヘッドノードを備えたトルククラスターでパケットキャプチャプログラムを実行する方法は?
2つの計算ノードと1つのヘッドノードを持つトルクpbsを使用してクラスターを構成しました。qsubmyscript.shのようなqsubコマンドを使用してジョブを送信しました
myscript.shにはいくつかのシェルコードが含まれています。このスクリプトは、任意の計算ノードで正常に実行され、出力ファイルに関して取得した結果です。このタイプのジョブの送信と実行は非常に簡単です。しかし、私は次の問題に直面しています...
libpcap依存関係を持つCで記述されたネットワークパケットキャプチャモジュールがあります。私の要件はそのようなものです。このプログラムを別の計算ノード(computenode-0-0、computenode-0-1)に送信したいと思います。そのため、すべてのパケットがヘッドノードに到達すると、それらのパケットは、計算ノードで実行されているプログラムによって処理されます。
Cプログラムを提出するにはどうすればよいですか?計算ノードで負荷分散はどのように行われますか?クラスターで実行する必要のある追加の構成は何ですか?
bash - クラスターに関する情報を取得するにはどうすればよいですか?
Infiniband / Gigabitクラスターを使用しており、PBSを使用してジョブを送信しています。新しいクラスターにログインしているときに、bashを使用して、そこで使用できるノードの数とCPU/ノードに関する情報を取得するにはどうすればよいですか?
perl - Perlスクリプトを使用してPBSトルクでqsub-vコマンドを使用するにはどうすればよいですか?
「qsub-v」コマンドを使用して、変数をperlスクリプトに渡したいと思います。これは私が実行するperlスクリプトです(これは単なるテストですが、機能しない場合はこれ以上難しいことはできません)
したがって、このスクリプトを(qsubを介さずに)実行する場合は、次のように入力します。
ただし、このスクリプトは、pbsで動作するクラスターのノードで実行します。私は次のようないくつかの試みをしました:
しかし、それは機能しません。qsubを使用してパラメータをperlスクリプトに渡す方法を考えている人はいますか?どんな助けでも本当にありがたいです
動作しないということは、qsubを使用しても出力ファイルに何も出力されないのに対し、perlを使用すると出力ファイルの入力ファイルの内容が出力されることを意味します。入力に何も取らないようです
perl - qsubを介して実行されるperlスクリプトにパラメーターを渡します
こんにちは、qsub を介して実行する必要がある私の perl スクリプトにパラメーターを渡したいと思います。だから私は実行します:
Test.pl では、いくつかの方法で i パラメータを呼び出そうとします:
残念ながら、perl スクリプトの出力ファイルは常に空です。
何か提案はありますか?どこが間違っていますか?助けてください
bash - bash スクリプトでのエラー メッセージのリダイレクト
PBS を備えたサーバーを使用しています。私はそれをテストしています
現在、サーバーに問題があり、エラー メッセージが返されています。このエラー メッセージをリダイレクトすることにより、
何も印刷されません。
これをシェルスクリプトに入れて、出力を変数に保存したいと思います。
ただし、 を使用してエラー メッセージをリダイレクトしていますが2>&1
、変数out
にはまだエラー メッセージが含まれています。私は何を間違っていますか?