【问题标题】:Pinning processes in an MPI job launched through srun在通过 srun 启动的 MPI 作业中固定进程
【发布时间】:2015-02-17 05:24:41
【问题描述】:

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

不幸的是,如果分配因超时或抢占等任何原因而被撤销,则在节点上运行的进程将被杀死,但在头节点上执行的 mpirun 不会被杀死,并且不会产生可忽略的负载为它无限期执行的线程生成 100% 的负载。

答案似乎是使用 srun 而不是 mpirun 来启动应用程序,但如果我这样做,我正在努力找出如何设置进程位置。有人有什么建议吗?

【问题讨论】:

  • 你为什么使用salloc而不是sbatch?程序是否具有交互性?否则,使用 sbatch 您的主要 mpirun 进程将被杀死。
  • 由于我正在运行的实验的性质,我使用 salloc 分配了大量机器,然后使用 srun 启动此分配中的特定作业。我想确保在开始任何事情之前我拥有所有必需的机器,因此使用 salloc。

标签: mpi slurm


【解决方案1】:

我不是 slurm 专家,在不知道您要做什么的具体情况下,我们无法给您具体的答案。但是,您可能想要的内容可以在 SLURM 文档中找到:

https://computing.llnl.gov/linux/slurm/mc_support.html

上面有各种各样的文档,关于一百万种不同的方式来绑定到核心、套接字等等。如果您想专门将进程绑定到各个内核,您可能希望将 --cpu-bind 与 map_cpu 一起使用。

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

http://www.alcf.anl.gov/user-guides/running-jobs#mapping-of-mpi-tasks-to-cores

【讨论】:

  • 谢谢,但我一直在浏览诸如此类的文档有一段时间了,据我所知,我只能使用这些命令构建进程的同质排列,因为我只能在那时指定每个节点的进程数和节点数。我想要做的是能够指定我想要节点 A 上的核心 2、4、6、8、9 上的 5 个进程和节点 b 上的核心 1、3、5、9 上的 4 个进程,例如,你可以使用排名文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
相关资源
最近更新 更多