我是MPI的新手,我对创建和启动工作有一些疑问。我试图弄清楚
出来,但事情对我来说很混乱。所以我正在使用的集群体系结构是这样的-有四个相互连接的节点(A,B,C,D),每个节点上都安装了MPICH2。 mpiexec -info给...
.....配置选项:'--prefix = / usr / local / mpich2-1.4.1-install /''--with-pm = hydra'....
Process Manager: pmi
Launchers available: ssh rsh fork slurm ll lsf sge manual persist
Topology libraries available: hwloc plpa
Resource management kernels available: user slurm ll lsf sge pbs
据我所知(如果我错了,请纠正我)PMI是流程管理界面,hydra,mpirun,mpiexec是流程管理器,如果我们使用不同的PM,PMI提供了将PM与流程进行交互的方法。所以我的疑问是-
1,为什么将PMI显示为Process Manager?
2,铅有什么作用?
3,谁负责在不同节点上创建可执行文件的副本?(我正在从节点A启动作业)。
我知道问题很漫长,感谢您提出一些好的资源。
最佳答案
有两种类型的集群-处于某些分布式资源管理器(DRM)(如PBS,LSF,S / OGE等)控制下的集群,而不属于那些集群。典型的DRM提供了在授权的分配内启动远程进程并控制这些进程的机制,例如。向他们发送信号并获取有关其发射和终止状态的信息。当群集不受DRM的控制时,MPI运行时必须实施自己的流程管理。不同的MPI库具有不同的方法,但是几乎所有方法都可以归结为通过远程节点上的rsh或ssh守护程序启动以处理远程进程。即使在使用DRM时,该库仍可能在其之间放置其自己的进程管理器,以提供可移植性。
MPICH带有两个过程管理器:MPD和Hydra。 MPD代表多用途守护程序,现在被认为是旧版。 Hydra更新且更好,因为它提供了可感知拓扑的流程绑定和其他功能。无论使用什么流程管理器,库都必须以某种方式与其进行对话,例如获取启动信息或请求在MPI_COMM_SPAWN
期间启动新进程。这是通过PMI界面完成的。
话虽如此,您的案例中的mpiexec
是Hydra流程经理。您列出的信息是Hydra本身的功能。由于MPICH及其派生产品(例如Intel MPI)可能是唯一使用Hydra的MPI实现,因此除了MPICH固有的PMI之外,后者不需要提供任何其他过程管理接口。启动程序是Hydra用来启动远程进程的机制。当不使用DRM时,ssh
和rsh
是显而易见的选择。 fork
用于在本地节点上启动进程。资源管理内核是Hydra与DRM进行交互以便确定诸如已授权分配之类的机制。其中一些还可以启动流程,例如pbs
使用PBS或Torque的tm
界面。
总结一下:
1)Hydra实现PMI接口以便能够与MPICH进行通信。它不了解其他界面,例如它无法启动针对Open MPI编译的MPI可执行文件。
2)Hydra与类似PBS的DRM(PBSPro,Torque)集成。集成意味着,例如,您不必为mpiexec
提供主机列表,因为已授予节点的列表是自动获取的。它还使用PBS的本机tm
接口启动和监视远程进程。
3)在更高级别上,Hydra启动远程副本。最终,这可以通过DRM或通过rsh
/ ssh
完成。
关于parallel-processing - MPI中的流程经理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24668811/