在Slurm的前置脚本中可以使用变量吗?
是否可以在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.
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。