問題タブ [slurm]
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.
config - ユーザーが --account を指定する必要があるように SLURM を構成する
SLURM コマンド (salloc、sbatch、srun) を使用するときにユーザーが --account を指定する必要があるように SLURM を構成する方法を見つけようとしています。事実上、デフォルトのアカウントの動作を無効にしたいと考えています。
これを行う簡単な方法を見つけた人はいますか?
memory - シェルスクリプトファイルで複数回起動する
同じ infile のフィールドを awks し、出力に追加する slurm クラスターにバッチ ファイルを送信しています。最初の数行は機能しますが、突然機能しなくなります。2回目の反響の前に死ぬ。誰かがデバッグしたり、より良いスクリプトを見せてくれたりするといいのですが、同じジョブを何度も実行しているときに bash ファイルがクラッシュする理由 (またはクラッシュする場合) を知りたいです。
エラーメッセージ:
slurmstepd: get_exit_code タスク 0 がシグナルによって停止しました
フィールド 12-15 の例:
c++ - SLURM と makefile で sbatch を使用するにはどうすればよいですか?
バッチ ジョブを SLURM に送信しようとしていますが、取得し続けJobState=FAILED Reason=NonZeroExitCode
ます。通常の g++ でコードをコンパイルして実行することはできますが、学校の課題には SLURM を使用する必要があります。私はそれらを適切に実行していると思っていましたが、ルートから厄介なグラムを受け取り、ログインノードでのスクリプトの実行を中止するように指示しました. どんな助けでも大歓迎です。ここに私のバッチファイルと私の Makefile があります:
メイクファイル:
linux - Matlab: -maxNumCompThreads、ハイパースレッディング、およびパープール
20 個のコアとハイパースレッディングが有効になっている Linux クラスターのノードで Matlab R2014a を実行しています。これは以前に議論されたことを知っていますが、明確化を求めています。Matlabのスレッドとコアの問題についての私の理解は次のとおりです。
- Matlab には固有のマルチスレッド機能があり、マルチコア マシンで追加のコアを利用します。
- Matlab は、複数の Matlab スレッドを同じコア (つまり、ハイパースレッディング) に置くことが役に立たないような方法でスレッドを実行します。デフォルトでは、Matlab が作成するスレッドの最大数は、システムのコア数です。
- parpool() を使用する場合、作成するワーカーの数に関係なく、このスレッドで説明されているように、各ワーカーは 1 つの物理コアのみを使用します。
ただし、(非推奨の) 関数 maxNumCompThreads() を使用すると、Matlab またはワーカーの 1 つが生成するスレッドの数を増減できることも読みました。これは、いくつかのシナリオで役立ちます。
- Matlab の暗黙的なマルチスレッド機能を利用して、ノード全体を割り当てることなく、クラスター ノードでコードを実行したいと考えています。maxNumCompThreads が削除された場合に、これを行う別の方法があればいいのですが。
- パラメータ スイープを実行したいが、マシンのコア数よりもパラメータが少ない。この場合、すべてのコアが利用されるように、ワーカーあたりのスレッド数を増やすことができます。これは、このスレッドで最近提案されました. ただし、私の経験では、個々のワーカーは maxNumCompThreads() を使用してスレッド数を増やすことに非常に満足しているように見えますが、「top」コマンドを使用して実際の CPU 使用率を調べると、効果がないことが示唆されます。コアを 1 つ使用します。parpool によって生成された個々の Matlab プロセスが引数 -singleCompThread で実行されている可能性があります。親の Matlab プロセスが -singleCompThread で実行されている場合、コマンド maxNumCompThreads(n) (n > 1) は、Matlab がシングル スレッド モードで実行されているため、エラーをスローすることを確認しました。その結果、(少なくとも 2014a では) 並列プール ワーカーの計算スレッドの数を増やすことはできないようです。これに関連して、私はできる」コンピューター自体でハイパースレッディングが有効になっているにもかかわらず、親の matlab プロセスがコアよりも多くのスレッドを開始するように見えます。繰り返しになりますが、maxNumCompThreads(n) (n > # 物理コア) は問題なく実行されますが、top が CPU 使用率を 50% と示しているという事実は、そうでないことを示唆しています。それで、何が起こっているのですか、それとも私は何を誤解していますか?
編集:私の質問をより明確にレイアウトするには:
- parfor ループ内で、n > 1 が機能しているように見えるのに、maxNumCompThreads(n) を設定しないのはなぜですか? ワーカー プロセスが -singleCompThread で開始されたことが原因である場合、-singleCompThread で開始された親プロセスの場合のように maxNumCompThreads() がエラーを返さないのはなぜですか?
- 親プロセスで、maxNumCompThreads(n) (n > # 物理コア) を使用しないのはなぜですか?
注: 以前に Matlab の回答に投稿しましたが、フィードバックを受け取っていません。
Edit2: (1) の問題は、使用していたテスト コードの問題のようです。
multithreading - スラームでのMatlabの物理コアと論理コアの割り当て
私は、各物理コアに割り当て用の 2 つの CPU があると見なすように構成された slurm クラスターのユーザーです。Mathworks は、Matlab がハイパースレッディングを利用する利点はないと判断したため、既定では、Matlab は物理コアごとに最大 1 つのスレッドを生成します。では、タスク/パープール ワーカーごとに 2 つの CPU を要求するのは適切でしょうか? その半分の数のスレッドしか生成しないとしても? たとえば、10 人のワーカーを使用する仕事がある場合、私は-c 20
.
scheduling - SLURM スケジューリングにレイヤーを変更または追加することは可能ですか?
私は、SLURM を使用するコンピューティング クラスターの無料ユーザーです。
ときどき、有料ユーザーのキューを詰まらせる長時間実行される複数のジョブがありました。このため、管理者によってジョブがキャンセルされました。現在、利用できるノードの数に上限がありました。この取り決めの公平性については議論しませんが、これは仕事を成し遂げるという点で私にとって問題です。特に、ジョブがノード キャップを通過するのを待っている間に、ジョブを実行していない空きノードが表示されるためです。 ....
それを背景情報として、ここに私の2つの質問があります:
管理者がジョブを一時停止してから再開することはできませんか?ジョブ、ユーザーのすべてのジョブ、または一連のジョブのいずれか? 管理者の観点からすると、この一時停止/再開は面倒ですか?
有料ユーザーと無料ユーザーのリストを作成できるはずだと思います。また、有料のユーザー名が sbatch を使用してサブミットを送信すると、SLURM に無料のユーザー名のジョブまたは複数のジョブを一時停止し、有料のユーザーのジョブが完了したときに再開するように自動的に指示します。これは可能ですか?はいの場合、通常の SLURM / ファーム管理者のスキル範囲外ですか?
誰か他の解決策を提案してもらえますか (上記の質問が不合理またはばかげている場合)。
ありがとうございました!
batch-processing - walltime 経由で kill する前にバッチ ジョブを終了する
SLURM でバッチ ジョブを実行しています。ジョブファイルで開始するプロセスは反復的です。各反復の後、stop というファイルを作成することにより、プログラムをそっと強制終了できます。このような停止コマンドは、walltime 制限によってジョブが強制終了される 1 時間前に自動的に発行されることを望みます。