問題タブ [sbatch]
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 - Slurm クラスターでのバッチ ジョブの実行
そのため、これを理解しようと数時間を費やしましたが、助けていただければ幸いです。
私がやろうとしているのは、slurm --array0-654 でバッチジョブを実行することです
各ジョブ ステップで 8 つのスレッドを実行したいと考えています。
クラスター上の 11 個のノードにアクセスでき、それぞれが 32 スレッドに対応していますが、SBATCH 構成を正しく取得できないようです。ノードごとに 1 つのジョブを実行するか、すべてのノードで 200 以上のジョブを実行するようです。
私は多くの異なる構成を試しましたが、誰かが提案を持っているかどうか疑問に思っていました.
slurm - SBATCH が標準出力を電子メールで送信する方法は?
計算が完了したら、slurm システムがmyprogram
電子メールで出力を送信できるようにしたいと思います。だから私はSBATCH
次のように書いた
メール システム レポート
たとえば、私の場合、件名行と$SLURM_JOB_NAME
メールの内容をSTDOUT
ファイルから取得できるようにするメールコマンドを作成するにはどうすればよいですか?JOB${SLURM_JOBID}.out
slurm - slurm JobID を入力として使用しますか?
送信するスクリプトの入力として JobID を使用することは可能ですか?
%j を使用して JobID を使用してログ ファイルに名前を付けることができることは知っていますが、たとえば、次のようなことは可能ですか?
make-dir.sh の場所
現状では %j が出力されますが、JobID を出力したいと思います。
ありがとう。
slurm - SLURM で mpi タスクと一緒に「モニター」タスクを実行する
次のような sbatch スクリプトを使用して slurm で実行する mpi ジョブがあります。
「myprog」プロセスのメモリ/CPU 使用率とその他の動作を監視したいと考えています。これを実行できる簡単なスクリプト (「モニター」と呼びます) を作成しましたが、「myprog」と同時に、割り当てられた各ノードで sbatch を使用して 1 つのコピーを実行する方法に困惑しています。
上記を次のように変更する必要があると思います。
しかし、a)「モニター」がバックグラウンドで実行されることを意味するかどうか、およびb)「モニター」が実行される場所をどのように制御できるかについて、私は混乱しています。
mpi - /usr/bin/modulecmd: そのようなファイルまたはディレクトリはありません
sbatch を使用してジョブを送信しています。
コマンドラインは次のmpirun --version
ようになります:
Linux* OS 用インテル(R) MPI ライブラリー、バージョン 5.0 ビルド 20140507
Copyright (C) 2003-2014, Intel Corporation. 全著作権所有。
だから私はIntel mpiで作業していると思います。指示に従って: Intel MPI を使用して MPI ジョブを送信し、
次のようにスクリプトを記述します。
mycc は、mpicc でソース ファイルをコンパイルした後に取得する実行可能ファイルです。
次に command を使用するsbatch -p partitionname -J myjob script.sh
と、私のジョブは終了コード 127:0 で失敗しました。slurm-jobid.out ファイルには次のように書かれています (ロケール設定の警告は脇に置いておいてください):
/usr/share/Modules/init/sh: 2 行目: /usr/bin/modulecmd: そのようなファイルまたはディレクトリはありません /tmp/slurmd/job252624/slurm_scirpt: 10 行目: mpirun: コマンドが見つかりません
しかし、確認したところ、/usr/bin/modulecmd ファイルが存在します。
どんな提案でも大歓迎です。
編集ここでも
質問しました。
ソース ステートメントとモジュール ロード ステートメントを削除しました。
ジョブを送信する前に、ログイン ノードにモジュールをロードしようとしました。しかし、何か問題があります。次のように述べています。
moduleCmd_Lad.c(204): エラー: 105: 'intel' のモジュール ファイルが見つかりません
コマンドを使用module avail
して、利用可能なモジュールを確認します。
----------/usr/share/Modules/modulefiles-------------------
ドット モジュール情報 mpich2-x86_64 use.won
module-cvs モジュール null
----------/etc/modulefiles---------------------------------
compat-openmpi-psm-x86_64 compat-openmpi-x86_64
乱雑な書式設定をお許しください。
解決済み
問題は最終的に解決されます。最終的な script.sh は次のようになります。
次に、コマンドsbatch -p partitionname -J myjob script.sh
を使用してジョブを送信します。
python - 構成ファイルを使用して SLURM で sbatch を使用する方法
sbatch で python スクリプトを実行したかったのですが、sbatch で python スクリプトを実行する唯一の方法は、python スクリプトを実行する bash スクリプトを用意することです。持つようにbatch_main.sh
:
次に実行します:
これに関する問題は、引数用に別の構成ファイルが必要であり (通常は単一の数値または引数ではないため)、配列オプションも使用できるようにすることです。また、私は通常、複数の異なるスバッチ ジョブを(異なる構成で)同時に実行します。したがって、構成ファイルを変更しても、異なるスバッチの実行が互いに邪魔にならないようにするとよいでしょう (ジョブがキューに入れられてから、 config ファイルが後で変更されると、sbatch を実行したときの構成のコピーではなく、最新の構成ファイルが実行されます)。この問題を回避するために、sbatch スクリプトを実行すると、SLURM が実際にサブミッション スクリプトを内部データベースにコピーすることを発見しました (次のように尋ねたところ、それを発見しました:実行中に slurm で sbatch に送信される bash スクリプトを変更するのは悪い考えですか? )。したがって、実際には構成を bash 送信スクリプトにハード コードすることにしました (送信スクリプトを基本的に構成ファイルにします)。そうすれば、送信スクリプトを編集してからファイルを実行するだけです。ただし、これは絶対に避けたいbashで書くことになるのでやめたいと思います。
理想的には、Python を直接実行する sbatch を実行したいと考えています。
これは不可能かもしれないので、この問題を解決するために他にどのようなオプションが存在するか知りたいと思いました. たとえば、ジョブをキューに入れるときに、正確に実行したいジョブを実行するように、slurm に別のファイル (python 構成ファイルなど) を内部データベースにコピーさせることは可能ですか? (sbatch ジョブを実行してから構成ファイルを変更することは、これを行う方法ではないことに注意してください。これは、構成ファイルを変更したときに問題が発生する可能性があるためです。slrum は、構成のコピーではなく、構成の最新のコピーを読み取ります。ジョブが実行されたとき)。または、他にどのようなオプションがありますか? 私は本当にbashを書くことに行き詰まっていますか、それとも他の奇妙なハックではなく、Pythonで構成を処理するために何か他のことをすることができますか?
一般的に、私は人々が現実の世界でこれのために何をしたか、またはこれのための良い実践/標準は何かを知りたいと思っていました.
tensorflow - 適切に構成されたパラメーター サーバーを使用して SLURM クラスターで Tensorflow を実行する方法は?
私は幸運にも、大学の SLURM を利用した GPU クラスターにアクセスできる立場にあります。Tensorflow をクラスター ノードで実行しようとしてきましたが、これまでのところ、ドキュメントを見つけることができませんでした。(私が大学で話した人は皆、以前は CPU ノードを使用して、または単一の GPU ノードを使用して実行していました。
この前の質問hereから優れたドキュメントを見つけました。残念ながら、かなり不完全です。このような私が見つけた他のすべての分散例は、パラメーターサーバーを明示的に指定することに依存しています。
SO質問のコードを使用して実行しようとすると、存在しないパラメータサーバーへの接続に失敗するか、server.joinが呼び出されてスバッチ出力ファイルに出力が提供されないときにハングするまで、完全に動作しているように見えます(私は起こるべきだと理解しています)。
要するに、私の質問は、SLURM クラスターで Tensorflow を開始するにはどうすればよいかということです。スバッチの段階から。AWS で SPARK 以外の分散コンピューティング フレームワークを扱うのはこれが初めてで、Tensorflow を適切に構成する方法についてもっと学びたいと思っています。サーバーの例として、tf_hostlist 内のどの項目をパラメーター サーバーとして指定するにはどうすればよいですか? あるいは、他の例で見たように、sbatch を使用して各ワーカーにわずかに異なるコマンドを送信できますか?