默认情况下,当将 SLURM 作业作为数组提交时,数组中的所有作业共享相同的作业名称。在文档中(此处:https://slurm.schedmd.com/job_array.html),它显示数组中的每个作业都可以通过
scontrol
单独设置其名称(在“Scontrol命令使用”部分中描述) ”)。
这可以直接通过
sbatch
脚本完成吗?
我刚刚创建了一个帐户,因为我正在尝试执行此操作并且确实找到了解决方案。 您可以使用 scontrol 更改作业的名称,语法如下:
scontrol update job=<job_id> JobName=<new_name>
您可以手动执行此操作,但也可以从阵列作业中自动设置作业的名称,从而自动为阵列中的每个作业分配不同的名称。
我发现这很有用,因为我主要在不同的目录中运行计算,如果我有一项作业比其他作业运行的时间长得多,我希望能够快速检索它的运行位置以查看发生了什么。 当然,您可以根据自己的喜好设置其他名称作为您的工作名称。
在我的例子中,我将 scontrol 命令添加到通过数组运行的脚本中,以便获取每个目录的以下名称:“job_name - 目录”。作业 ID 和作业名称可以从环境变量中检索。
scontrol update job=$SLURM_ARRAY_JOB_ID JobName="$SLURM_JOB_ID - $folder"
编辑:我按照 jordi 的建议更新了命令,我的脚本中的命令是正确的,但显然在此处回复时复制了错误的变量。