2016-10-04 7 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와 함께 이전에 사용) 기존 모든 스크립트로 파이썬 스크립트를 제출 원합니다 쉘 스크립트에서 다시 작성하고 싶지는 않습니다. 내 문제는 간단한 예를 통해 가장 잘 증명됩니다. 첫째

,

> 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 

이제 로그 파일은

처럼 보입니다. 0
run.py 
2249613 
['build'] 
[] 

이는 export 플래그의 최종 인스턴스 만 전달됨을 나타냅니다. 내가 export의 세 번째 인스턴스에 추가하는 경우에만 export의 마지막 인스턴스가 전달되는 이유

> sbatch --export=param=1 --export=build=p100_256 --export=build_again=hello run.py 
> Submitted batch job 2249674 

다음 로그 파일 반환,

run.py 
2249674 
['build_again'] 
[] 

그래서 사람은 알고 있나요? 구문이 잘못 되었나요? 추가 플래그를 지정해야합니까?

감사합니다.

답변

0

예, 올바르지 않은 구문이있는 것 같습니다. 문서에서 추가 변수는 쉼표로 구분하고 단일 export 플래그로 지정해야합니다. export

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

그래서 이전 인스턴스 export가 지정 될 때마다 교체해야합니다.