?

基于OpenMP 的多機集群并行計算系統架構設計

2022-03-02 12:42李曉琳高獻偉韓妍妍
北京電子科技學院學報 2022年4期
關鍵詞:報文服務中心客戶端

李曉琳 高獻偉 韓妍妍

北京電子科技學院,北京市 100070

引言

進入21 世紀以來,物聯網、大數據等信息技術得到迅猛發展,引發重大的技術革新。 同時,信息資源等也變得十分復雜,導致信息化系統不斷變得龐大、復雜,隨之而來的是海量、巨大的信息量和計算量。 截至當前,數據量已經從TB 躍升到PB、EB 甚至ZB 的級別,數據的爆炸式增長以及其蘊含的巨大價值將對企業未來的發展產生深遠的影響,在此背景下,系統對數據的處理規模越來越大,傳統的軟件計算已經無法滿足如此龐大數據處理規模,如何對數據進行快速、高效的處理是未來信息技術發展道路上關注的重點。

隨著現代科技和經濟的發展,基于多核處理器的高性能計算機出現在許多大型工程、科學實驗的研究中,通過網絡將大量的服務器連接起來,具有超強的計算能力,能夠滿足大量計算的需求。 雖然如此,傳統的單機串行軟件編程方式無法充分利用多核處理器資源,計算機的性能無法得到充分地利用。 應用程序要想充分發揮多核處理器的性能,必須采用并行計算的方式,提高軟件系統的運行效率[1]。

近幾年來,國外許多高校和科研機構對并行算法進行設計、分析和實現,并在并行優化編譯、高性能I/O、通信技術等方面開展研究。 國內一些高校和研究院投入了一些力量開展并行計算軟件應用理論和方法的研究,并取得了一定的成果,到目前為止,并行計算技術已經廣泛地應用于計算數學、數字模擬、機械制造等領域。

本文基于《天地一體化網絡密碼按需服務關鍵技術及系統》,它是《天地一體化網絡信息安全保障技術的研究》中的一個子課題,它對天地一體化信息網絡中密碼資源跨域管理、海量密碼數據存儲等關鍵技術進行研究[2]。 由于天地一體化網絡具有復雜、多樣、異構的特點,并包含多種多樣的密碼設備和資源,因此產生了海量的數據,如何高效地處理海量的數據成為天地一體化信息網絡建設中研究的關鍵課題之一。

本文根據天地一體化跨域分層密碼按需服務的總體技術要求,基于OpenMP 技術開展多核并行程序設計方法的研究,并在此基礎上設計了一種多機集群并行計算系統,旨在充分利用計算機性能,提高數據處理和計算的效率,解決天地一體化信息網絡對海量數據處理的需求。

1 關鍵技術研究

1.1 并行計算技術研究現狀

目前主流的并行計算技術主要有OpenMP、MPI(信息傳遞接口)和Spark(計算引擎)技術,針對這幾種技術進行了調研分析對比。

(1)OpenMP

OpenMP 是一種基于共享內存多處理器體系結構的多線程并行編程模型,也是在共享存儲下編寫并行程序的一組API。 OpenMP 的規范由SGI 提出,獲得了微軟、Sun、Intel、IBM、HP 等軟硬件行業巨頭的認可和支持,目前支持的語言是C/C++和Fortran。

OpenMP1.0 標準誕生于1997 年。 2005 年,OpenMP 的結構審議會(Architecture Review Board,ARB),推出了OpenMP2.5 標準。 2008年,OpenMP3.0 標準被退出,但目前使用最廣泛的還是2.5 標準。

OpenMP 中,CPU 中的多個處理單元(核)共享同一個內存設備,所有的CPU 處理單元訪問相同的內存空間地址,這些處理單元通過共享的內存變量進行通信。 OpenMP 編程方式十分方便,現已成為一個工業標準,支持多種平臺,包括大多數的類UNIX 系統和幾乎所有的Windows NT 系統等。 OpenMP 具有開發簡單、抽象度高、通用性好、可擴充性和可移植性強、支持并行的增量開發和數據并行等優點,廣泛應用于多核PC 環境下的并行程序設計。

(2)MPI

MPI 是一個庫,一種標準或規范的代表,一種消息傳遞編程模型。 MPI 是目前分布式內存體系結構中開發高性能計算應用的標準。 它支持C,C++和Fortran 語言。 它采用將同一程序運行在眾多進程上的方式,這些進程不僅可以處于同一個共享內存架構的計算機中,也可以運行在眾多進程上的方式來實現。 每個進程都擁有各自的數據,在不需要通訊時,各個進程異步地運行相同的代碼,對不同的數據進行相似的處理,在需要訪問其他進程上的數據時,通過MPI 標準中定義的數據通訊函數對數據進行遷移和處理,也可以對操作進行同步[3]。

MPI 是利用集群實現多節點并行計算,通過劃分任務進程,達到數據并行處理的目的。 MPI是在網格計算中使用的較為傳統并行方法,主要應用在對于通訊效率要求低,通訊數據的數量較小,利用MPI 來進行集群并行計算。 相比于MPI 來說,OpenMP 是運行在進程上的并行處理模式,它將一個進程劃分為多個線程并實現線程同步執行,實現可視化的并行處理。

MPI 提供了可移植性、標準化包括點對點消息傳遞和集體的操作,所有的范圍用戶指定的組的過程。 MPI 提供了一個實體集編寫、調試、測試和性能分步程序庫。 MPI 庫通常用于并行編程中集群系統,因為它是一個消息傳遞編程語言。

(3)Spark

美國加州大學伯克利分校AMP 實驗室研發了Spark。 Spark 的性能可以超過Hadoop10 倍以上。 Spark 是基于Hadoop 的,并且構建在HDFS之上,同時保留了MapReduce 的可擴展性和容錯性,但是,Spark MapReduce 不完全等同于Hadoop MapReduce。 Spark 主要由兩部分組成:第一部分是有很多執行器的調度器,它可以進行任務調度、任務監控以及故障處理。 第二部分是執行器,執行實際的計算和數據處理任務[4]。

Hadoop MapReduce 是一種大規模數據處理的并行計算模型。 Hadoop 是一個Master--Slave架構模式,由一臺主節點和若干臺Slave 節點組成。 其中主節點負責管理和監控各個Slave 節點的任務執行情況,包含一個Master 服務Job-Tracker(作業服務器)用于接收Job,它的任務是將作業分配給等待的節點。 Slave 節點負責具體的任務執行,包含一個Slave 服務TaskTrack(任務服務器),它負責與JaoTracker 通信并接收作業,再根據每個節點的拆分數據,進行Map 和Reduce。 每個Slave 節點是并行執行,提高了計算效率。 簡單而言可以將MapReduce 編程模型抽象成“Map(映射)”和“Reduce(化簡)”兩個過程,Hadoop MapReduce 計算模式的流程圖見圖1[5-6]。

圖1 Hadoop MapReduce 計算模式的流程圖

具體過程為:程序從分布式文件系統讀入大數據集,并切分為Split(分片),Map 函數處理Split 并輸出中間結果,通過Shuffle 把中間結果分區排序整理后發送給Reduce 函數,Reduce 完成具體計算任務并將最終結果寫入文件系統。

1.2 技術可行性分析

OpenMP 集成在C++中,與系統適配性好,開發簡單,對軟件系統改造十分方便,可移植性強,但是OpenMP 只支持單機并行計算,而且通過線程實現通信,多線程間資源共享;MPI 支持多機并行計算,通過進程實現并行計算,具備資源隔離特點;但是通訊效率要求低,通迅數據量較小;Spark 支持多機并行計算,可抗展性和容錯能力強,但是計算性能有待提高。

通過綜合分析,OpenMP、MPI、Spark 都能夠實現并行計算,但是均不滿足海量數據的處理和計算的需求。 在天地一體化網絡中,網絡之間的數據通信量在百兆以上,而且數據的種類多,MPI 和Spark 技術均無法實現,因此,在單機OpenMP 并行計算的基礎上開展多機集群并行計算架構設計,既能夠滿足大數據通信,又能夠保證計算性能。

2 平臺架構設計

2.1 總體架構設計

并行集群計算系統可部署在普通計算機或服務器上,支持在多種架構CPU、多種操作系統上運行,并行計算系統由并行計算服務中心、計算節點和客戶端模塊組成[7-8]。 本文中,在傳統單機OpenMP 并行計算的基礎上,擴展了多個計算節點,通過統一的計算服務中心控制,開展多機集群計算。 并行計算系統中只有一個計算服務中心,可以有多個計算節點,每個計算節點中包含計算程序,負責具體的計算任務,在計算程序中增加OpenMP 指令設置,運行中支持多核多線程并行計算。 計算服務中心負責接收客戶端發起的計算請求,通過監控各計算節點的工作狀態向計算節點分配計算任務,各節點完成計算任務后,將計算結果發送到計算服務中心,所有的計算結果數據整理后,發送給客戶端。 客戶端、并行計算服務中心、計算節點間采用TCP 和UDP 通信。 并行計算系統總體架構見圖2。

圖2 并行計算系統總體架構圖

計算服務中心可以為多個計算用戶服務,計算用戶通過配置集群服務地址獲取計算服務心跳報文,從中得到TCP 通信網址和端口號,使用TCP 通信方式加入計算服務中心,通過已經建立的TCP 通信鏈路向并行計算服務中心發送計算請求報文,計算服務中心完成計算后,通過TCP 通信鏈路向計算用戶發送計算結果報文。計算服務中心可以控制多個計算節點進行計算,每個計算節點以UDP 組播的方式向指定組播地址發送計算節點狀態報文,計算服務中心通過該報文掌握各個計算節點的工作狀態,同時計算節點與計算服務中心建立TCP 通信鏈路,計算服務中心通過該TCP 通信鏈路向計算節點發送計算命令報文,計算節點接收到計算命令報文后,開始進行計算,完成計算后,通過TCP 通信鏈路向計算服務中心發送計算結果報文。

2.2 計算服務中心設計

計算服務中心由計算服務分配處理模塊、顯示控制模塊、計算服務狀態發布模塊、計算節點狀態監控模塊、計算用戶通信服務、計算節點通信服務6 部分組成。 計算服務中心組成關系如圖3 所示。

圖3 計算服務中心組成關系圖

計算服務分配處理模塊實現計算服務計算量評估、計算服務管理、計算節點計算結果管理、計享節點異常監控及處理等功能。 計算服務分配處理模塊接收到計算用戶的請求后,進行計算服務計算量評估,再根據當前計算節點狀態,向計算節點發送計算命令,等待收集到完整的計算節點數據后,整理計算結果,通過計算用戶通信服務將計算結果發送給計算用戶。

顯示控制模塊實現并行計算服務中心啟動/停上控制、實時顯示計算節點工作狀態,實時顯示計算服務狀態等功能。

計算服務狀態發布模塊實現計算服務通信參數發布、計算節點通信參數發布等功能。

計算節點狀態監控模塊實現UDP 組播通信初始化、計算節點狀態監控處理等功能。

計算用戶通信服務實現TCP 通信初化、TCP通信服務管理、TCP 數據接收處理、TCP 數據發送處理等功能。

計算節點通信服務實現TCP 通信初始化、TCP 通信服務管理、TCP 數據接收處理、TCP 數據發送處理等功能。

2.3 計算節點設計

計算節點有計算節點通信參數處理模塊、通信處理模塊、計算處理模塊、顯示控制模塊、計算節點狀態處理模塊5 部分組成。 計算節點組成關系圖見圖4。

圖4 計算節點組成關系圖

計算節點通信參數處理模塊在程序初始化的時候,加入指定UDP 組播地址,接收計算服務中心心跳報文,獲取計算節點TCP 通信參數供通信處理模塊使用。

通信處理模塊根據結算節點通信參數處理模塊提供的TCP 通信參數初始化TCP 通信鏈路,在整個程序運行過程中,負責TCP 通信數據接收、數據發送的處理。

計算處理模塊實現計算機多核狀態監控、單機并行計算處理等功能。

顯示控制模塊實現計算機多核狀態監控顯示、計算狀態顯示等功能。

計算節點狀態處理模塊實現計算節點狀態UDP 組播發送功能。

2.4 客戶端模塊設計

客戶端模塊由計算服務通信參數處理模塊、通信處理模塊、計算服務處理模塊組成。 客戶端模塊組成關系圖見圖5。

圖5 客戶端模塊組成關系圖

計算服務通信參數處理模塊在程序初始化的時候,加入指定UDP 組播地址,接收計算服務心跳報文,獲取計算用戶的TCP 通信參數供通信處理模塊使用。

通信處理模塊根據計算服務通信參數處理模塊提供的TCP 通信參數初始化TCP 通信鏈路,在整個程序運行過程中,負責TCP 通信數據接收、數據發送的處理。

計算服務模塊為應用程序提供計算輸入、輸出接口。

3 系統驗證

(1)測試環境

本文中使用單臺高性能計算機進行測試,計算機性能指標如下:

CPU:Inter Xeon E5-2640 @2.4GHz(雙處理器40 核)

內存:64G

操作系統:Windows7 64 位

(2)測試方法

編寫測試程序對10000 個隨機整數進行冒泡排序,分別計算1 次、2 次、4 次、8 次、24 次、40次,計算過程中分別設置1 核、2 核、4 核、8 核、24 核、40 核并行計算,每組測試進行3 次,取運行結果的平均值。

(3)測試結果

測試結果如表1 所示。

表1 單機計算時間測試結果

由測試數據可以看出,通過應用并行計算技術,用40 核同時對測試程序計算40 次,平均用時2.859s,相比于非并行的49.26:速率提高了17.23 倍。 通過使用不同核數對同一測試程序進行測試,發現隨著使用核數的增加,與提升運算效率的倍數并不是線性關系,由于存在多核并行分配處理、數據回收處理,使用核數越多,多核并行分配處理、數據回收處理占用的時間比重就越多,因此,在并行計算設計過程中,應根據具體的數據處理需求分配計算核數,以達到最優的效率。

目前OpenMP 并行計算大多使用單機運行,從理論上分析如果能夠使用多臺計算機同時進行計算,將多計算任務進行分發處理,能夠使計算效率得到進一步提升。 本次測試驗證僅使用單臺計算機進行測試,后續將針對多臺計算機進行補充研究測試。

4 結束語

本文針對天地一體化信息網絡對大數據計算處理的需求,開展多機集群并行計算架構設計,對OpenMp、MPI 和Spark 技術進行調研分析,設計了一種基于OpenMP 的多機集群并行計算系統,并通過試驗驗證對并行計算的性能進行測試,試驗表明該應用了并行計算系統,使計算速度提升了十幾倍,有效提高了數據計算和處理效率,可廣泛應用于天地一體化信息網絡中大數據的處理和計算。

猜你喜歡
報文服務中心客戶端
基于J1939 協議多包報文的時序研究及應用
隊旗在黨群服務中心飄揚
中證法律服務中心調解程序知多少
CTCS-2級報文數據管理需求分析和實現
股東大會知多少
如何看待傳統媒體新聞客戶端的“斷舍離”?
淺析反駁類報文要點
縣級臺在突發事件報道中如何應用手機客戶端
孵化垂直頻道:新聞客戶端新策略
大樞紐 云平臺 客戶端——中央人民廣播電臺的探索之路
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合