mpirun,mpiexec和mpiexec.hydra有什么区别和关系?

use*_*964 15 mpi

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

在我的集群上,所有这些都存在,并且所有这些都属于英特尔.

他们之间有什么区别和关系?特别是,什么是mpiexec.hydra?为什么mpiexec和hydra之间有一个点,这是什么意思?

Hri*_*iev 24

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

不同的MPI实现具有不同的启动和控制过程的手段.MPICH从一个名为MPD(Multi-Purpose Daemon或其他)的基础设施开始.然后它切换到新的Hydra流程管理器.由于Hydra的工作方式与MPD不同,因此基于Hydra的mpiexec命令行参数与基于MPD的参数不同,并且使用户可以明确选择基于Hydra的命令行,它可以作为mpiexec.hydra.旧的叫做mpiexec.mpd.它可能有一个基于MPICH-MPI函数库,只提供了九头蛇发射,然后mpiexecmpiexec.hydra将是相同的可执行文件.英特尔MPI基于MPICH,其新版本使用Hydra流程管理器.

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

总结一下:

  • mpiexec.something 是给定实现的MPI进程启动器的特定版本
  • mpiexec并且mpirun是通用名称,通常是实际启动器的副本或符号链接
  • 双方mpiexecmpirun应该这样做
  • 一些实现命名它们的启动器mpiexec,一些命名它mpirun,一些命名它们,并且当系统路径中同时有多个MPI实现时(例如从发行包安装时),这通常是混淆的根源