通过srun启动的MPI作业中的固定进程

通过srun启动的MPI作业中的固定进程,mpi,slurm,Mpi,Slurm,我正在SLURM集群上运行MPI作业,并希望将生成的进程固定到节点上的特定核心。这可能包括不同节点上不同数量的进程以及不同节点上不同的固定模式。如果我使用salloc分配节点,为mpi进程构造一个秩文件,并使用mpirun启动进程,那么这一切都相对容易 不幸的是,如果由于任何原因(如超时或抢占)取消了分配,则在节点上运行的进程将被终止,但在头节点上执行的mpirun不会被终止,它将为正在执行的线程无限期地从生成可忽略的负载变为生成100%的负载 答案似乎是使用srun而不是mpirun来启动应用

我正在SLURM集群上运行MPI作业,并希望将生成的进程固定到节点上的特定核心。这可能包括不同节点上不同数量的进程以及不同节点上不同的固定模式。如果我使用salloc分配节点,为mpi进程构造一个秩文件,并使用mpirun启动进程,那么这一切都相对容易

不幸的是,如果由于任何原因(如超时或抢占)取消了分配,则在节点上运行的进程将被终止,但在头节点上执行的mpirun不会被终止,它将为正在执行的线程无限期地从生成可忽略的负载变为生成100%的负载


答案似乎是使用srun而不是mpirun来启动应用程序,但如果我这样做的话,我很难找到如何设置流程位置。有人有什么建议吗?

我不是口吃专家,在不知道你想做什么的具体情况下,我们无法给你一个具体的答案。但是,您可能希望在SLURM文档中找到:

它有各种各样的文档,有一百万种不同的方法可以绑定到核心、套接字等等。如果要将进程专门绑定到单个内核,可能需要将
--cpu bind
map\u cpu
结合使用

也可能有关于如何在您的机器上执行此操作的特定系统的文档。例如,在阿贡国家实验室的超级计算机上,您可以在他们的网站上找到关于如何专门为IBM BG/Q执行此操作的信息:


为什么使用
salloc
而不是
sbatch
?这个节目是互动的吗?否则,使用
sbatch
将终止主
mpirun
进程。由于我正在运行的实验的性质,我使用salloc分配了大量机器,然后使用srun在此分配中启动特定作业。在使用salloc开始任何操作之前,我想确保我拥有所有所需的机器。谢谢,但我已经查阅了一段时间此类文档,据我所知,我只能使用这些命令构建进程的同质排列,正如我所说,我只指定每个节点的进程数和节点数。我试图做的是能够指定节点A上的核心2、4、6、8、9上需要5个进程,节点b上的核心1、3、5、9上需要4个进程,例如,您可以使用rankfile。