MPI-Hydra Process Managerment Framework


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

1. 概述

Hydra frameworkd由如下幾個基本部分組成:php

  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。
相關文章
相關標籤/搜索