我是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时,sshrsh是显而易见的选择。 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/

10-10 05:56