我已将作业提交到 SLURM 队列,该作业已运行并完成。然后我使用以下命令检查已完成的作业sacct
命令。但是查看 sacct 命令的结果,我注意到了我没有预料到的其他结果:
JobID JobName State NCPUS Timelimit
5297048 test COMPLETED 1 00:10:00
5297048.bat+ batch COMPLETED 1
5297048.ext+ extern COMPLETED 1
任何人都可以解释什么是“批处理”和“外部”工作以及它们的目的是什么。为什么即使主作业失败,外部作业也总是完成。
我尝试搜索文档,但没有找到令人满意且完整的答案。
编辑:这是我提交的用于生成上述内容的脚本sacct
output:
#!/bin/bash
echo test_script > done.txt
与以下sbatch
命令:
sbatch -A BRIDGE-CORE-SL2-CPU --nodes=1 --ntasks=1 -p skylake --cpus-per-task 1 -J jobname -t 00:10:00 --output=./output.out --error=./error.err < test.sh
一个 Slurm 作业包含多个作业步骤,这些作业步骤均由 Slurm 单独计算(根据资源使用情况)。通常,这些步骤是使用 srun/mpirun 创建的,并从 0 开始枚举。但除此之外,有时还有两个特殊步骤。例如,进行以下工作:
sbatch -n 4 --wrap="srun hostname; srun echo Hello World"
这导致以下 sacct 输出:
JobID JobName Partition Account AllocCPUS State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
5163571 wrap medium admin 4 COMPLETED 0:0
5163571.bat+ batch admin 4 COMPLETED 0:0
5163571.ext+ extern admin 4 COMPLETED 0:0
5163571.0 hostname admin 4 COMPLETED 0:0
5163571.1 echo admin 4 COMPLETED 0:0
The two srun
调用创建了步骤5163571.0
and 5163571.1
. The 5163571.bat+
说明批处理脚本所需的资源(在本例中只是srun hostname; srun echo Hello World
. --wrap
只需将其放入文件中并添加#!/bin/sh
).
许多非 MPI 程序在批处理步骤中执行大量计算,因此此处会考虑资源使用情况。
现在对于5163571.ext+
:此步骤说明该作业在 slurm 之外使用的所有资源。这仅显示,如果序言标志 https://slurm.schedmd.com/slurm.conf.html#OPT_PrologFlags contain
用来。
属于 slurm 作业但不直接由 slurm 控制的进程的一个示例是 ssh 会话。如果您通过 ssh 进入运行作业之一的节点,您的会话将被放置到该作业的上下文中(并且您将被 cgroup 限制为可用资源,如果已设置)。您在该 ssh 会话中执行的所有计算都将在 .extern 作业步骤中进行计算。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)