問題タブ [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.
mpi - srun を介して起動された MPI ジョブでのプロセスのピン留め
SLURM クラスターで MPI ジョブを実行していて、結果のプロセスをノード上の特定のコアに固定したいと考えています。これには、異なるノード上の異なる数のプロセスと、異なるノード上の異なる固定パターンが含まれる場合があります。salloc を使用してノードの割り当てを取得し、mpi プロセスのランク ファイルを作成し、mpirun を使用してプロセスを開始すると、これはすべて比較的簡単です。
残念ながら、タイムアウトやプリエンプションなどの理由で割り当てが取り消された場合、ノードで実行されているプロセスは強制終了されますが、ヘッド ノードで実行されている mpirun は強制終了されず、無視できる負荷の生成から 100 の生成に移行します。無期限に実行されているスレッドの % 負荷。
答えは mpirun の代わりに srun を使用してアプリケーションを起動することであると思われますが、これを行う場合にプロセスの配置を設定する方法を見つけるのに苦労しています。誰にも提案はありますか?
parallel-processing - slurm が要求されたよりも多くのタスクを起動しているようです
SLURM がsbatch
スクリプトからジョブを起動する方法がわかりません。SLURM が--ntasks
引数を無視しsrun
て、バッチ ファイル内のすべてのタスクをすぐに起動しているようです。StackOverflowのこの回答のコードを少し変更した例を次に示します。
したがって、私のセットアップでは、srun echo
コマンドはすぐに実行されますが、コマンドの終了後に実行されると予想されますsrun sleep 10
。
私は SLURM 2.6.5 を使用して、8 コアの個人用ワークステーションでジョブのスケジュールと送信を行っています。自分でインストールしたため、構成が壊れている可能性は十分にあります。slurm.conf ファイルの関連部分を次に示します。
printenv | grep SLURM
実行後の出力は次のとおりですsalloc --ntasks=1
コメントや提案をいただければ幸いです。さらに情報が必要な場合はお知らせください。
読んでくれてありがとう、
トム
もう少し遊んだら更新
私はある程度の進歩を遂げましたが、まだ私が望む動作を完全には得ていません。
使用すると、ステップを待機--exclusive
するステップを取得できます。echo
sleep
と
しかし、各ステップが複数のプロセッサを必要とする複数ステップのジョブを実行している場合、これを適切に行う方法はまだわかりません。
12個stress
のプロセスを提供します。
sbatch
では、スクリプトで 6 つのプロセッサを使用し、それぞれ 2 つのプロセッサで一度に 3 つのステップを開始するにはどうすればよいでしょうか? 使い方は正しいsrun --exclusive -n 1 -c 2 stress -c 2
ですか?
python - 並列化された Python コードを使用してクラスターで複数のノード/コアを使用する方法
joblibとmultiprocessingを使用してコードの一部を並行して実行するPython コードがあります。これをデスクトップで問題なく実行できます。タスク マネージャーを使用して、4 つのコアすべてを使用し、コードを並行して実行していることを確認できます。
最近、100 以上の 20 コア ノードを備えた HPC クラスターにアクセスできることを知りました。クラスターは、ワークロード マネージャーとして SLURMを使用します。
最初の質問は、クラスターで並列化された Python コードを実行することは可能ですか?
もし可能ならば、
私が持っている Python コードは、クラスターで実行するためにまったく変更する必要がありますか?
コードの並列化された部分を 4 つのコア (または 4 つのノード) で実行する必要があることを伝えるために、ジョブ送信ファイルにどの #SBATCH 命令を入れる必要がありますか?
私がアクセスできるクラスターには、次の属性があります。
linux - sbatch SLURM を使用しているときに NonZeroExitCode を取得し続けるのはなぜですか?
次のコマンドで実行している単純な test.ksh があります。
スバッチ test.ksh
「JobState=FAILED Reason=NonZeroExitCode」を取得し続けます (「scontrol show job」を使用)
私はすでに次のことを確認しています。
- slurmd と slurmctld が正常に稼働している
- 「test.ksh」のユーザー権限は777です。
- コマンド "srun test.ksh" (sbatch を使用せずに単独で)は問題なく成功します。
- 「test.ksh」の最後の行に「return 0」を入れてみましたが、うまくいきませんでした
- 「test.ksh」の最後の行に「exit 0」を入れてみましたが運が悪かったです
- 「test.ksh」の最後の行に「ホスト名」を入れてみましたが、うまくいきませんでした
- 「test.ksh」の最後の行に「srun hostname」を入れてみたがうまくいかなかった
scripting - 異なるノードで異なる入力ファイルを使用して実行可能ファイルを実行するための SGE の設定
以前は SLURM スケジューラを使用してクラスターを操作していましたが、今では多かれ少なかれ SGE ベースのクラスターに切り替える必要があり、コツをつかもうとしています。私が SLURM システムで作業していたのは、N 個の入力ファイルを使用して実行可能ファイルを実行し、この方法で SLURM 構成ファイルを設定することでした。
そして、SLURM で作業中の送信スクリプトには次の行が含まれています。
このセットアップは、10 個のノードで同時に 10 個の異なる入力で実行可能ファイルを実行するという、私が望んだとおりに機能しました。SGEシステムに移行したばかりなので、同じことをしたいのですが、マニュアルを読んでみましたが、SLURMとまったく同じものは見つかりませんでした。SGE システムで同じことを達成する方法を教えてください。
どうもありがとうございました!
slurm - 実行中の slurm ジョブに時間を追加する
slurm によって管理される Linux マシンを実行する仕事があります。ジョブが数時間実行されたので、ジョブが完了するまでに必要な時間を過小評価していたことに気付きました。したがって、--time
指定した引数の値が十分ではありません。slurm を介して既存の実行中のジョブに時間を追加する方法はありますか?