問題タブ [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.
cluster-computing - PBS:ノード全体を要求せずに、ノードごとに1つのコアのみを要求する
PBSをサポートするクラスター上でファームアウトする必要のあるプロセスがありますが、プロセスの制限により、ノードごとに一度に実行できるプロセスは1つだけです。各ノードには2つのプロセッサがあり、ゲットーのアプローチでは、ジョブごとに2つのプロセッサを要求するだけです。しかし、それは仕事ごとのコアを無駄にします。特定のノードで一度にすべてのジョブの単一のプロセスのみが実行されていることを確認しながら、ジョブごとに単一のコアを要求することは可能ですか?
multithreading - PBS (トルク) がクアッド コア プロセッサを 4 プロセッサと見なさない
それぞれ 2 つのノードと 2 つのクアッドコア プロセッサを備えた Debian クラスタがあります。Torque と Maui をスケジューラとして使用しています。16 個のプロセスで MPI ジョブを実行しようとすると、スケジューラはジョブを実行できません。(その時点で実行中のジョブはありませんが) ジョブをキューに入れるか、実行して、結果の出力ファイルに次のように表示されます。 4 つのプロセッサのみで 16 プロセスのジョブを実行しようとしました。
私の .../pbs/server_priv/nodes ファイルは次のようになります。
プログラムを実行するために使用しているスクリプトの例は次のとおりです。
ノードと ppn の組み合わせをたくさん試しましたが、2 つのエラーのうちの 1 つが発生します。何が起こっているかについてのアイデアはありますか?
c++ - 共有メモリ、MPI、およびキューイングシステム
私のunix/windows C ++アプリは、MPIを使用してすでに並列化されています。ジョブはN cpusに分割され、各チャンクは並列で実行され、非常に効率的で、非常に高速なスケーリングで、ジョブは正しく実行されます。
ただし、一部のデータは各プロセスで繰り返され、技術的な理由から、このデータをMPIで簡単に分割することはできません(...)。例えば:
- 5 Gbの静的データ、各プロセスにまったく同じものがロードされます
- MPIで分散できる4Gbのデータは、使用されるCPUが多いほど、このCPUあたりのRAMは小さくなります。
4 CPUジョブでは、これは少なくとも20GbのRAM負荷を意味し、メモリの大部分は「無駄」になります。これはひどいことです。
全体的な負荷を減らすために共有メモリを使用することを考えています。「静的」チャンクは、コンピューターごとに1回だけロードされます。
したがって、主な質問は次のとおりです。
ノード上でメモリを共有するための標準的なMPIの方法はありますか? ある種のすぐに利用できる+無料のライブラリ?
- そうでない場合は、
boost.interprocess
MPI呼び出しを使用して、ローカル共有メモリ識別子を配布します。 - 共有メモリは、各ノードの「ローカルマスター」によって読み取られ、共有読み取り専用になります。変更されないため、セマフォ/同期の種類は必要ありません。
- そうでない場合は、
パフォーマンスの低下や注意すべき特定の問題はありますか?
- (「文字列」や過度に奇妙なデータ構造はありません。すべてを配列と構造ポインターにまとめることができます)
ジョブはPBS(またはSGE)キューイングシステムで実行されます。プロセスがクリーンでない出口の場合、それらがノード固有の共有メモリをクリーンアップするかどうか疑問に思います。
pbs - 同時に実行される PBS ジョブの数を制限する方法
PBS Pro を実行している 64 ノードのクラスターがあります。何百ものジョブを送信すると、一度に 64 個のジョブを実行できます。これはすばらしいことですが、64 個のジョブすべてがほぼ I/O バウンドで、同じディスクに対して読み取り/書き込みを行っている場合を除きます。そのような場合でも、すべてのジョブを送信できるようにしたいと考えていますが、特定の時間に最大 (たとえば) 10 個のジョブを実行したいと考えています。クラスターの PBS サーバーへの管理アクセス権がなくても、そのようなことを可能にする qsub への呪文はありますか?
cluster-computing - クラスタでMPIをテストする
私はクラスター上でOpenMPIを学んでいます。これが私の最初の例です。出力には異なるノードからの応答が表示されると思いますが、それらはすべて同じノードnode062から応答します。MPIが実際にプロセスをさまざまなノードに分散していることを示すために、さまざまなノードから実際にレポートを取得する理由と方法を知りたいのですが。ありがとう、よろしく!
ex1.c
ex1.pbs
コンパイルして実行します。
アップデート:
単一のPBSスクリプトで複数のバックグラウンドジョブを実行して、ジョブを同時に実行できるようにしたいと思います。たとえば、上記の例では、ex1を実行するための別の呼び出しを追加し、両方の実行をex1.pbsのバックグラウンドに変更しました。
(1)以前にコンパイルされた実行可能ファイルex1でこのスクリプトをqsubした後、結果は良好です。
(2)ただし、ex1の実行時間は速すぎると思います。おそらく、2つのバックグラウンドジョブの実行時間はあまり重なっていないと思います。これは、実際のプロジェクトに同じ方法を適用した場合には当てはまりません。そこで、ex1.cにsleep(30)を追加して、ex1の実行時間を延長し、ex1をバックグラウンドで実行している2つのジョブがほぼ常に同時に実行されるようにしました。
しかし、再コンパイルとqsubを再度実行した後、結果は正しくないようです。中止されたプロセスがあります。ex1.o35571:
ex1.e35571:
なぜプロセスが中止されるのだろうか?PBSスクリプトでバックグラウンドジョブを正しくqsubするにはどうすればよいですか?
scripting - PBSプログラミング
PBSに関するいくつかの短くておそらく愚かな質問:
1-私はを使用してジョブを送信します
ジョブファイル内で(サブ)ジョブを送信することは可能ですか?
2-私は次のスクリプトを持っています:
job_bを起動するには、job_aの結果が終了する前に用意しておくと便利です。job_aが終了するまでjob_bが起動されないように、何らかのバリアまたはその他の回避策を設定することは可能ですか?
ありがとう
java - Torque/PBS で動作する DRMAA Java ライブラリはありますか?
PBS/Torque クラスタ ソフトウェアで動作することが知られている DRMAA-API の Java 実装を知っている人はいますか?
この背後にある背景: DRMAA 準拠の API を使用して、Java から新しくセットアップされた Linux クラスターにジョブを送信したいと考えています。クラスターはPBS/Torqueによって管理されます。Torque には、DRMA-C バインディングを含み、libdrmaa.so および .a バイナリで提供される Torque/PBS 用の PBS DRMAA 1.0 ライブラリが含まれています。Sun グリッド エンジンには、Java-DRMAA API を提供する drmaa.jar が含まれていることを知っています。実際、私は SGE を使用することにしましたが、最初に PBS を試すことにしました。
その決定の背後にある理論
は、「DRMAA は標準であるため、Java API は標準に準拠した drmaa-c バインディングのみを必要とする」というものでした。しかし、そのような「一般的な DRMAA-C-java API」を見つけることができなかったので、この仮定は間違っていて、Java ライブラリはエンジン固有のものであると仮定します。
編集: Sun Grid Engine パッケージの drmaa.jar を試し、pbs libdrmaa.so と併用しようとしました。驚くことではありませんが、これは失敗しました (JNI 未解決のリンク エラー)。
結論:そうはいきません!いくつかの検索の後、次のいくつかのオプションのみが表示されます。
- Globus ツールキットの上に GridWay をインストールします。PBS の上にインストールされた GridWay は、Java で DRMAA を提供すると主張しています。私の設定には複雑すぎるように見えます。
- DRMAA を破棄し、Java からシステム コマンド qsub、qstat などを呼び出して PBS に提出します。シンプルだけどあまりいいじゃない。
drmaa バインディングを自分で実装します。複雑すぎる…
Grid Engine に切り替えます。私の意見では、GE は言語バインディングに関して PBS よりも優れています。
オプション 2 または 4 を好む傾向があります。推奨事項はありますか?
queue - SGE 待ち行列システムで (PBS 上で) ppn に相当するものを指定する方法は?
ppn
で(または同等の)を指定する方法はありますSGE
か? 1 つのノードですべての CPU を使用したくないので、コアあたりのメモリを増やすことができます。(PBSでは、たとえばそう-l nodes=16:ppn=2
します)
ありがとう。
linux - R プログラミング - PBS を使用して複数ノードの Linux クラスターでジョブを送信する
複数ノードの Linux クラスターで R を実行しています。MPI や Snow などの並列計算ソフトウェアを使用せずに、スクリプトまたはバッチ モードを使用して R で分析を実行したいと考えています。
これは、各ノードがデータの異なる部分を実行するように入力データを分割することで実行できることを知っています。
私の質問は、どうすればこれを正確に行うことができますか? スクリプトのコーディング方法がわかりません。例は非常に役に立ちます!
これまで PBS を使用してスクリプトを実行してきましたが、R はシングル スレッド プログラムであるため、1 つのノードでしか実行されないようです。したがって、コードを調整してすべてのノードに労力を分散させる方法を理解する必要があります。
これが私がこれまでやってきたことです:
1) コマンドライン:
2) myjobs.pbs:
3) myscript.sh:
4) my_script.R:
どんな提案でも大歓迎です!ありがとうございました!
-CC
python - クラスター上で python と PBS を使用した「恥ずかしい並列」プログラミング
図形を生成する関数 (ニューラル ネットワーク モデル) があります。Torque を備えた標準クラスターで PBS を使用して、python からいくつかのパラメーター、メソッド、およびさまざまな入力 (関数の何百回もの実行を意味する) をテストしたいと考えています。
注: 私は parallelpython 、 ipython などを試しましたが、完全に満足することはありませんでした。クラスターは、私が変更できない特定の構成にあり、python + qsub を統合するこのようなソリューションは、コミュニティに確実に利益をもたらします。
物事を単純化するために、次のような単純な関数があります。
はinput
入力を表すオブジェクトinput.name
で、文字列であり、do_lots_number_crunching
数時間続く場合があります。
私の質問は次のようなパラメータのスキャンのようなものを変換する正しい方法はありますか?
関数へのすべての呼び出しに対してPBSスクリプトを起動する「何か」にmodel
?
PBS テンプレートをインクルードして Python スクリプトから呼び出す関数を考えていましたが、まだわかりませんでした (decorator?)。