我是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显示为流程管理器?
2,pbs有什么作用吗?
3,谁负责在不同节点上创建可执行文件的副本?(我从节点A启动作业)。
我知道问题非常冗长,我会感谢你提出一些好的资源。
答案 0 :(得分:8)
有两种类型的集群 - 受某些分布式资源管理器(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及其衍生产品(例如英特尔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
完成。