官方文档地址:https://wiki.mpich.org/mpich/index.php/Hydra_Process_Management_Framework

1. 概述

Hydra frameworkd由以下几个基本部分组成:

  1. User Interface,用户接口UI,如mpiexec
  2. Resource Managerment Kernel,资源管理核心RMK
  3. Process manager,进程管理PM
  4. Bootstrap server,启动服务,如ssh,fork,pbs,slurm,sge
  5. Process Binding,进程监听,如plpa
  6. Commnication Subsystem,例如IB,MX
  7. Process Managerment proxy,进程管理代理
  8. I/O demux engine ,IO复用引擎

结构图下如下:

  • User interface

    此层的主要职责是从用户那里收集有关应用程序的信息: 在何处启动进程;将进程映射到内核,;读取 标准输入(stdin) 并将其转发到适当的进程 (es); 从不同的程序中读取标准输出/标准错误;合适的时候指挥。
  • Resource Mangerment Kernel

    RMK 提供了可与资源管理器进行交互的插件功能,比如Torque,Moab或者Cobalt。例如, 如果应用程序在启动作业之前需要在系统上分配节点, RMK 将完成这部分。同样, RMK 还可以允许在单个系统预留用于多个作业的情况下解耦作业启动。在当前的实现中, RMK 非常简单, 不提供任何这些功能。
  • Process manager

    进程管理器提供了必要的环境设置以及主要的进程管理功能,例如进程管理器pmiserv进程管理器提供了MPICH PMI(PMI)功能。但目前仅支持PMI1。其他进程管理器也可以通过其他接口支持。
  • Process Managerment Proxy

    进程管理代理基本上是一个帮助器代理, 它是在系统的每个节点上生成的, 以帮助进程管理器进行进程生成、进程清理、信号转发、I/O转发以及任何进程管理器特定的功能。

    它基本上可以执行进程管理器可以做的任何任务, 因此, 甚至可以创建进程管理代理的层次结构, 其中每个代理都充当其子树的进程管理器。
  • Bootstrap Server

    引导服务器主要充当预配置的守护进程系统, 允许上一层服务在整个系统中启动进程。

    例如, ssh 引导服务器fork进程, 每一个都通过执行一个 ssh 到另外一台机器,启动一个进程。
  • Processing Binding

    进程监听组件主要处理提取系统体系结构信息 (例如, 处理器的数量、可用的内核和 SMT 线程、它们的拓扑、共享缓存等), 以及将进程绑定到可移植的不同内核中用一种简便的方式。PLPA 是一个这样的体系结构, 已经在Hydra中使用, 但它只提供有限的信息。
  • Communication Subsystem

    通信子系统是不同代理之间以可伸缩方式进行通信的一种方式。这仅与下面描述的预启动和预连接代理有关。

    此组件提供可伸缩的通信机制, 不管系统规模 (例如, 基于IB或MX)。
  • I/O Demux Engine

    这是一个方便的基础组件,不同的组件能够注册他们的文件描述符,demux engine能够等待这些描述符的事件。

    这个方式给出了一个集中式的事件管理集制,因为我们不需要不同的线程阻塞不同的事件。

    I/ODemux Engine使用了同步回调机制。也就是,对于每个文件描述符,进程调用提供了一个函数指针,指向在描述符发生事件时的必须调用的函数。

    Demux Engins引起会在其所有已经注册的文件描述符上阻塞事件,并在发生事件时,调用适当的回调函数。

    此组件在实现中非常有用,但在体系结构本身中没有发挥关键作用。

2. 执行过程和控制流

有三大类基本的可执行类在当前的模式中:UI,PMP,process

架构图如下:

  • UI process

    UI process,如mpiexec,获取用户参数,环境变量,节点信息和其他细节信息,然后传递它们给RMK。

MPI-Hydra Process Managerment Framework的更多相关文章

  1. [Android Pro] Android以root起一个process[shell脚本的方法]

    reference to :  http://***/Article/11768 有时候我们写的app要用uid=0的方式启动一个process,framework层和app层是做不到的,只有通过写脚 ...

  2. 【.Net Framework 体积大?】不安装.net framework 也能运行!?原理补充-3

    继续补充点吧.接上一篇,我们实现了.net framework的精简的步骤. 有网友评论了,那个核心的 mscoree.dll 从.net framework 2.0开始,微软开始了新的CLR承载模型 ...

  3. Android以root起一个process[shell脚本的方法]

    有时候我们写的app要用uid=0的方式启动一个process,framework层和app层是做不到的,只有通过写脚本,利用am来实现.下面是具体步骤: 1.创建一个包含Main()方法Java p ...

  4. Entity Framework Tutorial Basics(22):Disconnected Entities

    Disconnected Entities: Before we see how to perform CRUD operation on disconnected entity graph, let ...

  5. 移动支付之智能IC卡与Android手机进行NFC通信

    本文来自http://blog.csdn.net/hellogv/ .引用必须注明出处.        眼下常见的智能IC卡执行着JavaCard虚拟机.智能IC卡上能够执行由精简后的Java语言编写 ...

  6. Unity 接MM横屏闪退的原因

    =.=研究了1天接SDK到处都在报错,于是使用logcat查看原因截取到这样的Exception. call to OpenGL ES API withno current context(logge ...

  7. 近年Recsys论文

    2015年~2017年SIGIR,SIGKDD,ICML三大会议的Recsys论文: [转载请注明出处:https://www.cnblogs.com/shenxiaolin/p/8321722.ht ...

  8. [深入理解Android卷一全文-第四章]深入理解zygote

    由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该由于纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的所有内容. ...

  9. Python 高性能并行计算之 mpi4py

    MPI  和    MPI4PY   的搭建上一篇文章已经介绍,这里面介绍一些基本用法. mpi4py  的  helloworld from mpi4py import MPI print(&quo ...

随机推荐

  1. Cookie的HttpOnly、secure、domain属性

    Cookie主要属性 Cookie主要属性: path domain max-age expires:是expires的补充,现阶段有兼容性问题:IE低版本不支持,所以一般不单独使用 secure h ...

  2. Asp.net Mvc、webApi配置允许跨域

    Web.config 下<system.webServer> 节点下配置 <httpProtocol> <customHeaders> <add name=& ...

  3. 3.4Python数据处理篇之Numpy系列(四)---ndarray 数组的运算

    目录 目录 (一)数组与标量的运算 1.说明: 2.实例: (二)元素级的运算(一元函数) 1.说明: 2.实例: (三)数组级的运算(二元函数) 1.说明: 2.实例: 目录 1.数组与标量的运算 ...

  4. javascript中的for in循环和for in循环的使用陷阱

    javascript中的for循环和for...in循环还是有些区别的,比如定义一个数组,然后用for..in循环输出 var array=[1,2,3,4,5,6]; for(var s in ar ...

  5. 【转】避免全表扫描的sql优化

    对查询进行优化,应尽量避免全表扫描,首先应考虑在where 及order by 涉及的列上建立索引: .尝试下面的技巧以避免优化器错选了表扫描:· 使用ANALYZE TABLE tbl_name为扫 ...

  6. PHP开发小技巧②—实现二维数组根据key进行排序

    在PHP中内置了很多对数组进行处理的函数,有很多时候我们直接使用其内置函数就能达到我们的需求,得到我们所想要的结果:但是,有的时候我们却不能通过使用内置函数实现我们的要求,这就需要我们自己去编写算法来 ...

  7. ROS教程3 ROS自定义msg类型及使用

    1ROS自定义msg类型及使用 http://blog.csdn.net/u013453604/article/details/72903398 首先创建一个空的package单独存放msg类型(当然 ...

  8. Arduino IDE for ESP8266 项目云盒子(3)外网访问

    互联网访问esp8266 https://item.taobao.com/item.htm?spm=a230r.1.14.20.eYblO3&id=521945102409&ns=1& ...

  9. Qt5.7 + VS2015 环境搭建

    http://blog.csdn.net/liang19890820/article/details/53931813#安装插件 配置 Qt 5.7 选择:Qt VS Tools -> Qt O ...

  10. keystore密钥文件使用的算法-PBKDF2WithHmacSHA1 和Scrypt

    PBKDF2 简单而言就是将salted hash进行多次重复计算,这个次数是可选择的.如果计算一次所需要的时间是1微秒,那么计算1百万次就需要1秒钟.假如攻击一个密码所需的rainbow table ...