我搞混了3件事: mpirun、mpiexec和mpiexec.hydra
在我的集群上,它们都存在,而且它们都属于英特尔。
它们之间有什么区别和联系?尤其是,mpiexec.hydra到底是什么?为什么在mpiexec和九头蛇之间有一个点,这是什么意思?
发布于 2016-05-22 15:54:34
mpirun
和mpiexec
基本上是相同的-在许多MPI实现中都是进程启动器的名称。MPI标准没有说明如何启动和控制队列,但它建议(尽管没有要求),如果有任何类型的启动器,它应该命名为mpiexec
。一些MPI实现从mpirun
开始,然后为了兼容而采用mpiexec
。其他的实现做了相反的事情。最后,大多数实现都以这两个名称提供它们的启动器。在实践中,mpirun
和mpiexec
所做的应该没有区别。
不同的MPI实现具有不同的启动和控制进程的方法。MPICH从名为MPD (多用途守护程序或其他东西)的基础设施开始。然后它切换到更新的Hydra进程管理器。由于Hydra的工作方式与MPD不同,因此基于Hydra的mpiexec
采用与基于MPD的命令行参数不同的命令行参数,并且为了使用户能够显式选择基于Hydra的命令行参数,它以mpiexec.hydra
的形式提供。旧的被称为mpiexec.mpd
。有可能有一个基于MPICH的MPI库,它只提供九头蛇启动器,然后mpiexec
和mpiexec.hydra
将是相同的可执行文件。英特尔MPI基于MPICH,其较新版本使用Hydra进程管理器。
Open MPI构建在Open Run-Time Environment (ORTE)之上,它自己的进程启动器被称为orterun
。为了兼容,orterun
也被符号链接为mpirun
和mpiexec
。
总结一下:
mpiexec.something
是给定implementationmpiexec
的MPI进程启动器的特定版本,mpirun
是通用名称,通常是实际launchermpiexec
的副本或符号链接,mpirun
应该做相同的mpiexec
,一些实现将其命名为mpirun
,一些实现将其同时命名为mpirun
,并且当多个MPI实现同时在系统路径中可用时(例如,当从发行版软件包安装时)通常是混淆的来源
https://stackoverflow.com/questions/37369733
复制相似问题