sbatch で python スクリプトを実行したかったのですが、sbatch で python スクリプトを実行する唯一の方法は、python スクリプトを実行する bash スクリプトを用意することです。持つようにbatch_main.sh
:
#!/bin/bash
#SBATCH --job-name=python_script
arg=argument
python python_batch_script.sh
次に実行します:
sbatch batch_main.sh
これに関する問題は、引数用に別の構成ファイルが必要であり (通常は単一の数値または引数ではないため)、配列オプションも使用できるようにすることです。また、私は通常、複数の異なるスバッチ ジョブを(異なる構成で)同時に実行します。したがって、構成ファイルを変更しても、異なるスバッチの実行が互いに邪魔にならないようにするとよいでしょう (ジョブがキューに入れられてから、 config ファイルが後で変更されると、sbatch を実行したときの構成のコピーではなく、最新の構成ファイルが実行されます)。この問題を回避するために、sbatch スクリプトを実行すると、SLURM が実際にサブミッション スクリプトを内部データベースにコピーすることを発見しました (次のように尋ねたところ、それを発見しました:実行中に slurm で sbatch に送信される bash スクリプトを変更するのは悪い考えですか? )。したがって、実際には構成を bash 送信スクリプトにハード コードすることにしました (送信スクリプトを基本的に構成ファイルにします)。そうすれば、送信スクリプトを編集してからファイルを実行するだけです。ただし、これは絶対に避けたいbashで書くことになるのでやめたいと思います。
理想的には、Python を直接実行する sbatch を実行したいと考えています。
これは不可能かもしれないので、この問題を解決するために他にどのようなオプションが存在するか知りたいと思いました. たとえば、ジョブをキューに入れるときに、正確に実行したいジョブを実行するように、slurm に別のファイル (python 構成ファイルなど) を内部データベースにコピーさせることは可能ですか? (sbatch ジョブを実行してから構成ファイルを変更することは、これを行う方法ではないことに注意してください。これは、構成ファイルを変更したときに問題が発生する可能性があるためです。slrum は、構成のコピーではなく、構成の最新のコピーを読み取ります。ジョブが実行されたとき)。または、他にどのようなオプションがありますか? 私は本当にbashを書くことに行き詰まっていますか、それとも他の奇妙なハックではなく、Pythonで構成を処理するために何か他のことをすることができますか?
一般的に、私は人々が現実の世界でこれのために何をしたか、またはこれのための良い実践/標準は何かを知りたいと思っていました.