專利名稱:一種消息傳遞接口支持總線通信框架的制作方法
技術(shù)領域:
本發(fā)明基于Open MPI開源軟件,將Hypertranpsort總線的通信協(xié)議整合到Open MPI架構(gòu)中,Open MPI能夠支持Hypertransport通信協(xié)議。它涉及到并行計算消息傳遞和 通信協(xié)議,屬于計算機技術(shù)領域。
背景技術(shù):
MPI是message passing interface的縮寫,是一個由專家、工業(yè)界和學術(shù)界組成 的大型委員會定義的一套標準,近年來被廣泛應用于并行計算和高性能計算領域。目前,主 流的MPI發(fā)布版本包括MPICH2,MVAPICH2,Open MPI等等。
其中,Open MPI對異構(gòu)環(huán)境下的作業(yè)管理、異構(gòu)處理器、異構(gòu)網(wǎng)絡協(xié)議等方面提供 了較為全面的技術(shù)支持,是目前對異構(gòu)計算環(huán)境支持較好的MPI實現(xiàn)系統(tǒng)。目前,Open MPI 支持的通信網(wǎng)絡主要包括千兆以太網(wǎng),infiniband高速互聯(lián)網(wǎng)絡,Myrinet高速互聯(lián)網(wǎng)絡, 同時,Open MPI還支持共享內(nèi)存通信。Open MPI的架構(gòu)如圖1所示,圖中的名詞解釋(I)BTL (Byte Transport Layer)由BTL框架處理點點數(shù)據(jù)傳輸,該層只是簡單地移動字節(jié)序列,不考慮上層點對 點通信協(xié)議,能夠方便地支持各種網(wǎng)絡設備;其中,SM BTL提供Open MPI對于共享內(nèi)存通信的支持;TCP BTL提供Open MPI對 于TCP/IP協(xié)議的支持;Open IB提供Open MPI對于Infiniband協(xié)議的支持。除此之外, Open MPI還通過SELF BTL提供對于共享內(nèi)存的支持。SELF BTL與SM BTL的區(qū)別在于SELF BTL直接將目的消息的地址指向源消息,實現(xiàn)消息傳遞,而SM BTL則通過插入刪除一個先 入先出隊列完成消息傳遞。(2)BML(BTL Management Layer)由BML框架負責發(fā)現(xiàn)并管理BTL層資源;目前,BML只提供了一種組件r2,在實例 化BML時,只能使用r2。(3)PML(Point-to-Point Messaging Layer)由PML框架為MPI層提供點對點通信接口,該層實現(xiàn)了所有MPI點對點通信語義, 功能包括從MPI層獲取消息,將消息分段,把消息調(diào)度到BTL模塊上,管理請求的進展,在接 收端負責組裝消息等;PML目前提供兩種組件0B1和DR。OBl組件作為默認選擇組件。DR 組件提供完全可靠的消息傳遞,并執(zhí)行數(shù)據(jù)可靠性檢查操作,因此速度較慢。(4) MPI為用戶提供API接口 ;(5) Mpool內(nèi)存池,提供內(nèi)存管理函數(shù);可以被其他component使用。BTL根據(jù)需要注冊和預 先分配fragment。PML無論用戶buffer是否注冊,都允許PML協(xié)議運行。MPI對MPI_Alloc_ mem函數(shù)提供簡單的解決辦法;
(6) Rcache注冊緩存。提供緩存注冊函數(shù),可以被內(nèi)存工具用來進行RDMA連接。集群系統(tǒng)由于具有投資小,研制周期短,性能價格比高,可擴展性高,使用方便等 特點,隨著可移植異構(gòu)編程環(huán)境PVM和標準的消息傳遞平臺MPI等并行編程環(huán)境的日益普 及,集群已經(jīng)發(fā)展成為高性能計算機領域的主流技術(shù)。目前,隨著處理器計算能力的不斷提 高,集群系統(tǒng)的通信逐漸成為系統(tǒng)整體性能的瓶頸,最主要的問題是通信帶寬低、延時大、 通信網(wǎng)絡的可擴展性差等等?,F(xiàn)在主要有兩種解決的辦法,一種是為集群系統(tǒng)設計專用網(wǎng) 絡,另一種是在單機單板內(nèi)采用大規(guī)模處理器系統(tǒng),提高單主板內(nèi)的CPU密度,通過總線技 術(shù)實現(xiàn)處理器和系統(tǒng)間的通信,以提高通信性能。
HyperTransport技術(shù)是一種高速、低延時、點對點的連接,旨在提高PC機、服務 器、嵌入式系統(tǒng),以及網(wǎng)絡和電信設備的集成電路之間的通信速度。HyperTransport有助于 減少系統(tǒng)之中的布線數(shù)量,從而能夠減少系統(tǒng)瓶頸,讓當前速度更快的微處理器能夠更加 有效地在高端多處理器系統(tǒng)中使用系統(tǒng)內(nèi)存。綜上所述,當在單板中采用大規(guī)模處理器系統(tǒng)時,同時在一個主板內(nèi)安裝幾個甚 至多個操作系統(tǒng),如圖2所示,圖中為單一主板上有兩個操作系統(tǒng),每個操作系統(tǒng)中可以使 用單CPU也可以是SMP,則操作系統(tǒng)內(nèi)的MPI進程通信可以通過共享內(nèi)存完成,而主板內(nèi) 的多個操作系統(tǒng)之間則需要使用Hypertransport總線或者外部的以太網(wǎng),Infiniband高 速互聯(lián)網(wǎng)絡進行通信。顯然,在板內(nèi)使用總線通信,延時要遠遠小于其他的外部網(wǎng)絡設備。 MPI對支持Hypertransport總線通信的需求隨之產(chǎn)生。本發(fā)明主要研究Open MPI支持 Hypertransport總線通信的方法。
發(fā)明內(nèi)容
本發(fā)明提供一種使Open MPI開源軟件支持Hypertransport總線通信框架。使 得計算機中的MPI進程可以通過Hypertransport總線進行通信。優(yōu)點在于使用板內(nèi)的 Hypertransport總線進行通信時,通信效率高于使用千兆以太網(wǎng)或者是InfiniBand高速 互聯(lián)網(wǎng)絡,Myrinet網(wǎng)絡實現(xiàn)的系統(tǒng)間互聯(lián)。一種消息傳遞接口(Message Passing Interface,MPI)支持總線通信框架, 包括Open MPI開源軟件的基本框架中的字節(jié)傳輸層(Byte Transport Layer,BTL)、 BML (BTL ManagementLayer,字節(jié)傳輸管理層)、點對點消息層(Point-to-Point Messaging Layer, PML) > MPI ISffifMji^Π (MPI Application Program Interface, MPI API)
池(Mpool)、及注冊緩存(Rcache),其特征在于該框架還包括在上述框架的基礎上,添加 Hypertransport (HT)的總線通信模塊HT BTL (HT Byte Transfer Layer),并調(diào)用 Open MPI 架構(gòu)中相應的內(nèi)存池Mpool ;通過配置HT BTL模塊優(yōu)先級,使得一個主板的相同或不同操 作系統(tǒng)內(nèi),及不同主板間能夠進行通信。所述HT BTL模塊包括核心功能模塊,消息類型模塊,對等端模塊,配置文件模塊; 其中所述核心功能模塊,其功能包括描述HT BTL基本信息,初始化HT BTL模塊,HT BTL組件打開和資源釋放,建立和釋放對等端,分配和釋放消息描述符,消息的發(fā)送和接 收;
所述消息類型模塊,其功能包括定義MPI的消息類型,以及實現(xiàn)對MPI各種消息 的構(gòu)造,定義的消息供核心功能模塊調(diào)用;所述對等端模塊,其功能包括描述進程間通信建立連接時,對等端連接的基本描 述信息,對等端連接的建立和釋放在核心功能模塊當中完成;所述配置文件模塊,其功能包括完成HT BTL下相關文件的路徑配置,以及HT BTL模塊編譯方式的選擇;所述消息類型模塊中定義兩種消息類型供核心功能模塊調(diào)用;對等端模塊當中定 義對BTL對等端的描述信息,核心功能模塊在建立對等端連接時調(diào)用這一模塊;核心功能 模塊完成BTL的初始化,數(shù)據(jù)收發(fā)等功能;配置文件模塊將HT BTL的其他三個模塊整合到 Open MPI的框架當中。所述的HT BTL模塊的初始化過程為(I)MPI API調(diào)用MPI初始化函數(shù); (2) PML層選中組件OBl并調(diào)用BML的初始化函數(shù);(3) BML層通過r2組件初始化所有的BTL ;(4)調(diào)用HT BTL的組件初始化函數(shù),并將其加入可用的BTL模塊鏈表。所述的HT BTL模塊的對等端連接過程為(1) PML層為每個MPI進行關聯(lián)一個BTL組件;(2) BML層添加可用的BTL組件鏈表,并根據(jù)優(yōu)先級對網(wǎng)絡組件進行排序;(3)為同一主板不同操作系統(tǒng)上的MPI進程提供HT BTL組件信息,并調(diào)用建立對 等端的函數(shù)建立HT連接。所述的HT BTL模塊的消息發(fā)送與接收過程為(1)調(diào)用MPI的消息發(fā)送函數(shù);(2)PML層分配發(fā)送請求,根據(jù)消息大小選擇不同的傳輸函數(shù),調(diào)用BML層發(fā)送函 數(shù);(3) BML層的發(fā)送函數(shù)綁定HT BTL對等端,調(diào)用BTL發(fā)送函數(shù);(4)HT BTL發(fā)送函數(shù)為發(fā)送消息分配描述符,調(diào)用HT系統(tǒng)調(diào)用發(fā)送函數(shù),將消息 發(fā)送到對方主機的內(nèi)存中;(5)發(fā)送方完成數(shù)據(jù)發(fā)送后,接收方依次調(diào)用MPI,PML,BML,HT BTL層的接收函數(shù) 完成數(shù)據(jù)接收,并在完成接收以后調(diào)用相應的資源釋放函數(shù),釋放之前分配的系統(tǒng)資源。在主板內(nèi)的各個操作系統(tǒng)之間,MPI進程之間的通過HT總線通信,而主板間的MPI 進程之間通信通過千兆以太網(wǎng)或者infiniband高速互聯(lián)網(wǎng)絡通信。Open MPI定義了 BTL模塊的三類調(diào)用優(yōu)先級,HT BTL模塊的優(yōu)先級設置為high。本發(fā)明一種消息傳遞接口支持總線通信框架,其優(yōu)點及功效在于在高性能計算 領域,隨著多核處理器的不斷發(fā)展,系統(tǒng)結(jié)構(gòu)發(fā)生了很大的變化。在單主板上的中央處理器 (CPU)的密度不斷提高,也使得在同一塊主板上安裝多個操作系統(tǒng)成為可能。同一主板上的 操作系統(tǒng)之間通過總線進行通信。MPI是一種消息傳遞編程模型,目前廣泛應用于并行計算 領域。針對這種單主板多操作系統(tǒng)的系統(tǒng)結(jié)構(gòu),目前主流的MPI實現(xiàn)版本都是基于網(wǎng)絡協(xié) 議的,缺乏對于總線協(xié)議的支持。因此,消息傳遞接口對于總線協(xié)議支持的需求應運而生。運用本發(fā)明的成果,就可以實現(xiàn)消息傳遞接口對于總線通信框架的支持。同時,在同一操作系統(tǒng)內(nèi)部,MPI進程仍然使用共享內(nèi)存通信;在同一主板的不同操作系統(tǒng)之間, MPI進程之間通過總線協(xié)議進行通信;在不同主板之間,MPI進程仍然使用網(wǎng)絡協(xié)議進行通 信。本發(fā)明能夠充分利用現(xiàn)有技術(shù),滿足這種特殊主板的應用需求,具有廣闊的應用前景, 可望產(chǎn)生顯著的經(jīng)濟效益。
圖IOpen MPI架構(gòu)示意2單主板多操作系統(tǒng)互連示意3添加HT模塊后的Open MPI架構(gòu)示意4MPI進程通信路由選擇示意5HT BTL的結(jié)構(gòu)示意6HT BTL各功能模塊關系示意7配置文件模塊的作用示意8HT BTL模塊初始化示意9HT BTL對等端連接示意10利用HT BTL實現(xiàn)消息發(fā)送示意IlHT BTL與HT通信協(xié)議的調(diào)用關系示意12核心功能模塊調(diào)用關系示意13各個BTL模塊優(yōu)先級設置示意圖
具體實施例方式本發(fā)明主要是針對同一主板內(nèi)不同操作系統(tǒng)之間的MPI進程調(diào)用 hypertranpsort總線通信協(xié)議進行通信,核心功能為數(shù)據(jù)的收發(fā)。下面為主要的數(shù)據(jù)結(jié)構(gòu) 和數(shù)據(jù)收發(fā)函數(shù)的實現(xiàn)方式,以及最終的配置方式,還有網(wǎng)絡優(yōu)先級設定的實施方案。本發(fā)明專利基于Open MPI開源軟件的架構(gòu),如圖3所示,根據(jù)Open MPI模塊化的 特點,在其原架構(gòu)基礎上其中添加Hypertransport的總線通信模塊HT BTL以及調(diào)用原架 構(gòu)中相應的內(nèi)存池Mpool,使得Open MPI能夠支持Hypertransport總線通信,以達到提高 通信效率的目的。同時,通過配置HT BTL模塊優(yōu)先級,使得一個主板內(nèi)同操作系統(tǒng)內(nèi),MPI 進程間使用SM BTL或者SELF BTL通信;不同操作系統(tǒng)內(nèi),MPI進程之間通過調(diào)用HT BTL 模塊進行通信;不同主板間,通過調(diào)用已有的網(wǎng)絡模塊通信。如圖4所示,同一操作系統(tǒng)內(nèi)的進程(如Pl,P2)利用共享內(nèi)存進行通信;同一主 板不同操作系統(tǒng)中的進程(如Pl,P3)利用hypertransport總線協(xié)議進行通信;不同操作 系統(tǒng)上的進程(如Pl,P5)利用外部互聯(lián)網(wǎng)絡(圖中為以太網(wǎng)和Infiniband高速互聯(lián)網(wǎng) 絡)進行通信。( 一 ) Hypertransport 通信模塊結(jié)構(gòu)基于板內(nèi)的系統(tǒng)之間可以共享 物理內(nèi)存的機制,Hypertransport總線的互聯(lián)結(jié) 構(gòu)可以提供一種共享buffer的通信方式,即對每一個系統(tǒng)都分配出一塊物理空間,為各個 系統(tǒng)共享,這樣系統(tǒng)間的通信就可以通過直接讀、寫遠程主機的共享buffer來實現(xiàn)系統(tǒng)間 的通信。在此基礎上,建立地址映射表,可以將一個主板上的其他系統(tǒng)的內(nèi)存映射到本地,本地應用程序通過調(diào)用映射地址,實現(xiàn)與相同主板上的操作系統(tǒng)之間使用hypertransport 進行通信的功能。通過實現(xiàn)一層薄的hypertansport總線通信協(xié)議,提供收發(fā)數(shù)據(jù)的系統(tǒng)調(diào)用接 口,直接供Open MPI中的HT BTL模塊調(diào)用,實現(xiàn)Open MPI開源架構(gòu)與Hypertransport 通信的對接。目前已經(jīng)有很多關于hypertransport總線協(xié)議的研究,本專利不討論關于 hypertransport總線通信協(xié)議的方法。本專利使用的hypertranport總線通信協(xié)議提供的兩個收發(fā)消息系統(tǒng)調(diào)用接口 有以下幾個參數(shù)(1)傳遞消息的首地址
(2)變量數(shù)據(jù)類型(3)變量的數(shù)量(4)主板內(nèi)操作系統(tǒng)的編號(發(fā)送接口這里為消息目的系統(tǒng)編號,接收端為消息 源的系統(tǒng)編號)(5)表示消息的標識tag通過這兩個系統(tǒng)調(diào)用即可實現(xiàn)調(diào)用hypertransport總線進行數(shù)據(jù)收發(fā)。(二)HT BTL 模塊設計本發(fā)明所述方法實現(xiàn)Open MPI開源框架對HT通信協(xié)議的支持。因為 Hypertransport可以將遠端操作系統(tǒng)的地址映射到本地,通過調(diào)用映射地址即可實現(xiàn)讀寫 對方的內(nèi)存。因此,可以參考SM BTL模塊實現(xiàn)內(nèi)存池和注冊緩存管理,以及與BML層的接 口配置。這部分可以查閱相關文檔和Open MPI源碼。1、HT BTL模塊的主要功能BTL 是指 Byte Transfer Layer,即字節(jié)傳輸層。Open MPI framework對于各種網(wǎng)絡協(xié)議的支持,都是通過BTL模塊進行封裝的。 主要實現(xiàn)的功能(1)提供所調(diào)用底層互聯(lián)網(wǎng)絡通信協(xié)議的抽象,例如infiniband高速互聯(lián)網(wǎng)絡, Myrinet, Portals, Ethernet ;對于共享內(nèi)存il/f言禾口進禾呈內(nèi)的回環(huán)(process loopback)通 信也是通過BTL模塊進行封裝的;(2)對活動消息提供基于接口的標簽支持;(3)為RDMA操作提供內(nèi)存注冊支持;(4)支持RDMA讀寫操作;(5)提供消息傳遞完成的返回函數(shù)。本發(fā)明主要提供前面1,2,5三種功能的支持,暫不提供專門的RDMA操作接口。2、HTBTL各功能模塊如圖5所示,整個HT BTL中有四個模塊核心功能模塊,消息類型模塊,對等端模 塊,配置文件模塊。SM BTL當中一共有五個功能模塊,除了這四個模塊以外,還有一個先入 先出隊列模塊。SM BTL通過先入先出隊列的插入和刪除操作完成數(shù)據(jù)收發(fā),而本發(fā)明通過 hypertransport總線通信協(xié)議提供的系統(tǒng)調(diào)用完成數(shù)據(jù)收發(fā),因此刪除這一模塊。進而修 改其他模塊中隊列的相關函數(shù)。如圖6所示,為三個功能模塊的調(diào)用關系示意圖,其中消息類型模塊中定義兩種消息類型供核心功能模塊調(diào)用;對等端模塊當中定義對BTL對等端的描述信息,核心功能 模塊在建立對等端連接時調(diào)用這一模塊;核心功能模塊完成BTL的初始化,數(shù)據(jù)收發(fā)等功 能。配置文件模塊的作用如圖7所示,將HT BTL的其他三個模塊整合到Open MPI的 Framework 當中。HT BTL模塊的四個模塊功能如下(1)消息類型模塊這個模塊主要定義MPI的消息類型,以及實現(xiàn)對MPI各種消息的構(gòu)造。此模塊中 定義的消息供核心功能模塊調(diào)用。主要包括兩個文件,一個頭文件當中定義各種HT BTL的消息類型和函數(shù)接口,另 一 個實現(xiàn)文件中實現(xiàn)各種消息操作函數(shù)。消息類型定義兩種消息,小消息和大消息,兩種消息的大小在核心功能模塊的基 本消息結(jié)構(gòu)體當中設定。定義三種消息創(chuàng)建方法1)通用消息創(chuàng)建當中實現(xiàn)消息基本信息的構(gòu)造,包括消息大小,消息地址,消息所屬進程。2)小消息創(chuàng)建設定消息類型為小消息。3)大消息創(chuàng)建設定消息類型為大消息。構(gòu)造小消息需要調(diào)用小消息和通用消息創(chuàng)建方法。構(gòu)造大消息時需要調(diào)用大消息 和通用消息創(chuàng)建方法。其他網(wǎng)絡模塊的BTL還需要定義RDMA消息類型,因為本發(fā)明不實現(xiàn)RDMA的功能, 因此不需要實現(xiàn)RDMA消息的創(chuàng)建。(2)對等端模塊這個模塊當中主要定義了一個結(jié)構(gòu)體,用來描述進程間通信建立連接時,對等端 連接的基本描述信息。對等端連接的建立和釋放在核心功能模塊當中完成。對等端的基本信息同一主板內(nèi)操作系統(tǒng)的標識信息,發(fā)送端的MPI進程號,接收 端的MPI進程號。(3)核心功能模塊在這個模塊中,主要定義BTL通用的數(shù)據(jù)結(jié)構(gòu)和接口函數(shù),以及根據(jù) hypertransport通信協(xié)議的特點進行的重載。主要完成以下幾個功能描述HT BTL基本 信息,HT BTL組件打開和資源釋放,建立和釋放對等端,分配和釋放消息描述符,消息的發(fā) 送和接收。1)描述HT BTL的基本信息定義一個HT BTL組件信息描述結(jié)構(gòu)體,這個結(jié)構(gòu)體當中定義了 HT BTL模塊當中 用到的所有重要的變量信息。2) HT BTL 的初始化在系統(tǒng)中啟動Open MPI時,會對所有的可用的BTL進行初始化。因此,在這個過程中,需要完成HT BTL的初始化。這一過程在整個Open MPI的啟動過程中的調(diào)用關系如 圖8所示。HT BTL本身的初始化需要對HT BTL基本信息進行賦值。此外,還需完成以下功能創(chuàng)建并初始化內(nèi)存池,分配HT BTL內(nèi)存空間,并得到首 地址指針。初始化內(nèi)存池操作使用Open MPI提供的通用接口,與其他BTL類似。初始化內(nèi) 存池的操作不屬于本發(fā)明研究內(nèi)容。3) HT BTL組件打開,和資源釋放當調(diào)用HT BTL進行通信時,需要實例化一個HT BTL組件并通過組件打開注冊其 相關參數(shù)。HT BTL資源釋放與組件打開對應,調(diào)用HT BTL組件結(jié)束后,釋放所有的資源。 在后面介紹的建立HT BTL對等端時,首先需要實例化HT BTL組件,并將HT BTL組件打開, 注冊相關參數(shù)。釋放對等端時,釋放HT BTL占用的資源,并銷毀實例化的BTL組件。
4)建立和釋放對等端這一功能需要調(diào)用對等端模塊完成。在調(diào)用Hypertransport協(xié)議進行通信時,首先建立對等端連接,對等端連接建立 完成以后,進行數(shù)據(jù)收發(fā),消息發(fā)送完成以后,釋放對等端資源。在此過程中需要將MPI進 程與HT BTL的對等端進行關聯(lián),具體過程如下如圖9所示,通過在PML層加入特定的數(shù)據(jù)形成具有PML信息的進程結(jié)構(gòu),通過對 應的組件,在將BML層對應的組件信息添加進來,最后將BTL層對應網(wǎng)絡組件的信息添加進 來,當進程位于同一主板的不同操作系統(tǒng)上時,調(diào)用HT BTL核心功能模塊中的建立對等端 函數(shù),建立連接。建立對等端與消息發(fā)送的關系后面會做介紹。建立和釋放對等端時,相應的需要實例化和銷毀HT BTL組件,這一點前面已經(jīng)介 紹過,不再贅述。5)分配和釋放消息描述符在HT BTL的消息發(fā)送和接收時需要分配和釋放消息描述符,描述需要發(fā)送的MPI 消息。消息描述符的定義為Open MPI中通用的消息描述符。6)消息發(fā)送和消息接收需要分別介紹HT BTL消息發(fā)送在整個Open MPI中與其他層次發(fā)送函數(shù)的關系, 以及HT BTL消息發(fā)送本身的實現(xiàn)機制。①HT BTL的消息發(fā)送在整個Open MPI中與其他層發(fā)送函數(shù)的關系MPI的消息發(fā)送,需要層層調(diào)用MPI,PML, BML, HT BTL層的發(fā)送函數(shù),完成數(shù)據(jù)發(fā) 送。如圖10所示,為調(diào)用MPI_Send點對點通信時的消息發(fā)送流程,可以看出,HT BTL中的 消息發(fā)送在整個MPI消息發(fā)送中的調(diào)用關系。消息發(fā)送的詳細流程如下a)MPI層確認所有參數(shù)有效,然后調(diào)用PML層的發(fā)送函數(shù);b)從PML空余隊列中分配一個發(fā)送請求,初始化發(fā)送請求,確定消息類型,調(diào)用 BML發(fā)送函數(shù);c)發(fā)送開始時,一個BML的對等端調(diào)用相應的數(shù)據(jù)結(jié)構(gòu)鏈表,這個鏈表綁定了 HT BTL對等端;
d)HT BTL分配消息描述符,調(diào)用系統(tǒng)將數(shù)據(jù)寫入對方內(nèi)存中。發(fā)送方完成數(shù)據(jù)發(fā)送以后,接收方依次調(diào)用MPI,PML, BML, HT BTL層的接收函數(shù) 完成數(shù)據(jù)接收,并在完成接收以后調(diào)用相應的資源釋放函數(shù),釋放之前分配的系統(tǒng)資源。②HT BTL中消息發(fā)送的實現(xiàn) 調(diào)用hypertransport總線通信協(xié)議提供的數(shù)據(jù)發(fā)送的系統(tǒng)調(diào)用接口,將數(shù)據(jù)發(fā)
送出去ο因為這兩個系統(tǒng)調(diào)用當中所使用的tag與MPI消息的tag概念是不同的,二者之 間也沒有映射關系。因此,在發(fā)送進程消息發(fā)送完成后,接收進程在另一個操作系統(tǒng)當中并 不知道相應的系統(tǒng)調(diào)用中的tag編號。本發(fā)明中采用散列的辦法將MPI的進程中的tag映 射為HT系統(tǒng)調(diào)用的tag,這樣發(fā)送端和接收端可以通過映射關系使用相同的MPI tag,實現(xiàn) 傳遞消息的功能。如圖11所示,表示HT BTL與HT通信協(xié)議以及相關映射表之間的調(diào)用關系。同理,HT BTL消息接收通過調(diào)用hypertransport提供的系統(tǒng)調(diào)用接口,通過類似 的方式完成數(shù)據(jù)接收。7)核心功能模塊中,各個小的功能模塊之間的關系如圖12所示,HT BTL初始化所有需要用到的基本信息。初始化完成以后,HT BTL 其他的功能才可以使用,即Hypertransport支持MPI通信。(4)配置文件模塊在Open MPI中,每一個BTL模塊對應的目錄下都有三個重要的配置文件 configure, params,Makefile, in, Makefile, am。因此,HT BTL 也需要定義這三個文件將 HTBTL加載到Open MPI的Framework當中。主要功能是完成HT BTL下相關文件的路徑配 置,以及HT BTL模塊編譯方式的選擇,即是采用靜態(tài)庫還是動態(tài)庫。(三)進程間通信網(wǎng)絡選擇方法配置本發(fā)明需要實現(xiàn)在主板內(nèi)的各個操作系統(tǒng)之間,MPI進程之間的通過 Hypertransport總線通信,而主板間的MPI進程之間通信通過千兆以太網(wǎng)或者infiniband 高速互聯(lián)網(wǎng)絡通信。OpenMPI定義了 BTL模塊的三類調(diào)用優(yōu)先級。其中本地通信(目前為SELF和SM 兩種)為最高級high,tcp優(yōu)先級為最低級low,其他的IB和GM為中間級default。由于 本發(fā)明中,是利用遠端Hypertransport總線映射到本地的地址通信,類似于共享內(nèi)存的進 程通信,因此這里把HT BTL模塊的優(yōu)先級設置為high。這樣優(yōu)先級為high的BTL模塊一 共有三個SELF BTL, SM BTL,HT BTL0在這三個BTL模塊中,再設置二級優(yōu)先級,來區(qū)分它 們之間的調(diào)用優(yōu)先級關系SELF BTL大于SM BTL, SM BTL大于HT BTL0如果想讓主板間的進程同時調(diào)用Open IB BTL和TCP BTL進行通信,只需把tcp 的優(yōu)先級也改為default即可。配置之后,各個模塊的優(yōu)先級如圖13所示,從上到下優(yōu)先級依次降低。(四)主要數(shù)據(jù)結(jié)構(gòu)實現(xiàn)1. HT BTL基本消息結(jié)構(gòu)體這個結(jié)構(gòu)體當中定義了 HT BTL模塊當中用到的所有重要的變量信息。包括繼承 BTL基類的component實例化;消息鏈表的初始化長度;空閑鏈表的最大值;增加消息鏈表長度時,每次增加的單位值;內(nèi)存池的名稱;共享內(nèi)存池的指針;遠端內(nèi)存映射到本地的地 址;HT的消息隊列;等待資源的消息隊列;同一主板內(nèi)本操作系統(tǒng)的標識信息;HT BTL小消 息大?。籋T BTL大消息大小。具體定義如下struct mca_btl_ht_component_t{mca_btl_base_component_2_0_0_t super ;int ht_free_list_num ;int ht_free_li st_max ;int ht_free_list_inc ; char*ht_mpool_name ;mca_mpool_base_module_t*ht_mpools ;void*ht_mpool_remote_base ;ompi_free_list_t ht_frags_eager ;ompi_free_list_t ht_frags_max ;size_t eager_limit ;size_t max_frag_size ;int system_ID ;}2.對等端對等端連接結(jié)構(gòu)體中主要定義的變量信息,同一主板內(nèi)操作系統(tǒng)的標識信息,發(fā) 送端的MPI進程號,接收端的MPI進程號。struct mca_btl_base_endpoint_t{int my_mpi_rank ;int peer_SMp_rank ;int system_ID ;};(五)數(shù)據(jù)收發(fā)函數(shù)實現(xiàn)1.消息發(fā)送函數(shù)首先調(diào)用散列函數(shù),利用MPI消息的標簽tag生成為hypertranport系統(tǒng) 調(diào)用發(fā)送函數(shù)中的參數(shù)tag,接著初始化系統(tǒng)調(diào)用發(fā)送函數(shù)的各個參數(shù),最后調(diào)用 hypertransport系統(tǒng)調(diào)用發(fā)送函數(shù)完成數(shù)據(jù)發(fā)送。2.消息接收函數(shù)同理,接收函數(shù)通過同樣的方式調(diào)用hypertransport系統(tǒng)調(diào)用接收函數(shù)完成數(shù) 據(jù)接收。本發(fā)明中使用的兩個系統(tǒng)調(diào)用函數(shù)具體接口形式為aSMlinkage u32HT_Send(void*buf,u32count,HT—Datatype datatype,u32 dest, u32 tag);aSMlinkage u32HT_Recv(void*buf, u32count, HT_Datatype datatype, u32 source,u32 tag);(六)優(yōu)先級設置
在HT BTL組件的打開函數(shù)中,將優(yōu)先級設置比SM BTL小1,具體形式mca_btl_ht. super. btl_exclusivity = MCA_BTL_EXCLUSIVITY_HIGH_2SELF BTL 和SM BTL的優(yōu)先級不變,即mca_btl_Self. btl_exclusivity = MCA_BTL_EXCLUSIVITY_HIGHmca_btl_Sm. super. btl_exclusivity = MCA_BTL_EXCLUSIVITY_HIGH-1 ;IB BTL 和TCP BTL的默認仍然為mca_btl_openib_module. super. btl_exclusivity = MCA_BTL_EXCLUSIVITY_ DEFAULT ;mca_btl_tcp_module. super. btl_exclusivity = MCA_BTL_EXCLUSIVITY_ LOW+100 ;
(七)配置文件的設定配置文件的作用是把HT BTL模塊整合到Open MPI的Framework當中。其中 Makefile, in 文^f牛由 automake 自動生成。configure, params 與所有 BTL 白勺 configure, params相同,Makefile, am文件的的重要配置如下1.路徑配置libmca_btl_ht_la_sources = \btl_ht. c\btl_ht. h\btl_ht_component. c\btl_ht_endpoint. c\btl_ht_endpoint. h\btl_ht_frag. c\btl_ht_frag. h\2.對HT模塊編譯方式的選擇,是采用靜態(tài)庫還是動態(tài)庫。if 0MPI_BUILD_btl_ht_DS0component_noinst =component_instal1 = mca_btl_ht. Iaelsecomponent_noinst = libmca_btl_ht. Iacomponent_instal1 =endif
權(quán)利要求
一種消息傳遞接口支持總線通信框架,包括Open MPI開源軟件的基本框架中的字節(jié)傳輸層BTL、字節(jié)傳輸管理層BML、點對點消息層PML、MPI應用程序接口MPI API、內(nèi)存池Mpool、及注冊緩存Rcache,其特征在于該框架還包括在上述框架的基礎上,添加HT的總線通信模塊HT BTL,并調(diào)用Open MPI架構(gòu)中相應的內(nèi)存池Mpool;通過配置HT BTL模塊優(yōu)先級,使得一個主板的相同或不同操作系統(tǒng)內(nèi),及不同主板間能夠進行通信。
2.根據(jù)權(quán)利要求1所述的消息傳遞接口支持總線通信協(xié)議,其特征在于所述HTBTL 模塊包括核心功能模塊,消息類型模塊,對等端模塊,配置文件模塊;其中所述核心功能模塊,其功能包括描述HT BTL基本信息,初始化HT BTL模塊,HT BTL 組件打開和資源釋放,建立和釋放對等端,分配和釋放消息描述符,消息的發(fā)送和接收;所述消息類型模塊,其功能包括定義MPI的消息類型,以及實現(xiàn)對MPI各種消息的構(gòu) 造,定義的消息供核心功能模塊調(diào)用;所述對等端模塊,其功能包括描述進程間通信建立連接時,對等端連接的基本描述信 息,對等端連接的建立和釋放在核心功能模塊當中完成;所述配置文件模塊,其功能包括完成HT BTL下相關文件的路徑配置,以及HT BTL模 塊編譯方式的選擇;所述消息類型模塊中定義兩種消息類型供核心功能模塊調(diào)用;對等端模塊當中定義對 BTL對等端的描述信息,核心功能模塊在建立對等端連接時調(diào)用這一模塊;核心功能模塊 完成BTL的初始化,數(shù)據(jù)收發(fā)等功能;配置文件模塊將HT BTL的其他三個模塊整合到Open MPI的框架當中。
3.根據(jù)權(quán)利要求2所述的消息傳遞接口支持總線通信協(xié)議,其特征在于所述的HTBTL 模塊的初始化過程為(1)MPIAPI調(diào)用MPI初始化函數(shù);(2)PML層選中組件0B1并調(diào)用BML的初始化函數(shù);(3)BML層通過r2組件初始化所有的BTL;(4)調(diào)用HTBTL的組件初始化函數(shù),并將其加入可用的BTL模塊鏈表。
4.根據(jù)權(quán)利要求2所述的消息傳遞接口支持總線通信協(xié)議,其特征在于所述的HTBTL 模塊的對等端連接過程為(1)PML層為每個MPI進行關聯(lián)一個BTL組件;(2)BML層添加可用的BTL組件鏈表,并根據(jù)優(yōu)先級對網(wǎng)絡組件進行排序;(3)為同一主板不同操作系統(tǒng)上的MPI進程提供HTBTL組件信息,并調(diào)用建立對等端 的函數(shù)建立HT連接。
5.根據(jù)權(quán)利要求2所述的消息傳遞接口支持總線通信協(xié)議,其特征在于所述的HTBTL 模塊的消息發(fā)送與接收過程為(1)調(diào)用MPI的消息發(fā)送函數(shù);(2)PML層分配發(fā)送請求,根據(jù)消息大小選擇不同的傳輸函數(shù),調(diào)用BML層發(fā)送函數(shù);(3)BML層的發(fā)送函數(shù)綁定HTBTL對等端,調(diào)用BTL發(fā)送函數(shù);(4)HTBTL發(fā)送函數(shù)為發(fā)送消息分配描述符,調(diào)用HT系統(tǒng)調(diào)用發(fā)送函數(shù),將消息發(fā)送 到對方主機的內(nèi)存中;(5)發(fā)送方完成數(shù)據(jù)發(fā)送后,接收方依次調(diào)用MPI,PML,BML,HTBTL層的接收函數(shù)完成數(shù)據(jù)接收,并在完成接收以后調(diào)用相應的資源釋放函數(shù),釋放之前分配的系統(tǒng)資源。
6.根據(jù)權(quán)利要求1所述的消息傳遞接口支持總線通信協(xié)議,其特征在于在主板內(nèi)的 各個操作系統(tǒng)之間,MPI進程之間的通過HT總線通信,而主板間的MPI進程之間通信通過 千兆以太網(wǎng)或者infiniband高速互聯(lián)網(wǎng)絡通信。
7.根據(jù)權(quán)利要求1所述的消息傳遞接口支持總線通信協(xié)議,其特征在于0penMPI定 義了 BTL模塊的三類調(diào)用優(yōu)先級,HT BTL模塊的優(yōu)先級設置為high。
全文摘要
本發(fā)明一種消息傳遞接口支持總線通信框架,包括Open MPI開源軟件的基本框架中的字節(jié)傳輸層BTL、字節(jié)傳輸管理層BML、點對點消息層PML、MPI應用程序接口MPI API、內(nèi)存池Mpool、及注冊緩存Rcache,該框架還包括在上述框架的基礎上,添加HT的總線通信模塊HT BTL,并調(diào)用Open MPI架構(gòu)中相應的內(nèi)存池Mpool;通過配置HT BTL模塊優(yōu)先級,使得一個主板的相同或不同操作系統(tǒng)內(nèi),及不同主板間能夠進行通信。它主要根據(jù)Open MPI開源軟件提供的標準接口,結(jié)合Hypertransport總線通信協(xié)議提供的系統(tǒng)調(diào)用接口,將Hypertransport總線的通信協(xié)議整合到Open MPI架構(gòu)中。同時,在MPI進程通信的過程中,使用Hypertransport總線通信協(xié)議要比其他網(wǎng)絡的優(yōu)先級高。本發(fā)明在現(xiàn)有的成熟技術(shù)基礎上進行創(chuàng)新,實施簡便,具有良好的使用和發(fā)展前景。
文檔編號G06F13/38GK101866326SQ201010189240
公開日2010年10月20日 申請日期2010年5月24日 優(yōu)先權(quán)日2010年5月24日
發(fā)明者李勇男, 王歡, 田力, 肖利民, 胡耀輝, 阮利 申請人:北京航空航天大學