MPICH2 Hydra进程管理框架分析

本文深入分析了MPICH2中的Hydra进程管理框架,包括I/O Demux Engine、Bootstrap、Process Binding、PMI接口及其交互过程。Hydra由作业加载程序JLE和进程管理代理PMP组成,采用PMI-1接口进行进程间通信。Hydra的I/O Demux Engine负责消息管理,Bootstrap处理程序启动和状态维护,Process Binding涉及CPU或Memory的绑定。MPI进程通过PMI接口与PMP交互,实现进程管理与同步。
摘要由CSDN通过智能技术生成

        MPICH2是由Argonne国家实验室维护的开源MPI库,是高性能计算领域使用最为广泛的MPI库之一。本文主要对其中Hydra进程管理框架进行了简要分析,希望可以为相关领域的学者提供帮助。在阅读本文前,读者可以首先参考其官方介绍:http://wiki.mpich.org/mpich/index.php/Hydra_Process_Management_Framework

        Hydra构建了进程管理框架,MPI进程需要经常与该框架进行交互,其交互的语言就是PMI标准,即进程管理接口(Process Management Interface)。因此要全面掌握该框架需要同时了解Hydra和客户端MPI进程两个部分,下面将分别从两个部分展开分析。需要注意的是,文中涉及的内容均以发稿前最新的mpich3.1为准,且使用PMI-1接口。

1. Hydra 进程管理框架

        下图是mpich wiki给出的Hydra结构图:

        从进程拓扑上看,Hydra由一个运行在服务器上的作业加载程序JLE(Job Launching Executable)和多个运行在不同计算节点上的进程管理代理PMP(Process Manager Proxy)组成。之所以称为PMP是因为它基本上具备了PM(Proxy Manager)的所有功能,代理PM并运行在计算节点上负责具体维护本节点上所有进程的状态。换言之,包括MPI进程在内系统进程拓扑是一个倒树状结构,JLE处于树根,负责在各计算节点上创建进程PMP;PMP在本节点上创建一个或多个MPI进程。JLE对应的执行程序就是我们经常使用的作业加载程序mpiexec.hydra;PMP为hydra_pmi_proxy。

        在介绍进程拓扑结构后,我们来看看上图中主要功能模块的作用,按照自底向上的顺序:

      1、I/O Demux Engine

        Demux的字面意思是“解复用器”。顾名思义,Demux 本质上一个消息管理系统,可以监听多个文件描述符的状态,当文件描述符接收到消息后,回调注册的处理函数。

Demux相关的代码位于src\pm\hydra\tools\demux目录下;其主要函数如下所示:

        1)HYDT_dmx_init:根据用户选项指定wait_for_event为HYDT_dmxu_poll_wait_for_event或HYDT_dmxu_select_wait_for_event。

        2) HYDT_dmx_register_fd(int num_fds, int *fd, HYD_event_t events, void *userp, HYD_status(*callback) (int fd, HYD_event_t events, void *userp)):注册描述符处理函数,根据描述符数量“num_fds”,描述符队列指针“fd”,事件类型“events”,回调函数“callback”,将处理函数添加进HYDT_dmxu_cb_list。
        3) HYDT_dmx_deregister_fd:注销函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值