国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OMNet++的大規(guī)模InfiniBand互連網(wǎng)絡模擬系統(tǒng)*

2021-05-18 09:32:10錢德沛
計算機工程與科學 2021年5期
關鍵詞:模擬系統(tǒng)交換機高性能

汪 鑫,林 放,劉 軼,錢德沛

(北京航空航天大學計算機學院,北京 100191)

1 引言

高性能計算系統(tǒng)廣泛應用于災害預測、環(huán)境監(jiān)控、基因工程和航空航天等領域。由于此類系統(tǒng)規(guī)模龐大、結構復雜,其實際性能受到多方面因素的影響,如處理器、內存和互連網(wǎng)絡等。因此,在系統(tǒng)設計階段,通過模擬的方法對高性能計算系統(tǒng)方案進行性能評價,從而對設計進行改進,將大大節(jié)省經濟和時間開銷。

互連網(wǎng)絡是高性能計算機系統(tǒng)的重要組成部分,研發(fā)人員對并行程序運行過程中互連網(wǎng)絡狀態(tài)和性能十分關注。近年來,以InfiniBand為代表的產品化高速互連網(wǎng)絡在高性能計算系統(tǒng)中應用日益廣泛。統(tǒng)計數(shù)據(jù)[1,2]顯示,2019年11月發(fā)布的TOP500名單中,TOP100中采用InfiniBand的比例高達46%,同比2018年增長5%,其中排名前3的系統(tǒng)全部采用InfiniBand互連網(wǎng)絡。因此,對InfiniBand進行建模模擬是很有必要的。

在高性能互連網(wǎng)絡模擬方面通常的做法有數(shù)學建模法和仿真模擬法。數(shù)學建模法用參數(shù)刻畫網(wǎng)絡特征,建立網(wǎng)絡模型,模擬速度快,容易與高性能計算機模擬系統(tǒng)集成,但是誤差較大;仿真模擬方法可使用網(wǎng)絡模擬器(如OMNet++)完成,其優(yōu)點是可以較為精確地進行網(wǎng)絡建模和模擬,但模擬過程中通信模式相對固定,難以模擬程序運行過程中的網(wǎng)絡狀態(tài)和性能。提供一種模擬精度和效率較高,并且能夠模擬MPI程序運行過程中互連網(wǎng)絡狀態(tài)的網(wǎng)絡模擬器是一個需要解決的問題。

針對于此,本文設計了一種基于OMNet++網(wǎng)絡仿真框架的大規(guī)模InfiniBand互連網(wǎng)絡模擬系統(tǒng),該系統(tǒng)通過記錄的并行程序MPI消息來驅動網(wǎng)絡仿真過程,可以較為準確地模擬InfiniBand互連網(wǎng)絡在程序運行過程中的性能表現(xiàn)。系統(tǒng)支持對不同拓撲和速率的InfiniBand互連網(wǎng)絡進行模擬,并可與高性能計算機模擬系統(tǒng)集成。

2 基于OMNet++的互連網(wǎng)絡模擬 系統(tǒng)

2.1 網(wǎng)絡仿真框架OMNet++簡介

OMNet++是一個離散事件仿真框架,具備全開源、高度模塊化和模塊可定制化等優(yōu)點。OMNet++將網(wǎng)絡抽象成不同簡單模塊和復合模塊的組合,提供Ned描述語言來快速定義網(wǎng)絡拓撲,使用ini文件進行網(wǎng)絡參數(shù)初始化,使用C++語言來定義仿真主體各個網(wǎng)絡模塊的行為。

模塊之間通過門連接,通過消息通信,提供Send函數(shù)接口用于發(fā)送消息,handleMessage函數(shù)接口用于處理接收的消息。OMNet++提供CMDENV和QTENV 2種用戶仿真環(huán)境,前者以命令行方式運行,多用于批處理模擬任務;后者提供交互界面模式,可直觀地觀察仿真過程中消息的發(fā)送與接收。OMNet++框架如圖1所示。

Figure 1 Framework of OMNet++圖1 OMNet++框架圖

用戶主要通過定義網(wǎng)絡模塊的行為來實現(xiàn)網(wǎng)絡的模擬功能,比如數(shù)據(jù)包的接口轉發(fā)、擁塞控制等。在網(wǎng)絡仿真開始之前,進行模塊初始化,即進行各模塊參數(shù)的設置,同時確定模擬通信的形式,如點對點單消息通信或點對點消息集合通信,因為是事件驅動模擬,所以第1個事件的產生至關重要。仿真環(huán)境內部維護1個事件隊列,模塊間通信時,每進行一次Send都會向事件隊列中添加事件,并且切換當前仿真上下文(執(zhí)行操作的模塊),而并非直接到達目的模塊。然后依次從事件隊列中取出事件,若事件的所有者和當前上下文一致,則執(zhí)行事件;若隊列為空,則模擬過程結束。

2.2 設計思路

現(xiàn)有OMNet++支持的工作方式,每次模擬都是對某次通信或者某種特定場景下消息序列通信的模擬,即仿真任務都是由配置文件提前配置好的。而要模擬并行程序運行過程中的互連網(wǎng)絡狀態(tài),要求系統(tǒng)能以并行程序運行過程中的消息傳輸作為模擬輸入,這在現(xiàn)有框架下難以實現(xiàn),需要對系統(tǒng)進行擴展,使其能夠在模擬過程中接收并行程序MPI消息,并以此驅動互連網(wǎng)絡的模擬。

一種簡單的設計是,每一次新的通信都更新一次配置文件,然后通過命令行方式(CMDENV)啟動一次全新的網(wǎng)絡模擬,這樣也能實現(xiàn)對實時MPI消息的接收并進行一次模擬。但是,這種設計有一個嚴重的問題,由于還是由配置文件確定的通信過程模擬,當連續(xù)2次通信的信息(源節(jié)點、目的節(jié)點或消息大小)不一致時,需要對文件進行修改,即需要對文件不斷讀寫,這將是一個極大的開銷。同時還有每次對同樣網(wǎng)絡拓撲進行重建帶來的不必要開銷。

以上問題導致了現(xiàn)有的基于OMNet++實現(xiàn)的網(wǎng)絡仿真模型無法直接模擬并行程序執(zhí)行過程中的網(wǎng)絡狀態(tài)。為了模擬并行程序執(zhí)行過程中的網(wǎng)絡狀態(tài)和性能,需要解決以下2個問題:

(1)系統(tǒng)能接收外部的MPI通信消息,并能以此消息為驅動,模擬互連網(wǎng)絡通信。

(2)高性能計算機模擬器的通信模擬需求可能不是連續(xù)的,存在持續(xù)一段時間多次調用I/O操作的情況。在一次通信模擬結束之后,系統(tǒng)需要繼續(xù)等待外部消息的到來,而不是直接停止工作。

2.3 互連網(wǎng)絡模擬系統(tǒng)結構

為了實現(xiàn)由外部MPI通信消息驅動的網(wǎng)絡仿真系統(tǒng),本文在原來的網(wǎng)絡模型中,增加了管理節(jié)點。管理節(jié)點和每一個模擬節(jié)點相連,不參與網(wǎng)絡模擬通信的過程,只接收消息接口轉發(fā)的外部節(jié)點MPI通信模擬請求,并根據(jù)消息的起始節(jié)點分發(fā)消息。通信仿真時延通過模擬節(jié)點發(fā)送給管理節(jié)點,并由管理節(jié)點返回給消息接口。

Figure 2 Structure of the interconnection network simulation system based on OMNet++圖2 基于OMNet++的互連網(wǎng)絡模擬系統(tǒng)總體結構

同時為了滿足高性能計算機模擬系統(tǒng)的實時MPI通信模擬請求,本文在CMDENV仿真環(huán)境基礎上實現(xiàn)了CCMDENV(Connectable CMDENV)仿真環(huán)境接口。區(qū)別于OMNet++的仿真環(huán)境接口,在實現(xiàn)上,CCMDENV設計事件隊列為空時不直接停止,而是以指定的頻率輪詢隊列,繼續(xù)等待事件到來。同時對管理節(jié)點增加分發(fā)消息標識,使之不會影響當前正在進行的通信模擬。

基于OMNet++的互連網(wǎng)絡模擬系統(tǒng)總體結構如圖2所示。并行程序在真實的高性能計算系統(tǒng)中運行,使用PMPI(MPI Profiling Interface)[3]接口捕獲每個通信函數(shù),獲取函數(shù)的MPI消息信封(包括源進程號、目的進程號和數(shù)據(jù)大小等)并輸入至外部節(jié)點,外部節(jié)點存儲這些MPI通信消息,并發(fā)起通信模擬請求。消息接口用來接收外部節(jié)點通信請求以及進行仿真請求的轉發(fā),同時接收仿真結果。網(wǎng)絡配置包括網(wǎng)絡拓撲和網(wǎng)絡參數(shù)(鏈路帶寬、網(wǎng)絡擁塞等)的設置。系統(tǒng)通過Ned文件配置網(wǎng)絡拓撲信息,通過ini文件配置網(wǎng)絡參數(shù)信息。用戶通過網(wǎng)絡配置模塊生成Ned文件和ini文件。模擬節(jié)點作為網(wǎng)絡仿真主機節(jié)點,進行仿真消息的發(fā)送與接收。仿真內核和模型組件庫用來支持OMNet++仿真。

根據(jù)圖2,網(wǎng)絡模擬系統(tǒng)的具體工作流程如下所示:

(1)消息接口接收外部節(jié)點通信模擬請求,如果此時模型未啟動,則通過仿真環(huán)境接口啟動仿真模型,配置網(wǎng)絡參數(shù),初始化模型組件;

(2)消息接口將通信模擬請求發(fā)送給管理節(jié)點,管理節(jié)點根據(jù)進程與節(jié)點的分布關系,以及源進程號和目的進程號,解析通信消息的起始節(jié)點,將消息分發(fā)給對應的模擬節(jié)點;

(3)模擬節(jié)點根據(jù)通信消息的目的節(jié)點、消息大小等信息,生成仿真通信消息并發(fā)送;

(4)目的節(jié)點接收到仿真通信消息,將本次通信時延等信息發(fā)回管理節(jié)點,管理節(jié)點再將其發(fā)回消息接口,由消息接口傳回外部節(jié)點。

3 InfiniBand網(wǎng)絡的建模與模擬

3.1 HCA和Switch模型

針對InfiniBand網(wǎng)絡的分析,本文將網(wǎng)絡簡化成由主機通道適配器HCA(Host Channel Adapter)、交換機(Switch)和鏈路構成,并做以下假設:

(1)交換機工作為流水線模型;

(2)假設交換機轉發(fā)采取虛切通的工作方式,在虛切通模式下,交換機接收到包頭之后即可進行接口轉發(fā),無需等待完整數(shù)據(jù)包接收完畢;

(3)每個交換機含有M個輸入輸出端口,每個端口有N個虛擬鏈路VL(Virtual Link),并對每個輸入輸出端口建立FCFS隊列;

(4)交換機對不同數(shù)據(jù)包進行路由、仲裁等處理的時延為固定時延。

主機(HCA)和交換機(Switch)模型如圖3所示,模型中各模塊的含義如表1所示。

Figure 3 Model of HCA and Switch圖3 HAC和Switch模型

Table 1 Illustration and function of each module

在HCA模型中,每個HCA包含消息產生模塊(app)、包生成模塊(gen)、輸入輸出緩沖模塊、消息接收模塊(sink)和仲裁模塊。app產生消息,消息包含消息大小以及通信的源節(jié)點、目的節(jié)點,產生的消息進入gen模塊。gen將消息進行分包和分片,然后進入vlarb模塊。vlarb根據(jù)消息的目的節(jié)點分配VL,進入obuf排隊或者直接輸出;同時vlarb接收ibuf與遠程目的節(jié)點協(xié)商的可接收的消息緩沖大小進行鏈路控制。obuf根據(jù)vlarb的仲裁消息,決定隊列消息的發(fā)送;ibuf則接收外部節(jié)點信息,以及接收目的節(jié)點的流量控制信息。

交換機模型由交換機端口模塊、交換機端口轉發(fā)表和交換機開關組成。交換機端口轉發(fā)表在網(wǎng)絡拓撲初始化過程中建立,存儲交換機到所有計算節(jié)點(HCA)的轉發(fā)端口列表,因為網(wǎng)絡拓撲的原因,交換機到計算節(jié)點可能存在多個不同的轉發(fā)端口。交換機端口模型包含ibuf、obuf和vlarb模塊,obuf為輸出緩沖,進行消息排隊和輸出;ibuf接收節(jié)點數(shù)據(jù)消息和鏈路控制信息;vlarb則進行obuf隊列輸出和鏈路控制。

3.2 消息建模

為了實現(xiàn)消息的接收、發(fā)送與鏈路控制,需要針對不同類型的消息進行建模。主要消息類型及其作用說明如表2所示。

Table 2 Illustration and function of messages表2 消息類型及其作用說明

3.3 路由算法實現(xiàn)

對互連網(wǎng)絡模擬的很重要的一部分包括路由算法的實現(xiàn)。當前主流的互連網(wǎng)絡路由算法主要有OpenSM[4]中提供的7種:Min Hop、UPDN(UP/Down)、 DNUP(Down/UP)、 胖樹(Fat Tree)、LASH(LAyered SHortest path routing)、 DOR(Dimension Order Routing)和Torus-2Qos。InfiniBand是當前高性能計算使用最多的高性能互連網(wǎng)絡,而胖樹拓撲則是InfiniBand互連網(wǎng)絡的主要拓撲結構。本文針對胖樹拓撲,實現(xiàn)了針對該拓撲的路由算法Fat-Tree。該算法利用胖樹的分層結構特性,避免了環(huán)路路由的問題。胖樹結構中,層級越小則表示靠近根部節(jié)點。路由表在模塊初始化、仿真開始之前建立,算法如算法1所示。

算法1路由表建立

1forleavlinL→0:

2forswinswitchList[level]:

3sw.upSwitch←send(hcaList,port);

4forlevelin 0→L:

5forswinswitchList[level]:

6sw.downSwitch←Syn(pktForwardList)

4 實驗與結果分析

4.1 實驗環(huán)境與測試方法

為了驗證模擬的精度,本文從高性能集群中采集真實的通信時延,將系統(tǒng)模擬時延結果與實際集群節(jié)點通信時延作對比。集群配置和仿真主機配置如表3所示。

Table 3 Parameters of cluster and simulation host表3 集群和仿真主機配置

Figure 4 Communication latany of kinds of messages圖4 不同消息長度的通信時延

由于集群限制,大多高性能集群的設計都是通過一臺InfiniBand交換機作為根部節(jié)點,計算節(jié)點與InfiniBand交換機直接相連。實驗數(shù)據(jù)采集于此種集群結構;為了減少通信誤差,實驗以2個節(jié)點之間50次通信時延的算術平均值作為通信時延。通信消息在B、KB和MB 3個單位下分別選取1,4,16,64和256共5種長度。

4.2 實驗結果分析

實驗結果如圖4所示。其中圖4a~圖4c分別給出了當通信消息單位分別為B、KB和MB時,從實際集群采集的通信時延和互連網(wǎng)絡模擬系統(tǒng)模擬時延。從圖4a可以看出,當消息較小時(1 B,4 B和16 B),集群通信時延相差不大。這主要是因為采集時延為MPI通信時延,MPI環(huán)境通信本身需要額外的開銷,而小消息通信時延相對來說可忽略不計。模擬系統(tǒng)因為采用了最小消息長度(1 024 B),不足則按最小長度計算,所以在測量區(qū)間內模擬結果不變。當消息長度增大時,集群通信時延和模擬系統(tǒng)模擬時延結果相差不大,當消息大小上升為MB級別時,如圖4c所示,模擬結果和實際集群采集時延較為吻合,只有在特大通信消息時(256 MB),出現(xiàn)了一定的差距。這主要是因為網(wǎng)絡通信的復雜性,網(wǎng)絡并不會長時間保持相同的擁塞情況。當通信過程持續(xù)時間較長時,通信過程受到網(wǎng)絡干擾的可能也隨之增加。

由于集群通信采集時延是MPI通信時延,MPI通信本身有通信開銷,當通信消息很小時,網(wǎng)絡通信時延相比MPI通信接口初始化開銷占比較小,故本文把實際集群小消息通信時延作為MPI本身開銷。把MPI開銷作為修正因子加入模擬系統(tǒng)中,圖4d~圖4f表示加入修正因子之后的模擬結果。

4.3 性能分析

為了分析互連網(wǎng)絡模擬系統(tǒng)的性能,實驗分別記錄不同長度消息的通信仿真所需實際時間。過小的通信消息,仿真所需時間短,故而受外部不穩(wěn)定因素影響波動較大,所以不做討論。本實驗主要采集單位為KB的消息,長度分別取64 KB,128 KB,256 KB, 512 KB,1 024 KB和2 048 KB,仿真所需時間均取多次實驗的算數(shù)平均值,以降低實驗誤差。實驗結果如圖5所示。

Figure 5 Time required for simulation圖5 仿真實際所需時間

圖5結果顯示,仿真所需時間與仿真消息大小基本成正比關系。這是因為系統(tǒng)是以消息驅動的模擬仿真,當通信消息成倍增長時,產生的仿真消息也是成倍增長,因而仿真所需時間也是成倍增加。在消息大小為64 KB,128 KB和256 KB時,仿真所需時間本身也很小,因而測量時間波動較大,所以和消息大小在1 MB和2 MB時的時間比率有稍微偏差。總體來看,仿真所需時間較短,效率較高。

從趨勢看,當消息長度為256 MB時,仿真時間將達到分鐘級別。但是,實際通信過程中,這類大消息不經常出現(xiàn),同時仿真所需時間本身也與進行仿真的主機配置相關,所以不影響本模擬系統(tǒng)的正常使用。

5 相關工作

互連網(wǎng)絡模擬方法通常分為2種:一是通過抽象互連網(wǎng)絡特征,用參數(shù)模型來刻畫互連網(wǎng)絡,進行數(shù)學參數(shù)建模;二是通過離散事件來模擬網(wǎng)絡行為,進行仿真模擬。

在數(shù)學建模方面,最典型的是以LogP[5]為基礎的一系列簡易參數(shù)模型。LogP模型使用4個參數(shù):互連網(wǎng)絡單次通信時延的上限(L)、處理器處理消息開銷(o)、連續(xù)消息傳輸之間的間隔(g)和處理器數(shù)量(P),來刻畫互連網(wǎng)絡的整體通信時延。與LogP相比,Alexandrov等人[6]提出的LogGP模型添加了一個附加參數(shù)G,即長消息中2個連續(xù)字節(jié)之間的間隙。該模型模擬了大多數(shù)網(wǎng)絡相對快速地傳輸大型消息的能力,使得每個字節(jié)的成本度量(G)比在LogP建模中多個小消息建模方式(受G限制)更精確。LoPC[7]在LogP模型的基礎上考慮了在多處理器或工作站網(wǎng)絡上并行算法對消息處理資源的爭奪,LoPC直接從LogP模型中獲取L、o和P參數(shù),并使用它們來預測爭用成本C。LoGPC[8]擴展了LogP和LogGP,以考慮網(wǎng)絡爭用和網(wǎng)絡接口DMA行為對消息傳遞程序性能的影響。LogGPS[9]模型將發(fā)送方同步添加到模型中,大消息的傳遞通常是通過向接收方發(fā)送小的控制消息來檢查是否有足夠的緩沖來執(zhí)行的。會合協(xié)議使發(fā)送方與接收方同步,在接收方準備好接收消息之前,不能發(fā)送消息。S為消息長度的閾值,超過該閾值則采用同步協(xié)議,以分析同步對通信成本的影響。Hoefler等人[10]在LogfP模型中針對基于InfiniBand的小消息建模,增加參數(shù)f表示可同時發(fā)送的最大消息數(shù)量。

除了LogP系列模型外,還有對互連網(wǎng)絡進行整體數(shù)學建模的方法。文獻[11]運用排隊論針對交換端口建立排隊模型,進而建立了虛切通方式下的鏈路延時模型,最后分別針對不同拓撲建立不同的路由模型,得到最終網(wǎng)絡排隊延時模型。高性能計算機系統(tǒng)模擬器SimHPC[12]集成了文獻[11]的方法,作為其互連網(wǎng)絡模擬系統(tǒng)。

數(shù)學建模方法的參數(shù)少則模型過于簡單,會導致誤差太大;參數(shù)多則模型復雜,求解時間長。與之相對的仿真模擬方法,精度更高且適用性更廣,但模擬時間比數(shù)學建模方法長。近年來,隨著計算機性能的提升,采用仿真模擬的方法所需時間不再是不可接受,較之仿真精度高,使用仿真法模擬互連網(wǎng)絡的比例逐步上升。

文獻[13]針對InfiniBand互連網(wǎng)絡,使用OMNet++建立網(wǎng)絡仿真模型,然而卻沒有對路由建模,使用固定端口轉發(fā)進行數(shù)據(jù)轉發(fā)模擬。Liu等人[14]提出了一個針對Fat-Tree互連網(wǎng)絡建模的模擬器FatTreeSim,分別從胖樹拓撲、胖樹流量和胖樹路由等方面對網(wǎng)絡進行建模,采用離散事件驅動的仿真方法,但是該方法是基于PDES工具包實現(xiàn)的,不利于與高性能計算機模擬器集成。OMNet++實現(xiàn)的片級InfiniBand模擬器[15],同樣沒有對路由算法建模,而且不支持最近主流的EDR網(wǎng)絡,僅能支持FDR的模擬。

6 結束語

高性能計算系統(tǒng)模擬器對高性能計算機的研發(fā)與調優(yōu)有著至關重要的作用,對其中互連網(wǎng)絡的模擬也是不可或缺的一部分。本文設計了一種基于OMNet++網(wǎng)絡仿真框架的大規(guī)模InfiniBand互連網(wǎng)絡模擬系統(tǒng),該系統(tǒng)通過記錄的并行程序MPI消息來驅動網(wǎng)絡仿真過程,使OMNet++支持以外部消息為驅動的網(wǎng)絡仿真。系統(tǒng)可做為高性能計算模擬器的網(wǎng)絡部分模擬,而不必每次都進行新配置文件讀寫、網(wǎng)絡配置等操作。同時OMNet++網(wǎng)絡模型不必是InfiniBand互連網(wǎng)絡,其他使用OMNet++仿真框架的網(wǎng)絡模型,同樣可以使用本文設計的互連網(wǎng)絡模擬系統(tǒng)實現(xiàn)由外部消息驅動的網(wǎng)絡仿真。

后續(xù)改進將針對模擬器的模擬效率展開,系統(tǒng)在針對大消息通信模擬時所需時間還有待改進。同時,需要增加路由算法的其他實現(xiàn),因為網(wǎng)絡拓撲的多樣性,選擇的路由算法應有不同,OpenSM中提供的路由算法亦是如此。

猜你喜歡
模擬系統(tǒng)交換機高性能
修復損壞的交換機NOS
基于STM32單片機的微電網(wǎng)模擬系統(tǒng)設計
電子制作(2018年1期)2018-04-04 01:48:22
使用鏈路聚合進行交換機互聯(lián)
基于ARM和Zigbee 的變壓器試驗培訓模擬系統(tǒng)
電子制作(2017年23期)2017-02-02 07:16:50
一款高性能BGO探測器的研發(fā)
電子制作(2017年19期)2017-02-02 07:08:49
高性能砼在橋梁中的應用
虛擬現(xiàn)實焊接培訓模擬系統(tǒng)在焊工培訓中的應用
焊接(2015年1期)2015-07-18 11:07:32
SATA推出全新高性能噴槍SATAjet 5000 B
PoE交換機雷擊浪涌防護設計
高性能可變進氣岐管降低二氧化碳排放
汽車零部件(2014年8期)2014-12-28 02:03:03
河东区| 五华县| 彩票| 大化| 马山县| 新蔡县| 邓州市| 舒兰市| 营口市| 南郑县| 明光市| 邻水| 石河子市| 桂林市| 定州市| 山东省| 大关县| 剑川县| 邯郸市| 澜沧| 策勒县| 五峰| 云龙县| 辰溪县| 巨野县| 通州市| 三河市| 黄平县| 景德镇市| 盐山县| 蒙山县| 海门市| 林芝县| 江山市| 交口县| 个旧市| 永春县| 定陶县| 高邮市| 长丰县| 山东省|