mpirun、mpiexec和mpiexec.hydra之间的区别和关系是什么?

mpirun、mpiexec和mpiexec.hydra之间的区别和关系是什么?,mpi,Mpi,我对三件事感到困惑:mpirun、mpiexec和mpiexec.hydra 在我的群集上,所有这些都存在,并且都属于intel 它们之间的区别和关系是什么?特别是,mpiexec.hydra到底是什么?为什么mpiexec和hydra之间有一个点,这意味着什么?mpirun和mpiexec基本上是相同的-在许多MPI实现中,进程启动器的名称。MPI标准没有说明应该如何启动和控制列组,但它建议(尽管没有要求)如果有任何类型的启动器,应该将其命名为mpiexec。一些MPI实现从mpirun开始,

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

在我的群集上,所有这些都存在,并且都属于intel


它们之间的区别和关系是什么?特别是,mpiexec.hydra到底是什么?为什么mpiexec和hydra之间有一个点,这意味着什么?

mpirun
mpiexec
基本上是相同的-在许多MPI实现中,进程启动器的名称。MPI标准没有说明应该如何启动和控制列组,但它建议(尽管没有要求)如果有任何类型的启动器,应该将其命名为
mpiexec
。一些MPI实现从
mpirun
开始,然后采用
mpiexec
以实现兼容性。其他实现则相反。最后,大多数实现都以这两个名称提供启动器。实际上,
mpirun
mpiexec
的功能应该没有区别

不同的MPI实现有不同的启动和控制流程的方法。MPICH从一个名为MPD(多用途守护程序或其他东西)的基础结构开始。然后它切换到更新的Hydra process manager。由于Hydra的工作方式与MPD不同,因此基于Hydra的
mpiexec
采用的命令行参数与基于MPD的命令行参数不同,为了使用户能够显式选择基于Hydra的参数,可以将其作为
mpiexec.Hydra
提供。旧的名为
mpiexec.mpd
。可以有一个基于MPICH的MPI库,该库只提供Hydra启动器,然后
mpiexec
mpiexec。Hydra
将是相同的可执行文件。“英特尔MPI”基于MPICH,其较新版本使用Hydra process manager

OpenMPI构建在开放运行时环境(ORTE)之上,它自己的进程启动器称为
ORTRUN
。为了兼容性,
orterun
也被符号链接为
mpirun
mpiexec

总结如下:

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

可能重复@JohnZwinck Hi,JohnZwinck。我不这么认为。我知道那篇文章,但读完后,我还是不明白。所以我发了这个帖子非常感谢你,赫里斯托·伊利耶夫。你的回答让事情更清楚了。而且似乎
mpirun
必须指定
-n
选项,而
mpiexec
mpiexec.hydra
不必在我的骑士登陆系统上使用英特尔编译器
mpiexec
是指向
mpiexec.hydra
的符号链接(即它们是相同的)。但是,
mpirun
是一个调用mpiexec.hydra的shell脚本。您的句子“mpiexec和mpirun应该做相同的事情”是什么意思?你是说他们应该做同样的事情?这意味着他们都在以这样或那样的方式启动MPI作业。