在Slurm的前置脚本中可以使用变量吗?

编程语言 2026-07-10

是否可以在Slurm文件的前导部分(也就是包含SBATCH指令的那一段)之前设置变量?像下面这样:

#!bash

NODE_NUM=$(echo -n $HOSTNAME | tail -c 1)

#SBATCH --output=logs/job_notebook_${NODE_NUM}.out 
.
.
.

或者我需要在提交时把那些东西移到命令行,还是动态创建Slurm文件?

解决方案

不可以。根据 文档 的说明:

Or do I need to move that stuff to the command line when I submit

在很多情况下这确实是一个解决方案,但那时并不知道要使用的计算节点名称,因此在这里行不通

or dynamically create the slurm file?

是的,这应该是一个选项,把主命令重定向到该文件

./my_program ... > logs/job_notebook_${NODE_NUM}.out

或者通过在 #SBATCH 指令之后将以下内容作为第一行插入来重定向整个输出

NODE_NUM=$(echo -n $HOSTNAME | tail -c 1)
exec > logs/job_notebook_${NODE_NUM}.out

备选方案

你不能在前导部分创建变量,但你可以动态地把变量赋给输出文件。
关于选项的完整概览,请参阅SLURM网站: https://slurm.schedmd.com/sbatch.html#SECTION_FILENAME-PATTERN
例如:

#SBATCH --output=logs/outputlog.%N.%j.out

生成的文件名为outputlog...out

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章