【问题标题】:Run a "monitor" task alongside mpi task in SLURM在 SLURM 中与 mpi 任务一起运行“监控”任务
【发布时间】:2015-09-24 10:37:32
【问题描述】:

我有一个 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 使用情况和其他一些行为。我编写了一个简单的脚本(称为“监视器”)可以做到这一点,但我很难理解如何使用 sbatch 在每个分配的节点上运行它的一个副本,同时作为“myprog”。

我想我需要将上面的内容修改为:

...
srun monitor
mpirun myprog

但我很困惑 a) 这意味着“监视器”是否会在后台运行,以及 b) 我如何控制“监视器”的运行位置。

【问题讨论】:

    标签: slurm sbatch


    【解决方案1】:

    要让monitor '在后台'运行,所以实际上srun 是非阻塞的,随后的mpirun 命令可以启动,您只需在末尾添加一个& 符号(&) .

    要确保程序在分配的“主节点”上运行,只需删除srun 命令。

    如果您需要该程序在特定节点上运行,请使用-n1 --nodelist 选项(您可能首先需要获取所有已分配节点的列表。)您还应该考虑使用@987654328 的--overcommit 选项@ 以避免将一个完整的 CPU 专用于您的监控程序,我认为它不受 CPU 限制。

    【讨论】:

    • 啊,谢谢。因此,如果我这样做了(愚蠢的单行 cmets,希望这是有道理的):<#SBATCH directives, as above>\n monitor & \n mpirun myprog 那么监视器只会在“主”节点上运行吗?它还会得到一个完整的CPU吗? (你说得对,我不需要那个 - 这只是一个脚本抓取“顶部”)
    • 是的,它将在“主”节点上运行,并将分配给专用于主节点上该作业的 cgroup 或 cpuset(取决于配置),实际上与其中一个 cpu 共享mpi 进程使用的那些
    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    相关资源
    最近更新 更多