我有一份mpi工作,我使用sbatch脚本运行,这看起来像是:
# 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
我想监视内存/ cpu的使用情况以及" myprog"的其他一些行为。流程。我已经编写了一个简单的脚本(称之为" monitor"),它可以做到这一点,但我很难知道如何使用sbatch在每个分配的节点上运行它的一个副本,at同时和#34; myprog"。
我想我需要修改上面的内容:
...
srun monitor
mpirun myprog
但我对a)是否意味着"监控"而感到困惑。将在后台运行和b)我如何控制在哪里"监控"运行。
答案 0 :(得分:1)
要让monitor
在后台运行',实际上srun
是非阻塞的,后续的mpirun
命令可以启动,您只需要添加&符号({ {1}})最后。
要确保程序在分配的“主节点”上运行,只需删除&
命令。
如果您需要在特定节点上运行该程序,请使用srun
选项(您可能首先需要首先获取所有已分配节点的列表。)您还应该考虑使用-n1 --nodelist
--overcommit
的选项,以避免将完整的CPU专用于您认为不受CPU限制的监控程序。