我正在尝试使用SLURM作业调度程序提交作业,并且发现当我使用--export=VAR=VALUE
语法时,我的一些变量未被传递(通常是{{1的第一个实例中的变量) }})。我的理解是我需要为每个变量指定export
,例如
--export=...
我的脚本“run.py”如下所示:
sbatch --export=build=true --export=param=p100_256 run.py
我更愿意提交一个python脚本,因为我现有的所有脚本(以前用过的PBS)已经在python中了,我不想在shell脚本中重写它们。通过一个简短的例子可以最好地证明我的问题
首先,
#! /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*"))
生成一个包含以下内容的日志文件:
> sbatch --export=build=true --export=param=p100_256 run.py
> Submitted batch job 2249581
如果我颠倒'build'和'param'的run.py
2249581
[]
['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
所有人都知道为什么只传递run.py
2249674
['build_again']
[]
的最终实例?我的语法不正确吗?我是否需要指定其他标志?
谢谢!
答案 0 :(得分:1)
是的,看起来我的语法不正确。我在文档中错过了其他变量应以逗号分隔并使用单个export
标志指定,例如。
> sbatch --export=build=true,param=p100_256 run.py
因此,每次指定export
时,必须替换以前的export
个实例。