3

我有一个 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)我如何控制“监视器”的运行位置。

4

1 回答 1

1

monitor“在后台”运行,实际上srun是非阻塞的并且后续mpirun命令可以启动,您只需&在末尾添加一个 & 符号 ( )。

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

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

于 2015-10-31T21:51:59.387 回答