如何在 Slurm 批处理文件中声明变量并在 multiprog conf 中使用它?
How to declare a variable in a Slurm batch file and use it in the multiprog conf?
在我当前的项目中,我遇到了 slurm multiprog conf 中超长命令的问题(它有 256 个字符的限制)。
为了避免这种情况,我想在批处理文件中定义变量(路径、用户数据、文件名)并在 multiprog 配置文件中使用它们。
阿姨 google 和简陋的文档没有给我提示。我研究了使用环境变量,但还没有找到设置我自己的方法。
有什么提示吗?
multiprog 配置文件中的命令行是 exec
的,而不是用 Bash 解析的,因此您需要显式调用 Bash shell。
例如:
$ export VAR=VALUE
我在环境中设置了一个VAR
变量,值为VALUE
并使用下面的conf文件来说明:
$ cat multi.conf
0 echo $VAR
1 bash -c 'echo $VAR'
任务 0 将简单地 exec
编辑,而任务 1 将首先由 Bash 解析。结果:
$ srun -n2 -l --multi-prog multi.conf
0: $VAR
1: VALUE
Taks 0 回应变量名称,而任务 1 回应变量的值。但要注意你需要额外花费10个字符。
在我当前的项目中,我遇到了 slurm multiprog conf 中超长命令的问题(它有 256 个字符的限制)。
为了避免这种情况,我想在批处理文件中定义变量(路径、用户数据、文件名)并在 multiprog 配置文件中使用它们。
阿姨 google 和简陋的文档没有给我提示。我研究了使用环境变量,但还没有找到设置我自己的方法。
有什么提示吗?
multiprog 配置文件中的命令行是 exec
的,而不是用 Bash 解析的,因此您需要显式调用 Bash shell。
例如:
$ export VAR=VALUE
我在环境中设置了一个VAR
变量,值为VALUE
并使用下面的conf文件来说明:
$ cat multi.conf
0 echo $VAR
1 bash -c 'echo $VAR'
任务 0 将简单地 exec
编辑,而任务 1 将首先由 Bash 解析。结果:
$ srun -n2 -l --multi-prog multi.conf
0: $VAR
1: VALUE
Taks 0 回应变量名称,而任务 1 回应变量的值。但要注意你需要额外花费10个字符。