【问题标题】:What is the difference and relationship between mpirun, mpiexec and mpiexec.hydra?mpirun、mpiexec和mpiexec.hydra有什么区别和关系?
【发布时间】:2016-09-19 01:54:06
【问题描述】:

我对 3 件事感到困惑:mpirun、mpiexec 和 mpiexec.hydra

在我的集群上,它们都存在,并且都属于intel。

它们之间有什么区别和关系?特别是,mpiexec.hydra 到底是什么?为什么mpiexec和hydra中间有个点,是什么意思?

【问题讨论】:

  • @JohnZwinck 你好,JohnZwinck。我不这么认为。我知道那篇文章,但是读了之后,我还是不明白。所以我发了这篇文章

标签: mpi


【解决方案1】:

mpirunmpiexec 基本相同——在许多 MPI 实现中进程启动器的名称。 MPI 标准没有说明应该如何启动和控制等级,但它建议(尽管没有要求)如果有任何类型的启动器,它应该命名为mpiexec。一些 MPI 实现以mpirun 开头,然后采用mpiexec 以实现兼容性。其他实现则相反。最后,大多数实现都以这两个名称提供了它们的启动器。在实践中,mpirunmpiexec 所做的应该没有区别。

不同的 MPI 实现具有不同的启动和控制流程的方法。 MPICH 从一个名为 MPD(多用途守护程序或其他东西)的基础设施开始。然后它切换到较新的 Hydra 流程管理器。由于 Hydra 的处理方式与 MPD 不同,基于 Hydra 的 mpiexec 采用与基于 MPD 的命令行参数不同的命令行参数,并且为了让用户能够明确选择基于 Hydra 的命令行参数,它以 @987654329 的形式提供@。旧的称为mpiexec.mpd。可以有一个基于 MPICH 的 MPI 库,它只提供 Hydra 启动器,然后 mpiexecmpiexec.hydra 将是相同的可执行文件。英特尔 MPI 基于 MPICH,其较新版本使用 Hydra 进程管理器。

Open MPI 建立在 Open Run-Time Environment (ORTE) 之上,它自己的进程启动器称为orterun。为了兼容性,orterun 也符号链接为 mpirunmpiexec

总结一下:

  • mpiexec.something 是给定实现的 MPI 进程启动器的特定版本
  • mpiexecmpirun 是通用名称,通常是实际启动器的副本或符号链接
  • mpiexecmpirun 都应该这样做
  • 有些实现将它们的启动器命名为mpiexec,有些将其命名为mpirun,有些将两者都命名,当系统路径中同时存在多个 MPI 实现时(例如,从发行包)

【讨论】:

  • 非常感谢您,Hristo Iliev。您的回答使事情变得更加清晰。并且似乎mpirun 必须指定-n 选项,而mpiexecmpiexec.hydra 不必是
  • 在我的带有 Intel 编译器的 Knights Landing 系统上,mpiexec 是指向mpiexec.hydra 的符号链接(即它们是相同的)。然而,mpirun 是一个调用 mpiexec.hydra 的 shell 脚本。
  • 你的句子“mpiexec 和 mpirun 都应该做同样的事情”是什么意思?你的意思是他们应该做同样的事情
  • 这意味着两者都以一种或另一种方式启动 MPI 作业。
猜你喜欢
  • 2012-04-21
  • 1970-01-01
  • 2010-10-20
  • 2014-10-06
  • 2015-12-18
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 2015-08-22
相关资源
最近更新 更多