如何获取Slurm数组作业中各任务的实际Job ID?
获取Slurm数组任务的实际Job ID方法
有几种实用的方法可以获取数组任务索引和实际Job ID的对应关系:
用
sacct批量查询数组任务详情
这是最直接的方式,通过数组主Job ID就能导出所有子任务的实际ID。执行命令:sacct -j <数组主JobID> --format=JobID,JobIDRaw,ArrayTaskID,State把
<数组主JobID>替换成你看到的主任务ID(比如1145141),输出会清晰展示数组索引、任务标识和实际Job ID的对应关系,类似:JobID JobIDRaw ArrayTaskID State ------------ ---------- ----------- ---------- 1145141 1145141 - COMPLETED 1145141_1 1145144 1 COMPLETED 1145141_2 1145145 2 RUNNING ...其中
JobIDRaw列就是每个数组任务的实际Job ID,ArrayTaskID是对应的索引。在提交脚本中主动记录对应关系
Slurm会给每个数组任务设置环境变量,$SLURM_JOB_ID就是当前任务的实际Job ID,$SLURM_ARRAY_TASK_ID是数组索引。可以在脚本里添加一行记录:echo "数组索引 $SLURM_ARRAY_TASK_ID 实际Job ID: $SLURM_JOB_ID" >> /vol/cluster-data/gprezza/logs/array_job_mapping.log这样任务运行时会自动把对应关系写入指定日志文件,后续直接查看这个文件就能拿到对应信息。
用
scontrol查询单个数组任务
如果已经知道某个数组任务的标识(比如1145141_1),可以直接查询它的详细信息:scontrol show job 1145141_1输出内容里会包含
JobId=<实际ID>的行,这就是该任务的实际Job ID。
内容的提问来源于stack exchange,提问作者gprezza
相关产品推荐
相关产品推荐

