在SLURM中同时运行“监视器”任务和mpi任务

4

我有一个mpi任务,使用sbatch脚本在slurm上运行,大致如下:

# request 384 processors across 16 nodes for exclusive use:
#SBATCH --exclusive
#SBATCH --ntasks-per-node=24
#SBATCH -n 384
#SBATCH -N 16
#SBATCH --time 3-00:00:00
mpirun myprog

我希望监视“myprog”进程的内存/CPU使用情况以及其他行为。 我编写了一个简单的脚本(称为“monitor”),可以做到这一点,但我不知道如何使用sbatch在每个分配的节点上同时运行它的一个副本和“myprog”。
我认为我需要修改上面的内容,使其类似于:
...
srun monitor
mpirun myprog

但我对以下两点感到困惑: a) 这是否意味着“monitor”将在后台运行?b) 我该如何控制“monitor”运行的位置。
1个回答

2
要让monitor在后台运行,使srun实际上是非阻塞的,从而可以启动后续的mpirun命令,只需要在末尾添加一个&符号(&)。
如果要确保程序在分配的“主节点”上运行,只需删除srun命令即可。
如果需要该程序在特定节点上运行,请使用-n1 --nodelist选项(可能需要先获取所有分配节点的列表)。您还应考虑使用srun--overcommit选项,以避免将整个CPU专用于监视程序,我假设这不是CPU密集型任务。

啊,谢谢。如果我这样做的话(该死的单行注释,希望这样说得通): <#SBATCH directives, as above>\n monitor & \n mpirun myprog 那么 monitor 只会在“主”节点上运行,对吧?它仍然可以获得整个 CPU 吗?(你说得对,我不需要它——它只是一个抓取“top”的脚本) - lost
是的,它将在“主”节点上运行,并且将被分配到专用于该作业的cgroup或cpuset(取决于配置)上,在实际上与mpi进程使用的cpu之一共享。 - damienfrancois

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接