SLURMジョブスケジューラを使用してジョブをサブミットしようとしていて、--export=VAR=VALUE
構文を使用すると、一部の変数が渡されていないことがわかります。 export
)。私は各変数に--export=...
を指定する必要があると私は理解しています。コマンドライン引数がsbatchで渡されない
sbatch --export=build=true --export=param=p100_256 run.py
マイスクリプト「run.pyは」次のようになります。
#! /usr/bin/env python
import os,fnmatch
print(os.environ["SLURM_JOB_NAME"])
print(os.environ["SLURM_JOB_ID"])
print(fnmatch.filter(os.environ.keys(),"b*"))
print(fnmatch.filter(os.environ.keys(),"p*"))
私の既存のスクリプト(PBSで以前に使用)のすべてのpythonに既にあるように私はPythonスクリプトを提出することを好みます私はシェルスクリプトでそれらを書き直す必要はありません。私の問題は、短い例を通して最もよく説明されています。まず
、
> sbatch --export=build=true --export=param=p100_256 run.py
> Submitted batch job 2249581
は次のログ・ファイルを生成します。
run.py
2249581
[]
['param']
私は 'ビルド' と 'PARAM' のexport
フラグの順序を逆にした場合、
> sbatch --export=param=true --export=build=p100_256 run.py
> Submitted batch job 2249613
ログファイルは次のようになります。
run.py
2249613
['build']
[]
これは、export
フラグの最終インスタンスのみが渡されることを示唆しています。私は、ログファイルに戻りexport
、
> sbatch --export=param=1 --export=build=p100_256 --export=build_again=hello run.py
> Submitted batch job 2249674
の3番目のインスタンスに追加した場合export
の唯一の最後のインスタンスが渡されている理由は、
run.py
2249674
['build_again']
[]
だから誰もが知っているのですか?構文が間違っていますか?追加のフラグを指定する必要はありますか?
ありがとうございます!