mpiexec 与 mpirun

Posted

技术标签:

【中文标题】mpiexec 与 mpirun【英文标题】:mpiexec vs mpirun 【发布时间】:2014-10-06 22:05:11 【问题描述】:

据我所知,mpirunmpiexec 都是启动器。谁能说出mpiexecmpirun 之间的确切区别?

【问题讨论】:

mpiexec 例如似乎接受主机名文件中的表示法 host:num_processes 而 mpirun 似乎不接受(至少不适用于 mvapich2) 【参考方案1】:

mpiexec 是在 MPI 标准中定义的(嗯,至少是最近的版本),我建议您参考那些(您最喜欢的搜索引擎会为您找到它们)以了解详细信息。

mpirun 是由许多 MPI 实现实现的命令。然而,它从来没有被标准化过,而且实现之间总是存在着细微的差异。有关详细信息,请参阅您选择的实现的文档。

是的,它们都用于启动 MPI 程序,现在mpiexec 通常更可取,因为它是标准化的。

【讨论】:

【参考方案2】:

我知道问题已得到解答,但我认为答案不是最好的。我在这里使用 mpirun 在集群上遇到了一些问题,并查看了 mpirun 和 mpiexec 之间是否存在差异。这是我发现的:

说明

Mpiexec 是脚本 mpirun 的替代程序,它是脚本的一部分 mpich 包。它用于从以下位置初始化并行作业 在 PBS 批处理或交互式环境中。 Mpiexec 使用任务 PBS 的管理器库,用于在节点上生成可执行文件的副本 在 PBS 分配中。

使用 mpiexec 而不是脚本 (mpirun) 或外部 守护进程(mpd):

使用 TM 界面启动任务比为每个进程调用单独的 rsh 或 ssh 快得多。 生成的进程使用的资源使用 mpiexec 正确计算,并在 PBS 日志中报告,因为所有进程 的并行作业仍然在 PBS 的控制下,与使用时不同 启动脚本,例如 mpirun。 超过分配的 CPU 时间、挂钟时间、内存使用或磁盘空间限制的任务将被 PBS 彻底终止。它是 进程很难逃脱资源管理器的控制 使用 mpiexec 时。 您可以使用 mpiexec 来强制执行安全策略。如果所有作业都需要使用 mpiexec 和 PBS 执行环境启动, 无需启用对计算节点的 rsh 或 ssh 访问 在集群中。

参考:https://www.osc.edu/~djohnson/mpiexec/

【讨论】:

以上是关于mpiexec 与 mpirun的主要内容,如果未能解决你的问题,请参考以下文章

如何在程序中返回 mpiexec -n 参数?

mpiexec 抛出错误“mkstemp 失败,没有这样的文件或目录”

mpiexec 和 python mpi4py 给出等级 0 和大小 1

彻底解决:-bash: mpiexec: command not found

如何检测我的应用程序是不是由 MS MPI mpiexec 启动?

OpenMPI:简单的 2 节点设置