2016-10-04 75 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*")) 

我寧願提交一個python腳本作爲我的所有現有的腳本(PBS與以前使用的)都已經在Python我不想在shell腳本中重寫它們。我的問題最好通過一個簡短的例子來演示。

首先,

> sbatch --export=build=true --export=param=p100_256 run.py 
> Submitted batch job 2249581 

產生具有以下內容的日誌文件:

run.py 
2249581 
[] 
['param'] 

如果我扭轉export標誌爲 '構建' 和 'PARAM' 的順序,

> 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 

則日誌文件的回報,

run.py 
2249674 
['build_again'] 
[] 

所以沒有任何人知道,爲什麼只有被傳遞的export最後的實例?我得到的語法不正確?我需要指定一個額外的標誌嗎?

謝謝!

回答

0

是的,看起來像我的語法不正確。我在文檔中錯過了其他變量應該用逗號分隔並用單個export標誌來指定,例如,

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

所以以前的export實例必須指定export每次都被替換。