问题与文章相关普林斯顿研究计算公司推出 SLURM。
例如,
#SBATCH --job-name=slurm-test # create a short name for your job
SBATCH
第一个之后#
将被执行,create
第二个之后#
将被视为注释。这是因为第二个有空格吗#
?我通常将其视为#
评论。但在某些情况下,它确实会被执行。
答案1
使用 提交 SLURM 作业时sbatch
,作业脚本中以确切字符串开头的任何行都#SBATCH
将被视为作业调度程序的特殊处理指令。
该字符串#SBATCH
称为“magic cookie”,必须作为该行的第一个内容出现,并且#
和之间没有空格SBATCH
。
bash
如果由其他常见 POSIX shell执行,这些行将被视为注释并被完全忽略。
从中并不清楚sbatch
文档那一个更远 #
普遍支持在该行上作为对当前行进行注释的一种方式#SBATCH
。如果#SBATCH
一行需要注释,通常的做法是在该行上方提供普通注释,如下所示
### Job name
#SBATCH --job-name=MYJOB
(三元组###
除了让评论更加突出之外没有什么特别的意义)。
也可以看看:
答案2
#
是 bash 中的注释,所以你不应该my_job.slurm
使用./my_job.slurm
or运行,bash ./my_job.slurm
因为后面的所有内容#
都会被忽略。
但是当您使用 运行它时sbatch
,它会将以 SBATCH 开头的注释识别为参数。
提交脚本是一个shell脚本,例如Bash脚本,其评论, 如果他们是以 SBATCH 为前缀,被 Slurm 理解为描述资源请求和其他提交选项的参数。