2016-10-04 6 views
0

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'] 
[] 

だから誰もが知っているのですか?構文が間違っていますか?追加のフラグを指定する必要はありますか?

ありがとうございます!

答えて

0

はい、構文が正しくないようです。ドキュメントでは、追加の変数をコンマで区切り、単一のexportフラグで指定する必要がありました。 export

> sbatch --export=build=true,param=p100_256 run.py 

だから、以前のインスタンスはexportが指定されるたびに交換されなければなりません。

関連する問題