汪 鑫,林 放,劉 軼,錢德沛
(北京航空航天大學(xué)計(jì)算機(jī)學(xué)院,北京 100191)
高性能計(jì)算系統(tǒng)廣泛應(yīng)用于災(zāi)害預(yù)測(cè)、環(huán)境監(jiān)控、基因工程和航空航天等領(lǐng)域。由于此類系統(tǒng)規(guī)模龐大、結(jié)構(gòu)復(fù)雜,其實(shí)際性能受到多方面因素的影響,如處理器、內(nèi)存和互連網(wǎng)絡(luò)等。因此,在系統(tǒng)設(shè)計(jì)階段,通過(guò)模擬的方法對(duì)高性能計(jì)算系統(tǒng)方案進(jìn)行性能評(píng)價(jià),從而對(duì)設(shè)計(jì)進(jìn)行改進(jìn),將大大節(jié)省經(jīng)濟(jì)和時(shí)間開(kāi)銷。
互連網(wǎng)絡(luò)是高性能計(jì)算機(jī)系統(tǒng)的重要組成部分,研發(fā)人員對(duì)并行程序運(yùn)行過(guò)程中互連網(wǎng)絡(luò)狀態(tài)和性能十分關(guān)注。近年來(lái),以InfiniBand為代表的產(chǎn)品化高速互連網(wǎng)絡(luò)在高性能計(jì)算系統(tǒng)中應(yīng)用日益廣泛。統(tǒng)計(jì)數(shù)據(jù)[1,2]顯示,2019年11月發(fā)布的TOP500名單中,TOP100中采用InfiniBand的比例高達(dá)46%,同比2018年增長(zhǎng)5%,其中排名前3的系統(tǒng)全部采用InfiniBand互連網(wǎng)絡(luò)。因此,對(duì)InfiniBand進(jìn)行建模模擬是很有必要的。
在高性能互連網(wǎng)絡(luò)模擬方面通常的做法有數(shù)學(xué)建模法和仿真模擬法。數(shù)學(xué)建模法用參數(shù)刻畫網(wǎng)絡(luò)特征,建立網(wǎng)絡(luò)模型,模擬速度快,容易與高性能計(jì)算機(jī)模擬系統(tǒng)集成,但是誤差較大;仿真模擬方法可使用網(wǎng)絡(luò)模擬器(如OMNet++)完成,其優(yōu)點(diǎn)是可以較為精確地進(jìn)行網(wǎng)絡(luò)建模和模擬,但模擬過(guò)程中通信模式相對(duì)固定,難以模擬程序運(yùn)行過(guò)程中的網(wǎng)絡(luò)狀態(tài)和性能。提供一種模擬精度和效率較高,并且能夠模擬MPI程序運(yùn)行過(guò)程中互連網(wǎng)絡(luò)狀態(tài)的網(wǎng)絡(luò)模擬器是一個(gè)需要解決的問(wèn)題。
針對(duì)于此,本文設(shè)計(jì)了一種基于OMNet++網(wǎng)絡(luò)仿真框架的大規(guī)模InfiniBand互連網(wǎng)絡(luò)模擬系統(tǒng),該系統(tǒng)通過(guò)記錄的并行程序MPI消息來(lái)驅(qū)動(dòng)網(wǎng)絡(luò)仿真過(guò)程,可以較為準(zhǔn)確地模擬InfiniBand互連網(wǎng)絡(luò)在程序運(yùn)行過(guò)程中的性能表現(xiàn)。系統(tǒng)支持對(duì)不同拓?fù)浜退俾实腎nfiniBand互連網(wǎng)絡(luò)進(jìn)行模擬,并可與高性能計(jì)算機(jī)模擬系統(tǒng)集成。
OMNet++是一個(gè)離散事件仿真框架,具備全開(kāi)源、高度模塊化和模塊可定制化等優(yōu)點(diǎn)。OMNet++將網(wǎng)絡(luò)抽象成不同簡(jiǎn)單模塊和復(fù)合模塊的組合,提供Ned描述語(yǔ)言來(lái)快速定義網(wǎng)絡(luò)拓?fù)洌褂胕ni文件進(jìn)行網(wǎng)絡(luò)參數(shù)初始化,使用C++語(yǔ)言來(lái)定義仿真主體各個(gè)網(wǎng)絡(luò)模塊的行為。
模塊之間通過(guò)門連接,通過(guò)消息通信,提供Send函數(shù)接口用于發(fā)送消息,handleMessage函數(shù)接口用于處理接收的消息。OMNet++提供CMDENV和QTENV 2種用戶仿真環(huán)境,前者以命令行方式運(yùn)行,多用于批處理模擬任務(wù);后者提供交互界面模式,可直觀地觀察仿真過(guò)程中消息的發(fā)送與接收。OMNet++框架如圖1所示。
Figure 1 Framework of OMNet++圖1 OMNet++框架圖
用戶主要通過(guò)定義網(wǎng)絡(luò)模塊的行為來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)的模擬功能,比如數(shù)據(jù)包的接口轉(zhuǎn)發(fā)、擁塞控制等。在網(wǎng)絡(luò)仿真開(kāi)始之前,進(jìn)行模塊初始化,即進(jìn)行各模塊參數(shù)的設(shè)置,同時(shí)確定模擬通信的形式,如點(diǎn)對(duì)點(diǎn)單消息通信或點(diǎn)對(duì)點(diǎn)消息集合通信,因?yàn)槭鞘录?qū)動(dòng)模擬,所以第1個(gè)事件的產(chǎn)生至關(guān)重要。仿真環(huán)境內(nèi)部維護(hù)1個(gè)事件隊(duì)列,模塊間通信時(shí),每進(jìn)行一次Send都會(huì)向事件隊(duì)列中添加事件,并且切換當(dāng)前仿真上下文(執(zhí)行操作的模塊),而并非直接到達(dá)目的模塊。然后依次從事件隊(duì)列中取出事件,若事件的所有者和當(dāng)前上下文一致,則執(zhí)行事件;若隊(duì)列為空,則模擬過(guò)程結(jié)束。
現(xiàn)有OMNet++支持的工作方式,每次模擬都是對(duì)某次通信或者某種特定場(chǎng)景下消息序列通信的模擬,即仿真任務(wù)都是由配置文件提前配置好的。而要模擬并行程序運(yùn)行過(guò)程中的互連網(wǎng)絡(luò)狀態(tài),要求系統(tǒng)能以并行程序運(yùn)行過(guò)程中的消息傳輸作為模擬輸入,這在現(xiàn)有框架下難以實(shí)現(xiàn),需要對(duì)系統(tǒng)進(jìn)行擴(kuò)展,使其能夠在模擬過(guò)程中接收并行程序MPI消息,并以此驅(qū)動(dòng)互連網(wǎng)絡(luò)的模擬。
一種簡(jiǎn)單的設(shè)計(jì)是,每一次新的通信都更新一次配置文件,然后通過(guò)命令行方式(CMDENV)啟動(dòng)一次全新的網(wǎng)絡(luò)模擬,這樣也能實(shí)現(xiàn)對(duì)實(shí)時(shí)MPI消息的接收并進(jìn)行一次模擬。但是,這種設(shè)計(jì)有一個(gè)嚴(yán)重的問(wèn)題,由于還是由配置文件確定的通信過(guò)程模擬,當(dāng)連續(xù)2次通信的信息(源節(jié)點(diǎn)、目的節(jié)點(diǎn)或消息大小)不一致時(shí),需要對(duì)文件進(jìn)行修改,即需要對(duì)文件不斷讀寫,這將是一個(gè)極大的開(kāi)銷。同時(shí)還有每次對(duì)同樣網(wǎng)絡(luò)拓?fù)溥M(jìn)行重建帶來(lái)的不必要開(kāi)銷。
以上問(wèn)題導(dǎo)致了現(xiàn)有的基于OMNet++實(shí)現(xiàn)的網(wǎng)絡(luò)仿真模型無(wú)法直接模擬并行程序執(zhí)行過(guò)程中的網(wǎng)絡(luò)狀態(tài)。為了模擬并行程序執(zhí)行過(guò)程中的網(wǎng)絡(luò)狀態(tài)和性能,需要解決以下2個(gè)問(wèn)題:
(1)系統(tǒng)能接收外部的MPI通信消息,并能以此消息為驅(qū)動(dòng),模擬互連網(wǎng)絡(luò)通信。
(2)高性能計(jì)算機(jī)模擬器的通信模擬需求可能不是連續(xù)的,存在持續(xù)一段時(shí)間多次調(diào)用I/O操作的情況。在一次通信模擬結(jié)束之后,系統(tǒng)需要繼續(xù)等待外部消息的到來(lái),而不是直接停止工作。
為了實(shí)現(xiàn)由外部MPI通信消息驅(qū)動(dòng)的網(wǎng)絡(luò)仿真系統(tǒng),本文在原來(lái)的網(wǎng)絡(luò)模型中,增加了管理節(jié)點(diǎn)。管理節(jié)點(diǎn)和每一個(gè)模擬節(jié)點(diǎn)相連,不參與網(wǎng)絡(luò)模擬通信的過(guò)程,只接收消息接口轉(zhuǎn)發(fā)的外部節(jié)點(diǎn)MPI通信模擬請(qǐng)求,并根據(jù)消息的起始節(jié)點(diǎn)分發(fā)消息。通信仿真時(shí)延通過(guò)模擬節(jié)點(diǎn)發(fā)送給管理節(jié)點(diǎn),并由管理節(jié)點(diǎn)返回給消息接口。
Figure 2 Structure of the interconnection network simulation system based on OMNet++圖2 基于OMNet++的互連網(wǎng)絡(luò)模擬系統(tǒng)總體結(jié)構(gòu)
同時(shí)為了滿足高性能計(jì)算機(jī)模擬系統(tǒng)的實(shí)時(shí)MPI通信模擬請(qǐng)求,本文在CMDENV仿真環(huán)境基礎(chǔ)上實(shí)現(xiàn)了CCMDENV(Connectable CMDENV)仿真環(huán)境接口。區(qū)別于OMNet++的仿真環(huán)境接口,在實(shí)現(xiàn)上,CCMDENV設(shè)計(jì)事件隊(duì)列為空時(shí)不直接停止,而是以指定的頻率輪詢隊(duì)列,繼續(xù)等待事件到來(lái)。同時(shí)對(duì)管理節(jié)點(diǎn)增加分發(fā)消息標(biāo)識(shí),使之不會(huì)影響當(dāng)前正在進(jìn)行的通信模擬。
基于OMNet++的互連網(wǎng)絡(luò)模擬系統(tǒng)總體結(jié)構(gòu)如圖2所示。并行程序在真實(shí)的高性能計(jì)算系統(tǒng)中運(yùn)行,使用PMPI(MPI Profiling Interface)[3]接口捕獲每個(gè)通信函數(shù),獲取函數(shù)的MPI消息信封(包括源進(jìn)程號(hào)、目的進(jìn)程號(hào)和數(shù)據(jù)大小等)并輸入至外部節(jié)點(diǎn),外部節(jié)點(diǎn)存儲(chǔ)這些MPI通信消息,并發(fā)起通信模擬請(qǐng)求。消息接口用來(lái)接收外部節(jié)點(diǎn)通信請(qǐng)求以及進(jìn)行仿真請(qǐng)求的轉(zhuǎn)發(fā),同時(shí)接收仿真結(jié)果。網(wǎng)絡(luò)配置包括網(wǎng)絡(luò)拓?fù)浜途W(wǎng)絡(luò)參數(shù)(鏈路帶寬、網(wǎng)絡(luò)擁塞等)的設(shè)置。系統(tǒng)通過(guò)Ned文件配置網(wǎng)絡(luò)拓?fù)湫畔?,通過(guò)ini文件配置網(wǎng)絡(luò)參數(shù)信息。用戶通過(guò)網(wǎng)絡(luò)配置模塊生成Ned文件和ini文件。模擬節(jié)點(diǎn)作為網(wǎng)絡(luò)仿真主機(jī)節(jié)點(diǎn),進(jìn)行仿真消息的發(fā)送與接收。仿真內(nèi)核和模型組件庫(kù)用來(lái)支持OMNet++仿真。
根據(jù)圖2,網(wǎng)絡(luò)模擬系統(tǒng)的具體工作流程如下所示:
(1)消息接口接收外部節(jié)點(diǎn)通信模擬請(qǐng)求,如果此時(shí)模型未啟動(dòng),則通過(guò)仿真環(huán)境接口啟動(dòng)仿真模型,配置網(wǎng)絡(luò)參數(shù),初始化模型組件;
(2)消息接口將通信模擬請(qǐng)求發(fā)送給管理節(jié)點(diǎn),管理節(jié)點(diǎn)根據(jù)進(jìn)程與節(jié)點(diǎn)的分布關(guān)系,以及源進(jìn)程號(hào)和目的進(jìn)程號(hào),解析通信消息的起始節(jié)點(diǎn),將消息分發(fā)給對(duì)應(yīng)的模擬節(jié)點(diǎn);
(3)模擬節(jié)點(diǎn)根據(jù)通信消息的目的節(jié)點(diǎn)、消息大小等信息,生成仿真通信消息并發(fā)送;
(4)目的節(jié)點(diǎn)接收到仿真通信消息,將本次通信時(shí)延等信息發(fā)回管理節(jié)點(diǎn),管理節(jié)點(diǎn)再將其發(fā)回消息接口,由消息接口傳回外部節(jié)點(diǎn)。
針對(duì)InfiniBand網(wǎng)絡(luò)的分析,本文將網(wǎng)絡(luò)簡(jiǎn)化成由主機(jī)通道適配器HCA(Host Channel Adapter)、交換機(jī)(Switch)和鏈路構(gòu)成,并做以下假設(shè):
(1)交換機(jī)工作為流水線模型;
(2)假設(shè)交換機(jī)轉(zhuǎn)發(fā)采取虛切通的工作方式,在虛切通模式下,交換機(jī)接收到包頭之后即可進(jìn)行接口轉(zhuǎn)發(fā),無(wú)需等待完整數(shù)據(jù)包接收完畢;
(3)每個(gè)交換機(jī)含有M個(gè)輸入輸出端口,每個(gè)端口有N個(gè)虛擬鏈路VL(Virtual Link),并對(duì)每個(gè)輸入輸出端口建立FCFS隊(duì)列;
(4)交換機(jī)對(duì)不同數(shù)據(jù)包進(jìn)行路由、仲裁等處理的時(shí)延為固定時(shí)延。
主機(jī)(HCA)和交換機(jī)(Switch)模型如圖3所示,模型中各模塊的含義如表1所示。
Figure 3 Model of HCA and Switch圖3 HAC和Switch模型
Table 1 Illustration and function of each module
在HCA模型中,每個(gè)HCA包含消息產(chǎn)生模塊(app)、包生成模塊(gen)、輸入輸出緩沖模塊、消息接收模塊(sink)和仲裁模塊。app產(chǎn)生消息,消息包含消息大小以及通信的源節(jié)點(diǎn)、目的節(jié)點(diǎn),產(chǎn)生的消息進(jìn)入gen模塊。gen將消息進(jìn)行分包和分片,然后進(jìn)入vlarb模塊。vlarb根據(jù)消息的目的節(jié)點(diǎn)分配VL,進(jìn)入obuf排隊(duì)或者直接輸出;同時(shí)vlarb接收ibuf與遠(yuǎn)程目的節(jié)點(diǎn)協(xié)商的可接收的消息緩沖大小進(jìn)行鏈路控制。obuf根據(jù)vlarb的仲裁消息,決定隊(duì)列消息的發(fā)送;ibuf則接收外部節(jié)點(diǎn)信息,以及接收目的節(jié)點(diǎn)的流量控制信息。
交換機(jī)模型由交換機(jī)端口模塊、交換機(jī)端口轉(zhuǎn)發(fā)表和交換機(jī)開(kāi)關(guān)組成。交換機(jī)端口轉(zhuǎn)發(fā)表在網(wǎng)絡(luò)拓?fù)涑跏蓟^(guò)程中建立,存儲(chǔ)交換機(jī)到所有計(jì)算節(jié)點(diǎn)(HCA)的轉(zhuǎn)發(fā)端口列表,因?yàn)榫W(wǎng)絡(luò)拓?fù)涞脑?,交換機(jī)到計(jì)算節(jié)點(diǎn)可能存在多個(gè)不同的轉(zhuǎn)發(fā)端口。交換機(jī)端口模型包含ibuf、obuf和vlarb模塊,obuf為輸出緩沖,進(jìn)行消息排隊(duì)和輸出;ibuf接收節(jié)點(diǎn)數(shù)據(jù)消息和鏈路控制信息;vlarb則進(jìn)行obuf隊(duì)列輸出和鏈路控制。
為了實(shí)現(xiàn)消息的接收、發(fā)送與鏈路控制,需要針對(duì)不同類型的消息進(jìn)行建模。主要消息類型及其作用說(shuō)明如表2所示。
Table 2 Illustration and function of messages表2 消息類型及其作用說(shuō)明
對(duì)互連網(wǎng)絡(luò)模擬的很重要的一部分包括路由算法的實(shí)現(xiàn)。當(dāng)前主流的互連網(wǎng)絡(luò)路由算法主要有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是當(dāng)前高性能計(jì)算使用最多的高性能互連網(wǎng)絡(luò),而胖樹拓?fù)鋭t是InfiniBand互連網(wǎng)絡(luò)的主要拓?fù)浣Y(jié)構(gòu)。本文針對(duì)胖樹拓?fù)?,?shí)現(xiàn)了針對(duì)該拓?fù)涞穆酚伤惴‵at-Tree。該算法利用胖樹的分層結(jié)構(gòu)特性,避免了環(huán)路路由的問(wèn)題。胖樹結(jié)構(gòu)中,層級(jí)越小則表示靠近根部節(jié)點(diǎn)。路由表在模塊初始化、仿真開(kāi)始之前建立,算法如算法1所示。
算法1路由表建立
1forleavlinL→0:
2forswinswitchList[level]:
3sw.upSwitch←send(hcaList,port);
4forlevelin 0→L:
5forswinswitchList[level]:
6sw.downSwitch←Syn(pktForwardList)
為了驗(yàn)證模擬的精度,本文從高性能集群中采集真實(shí)的通信時(shí)延,將系統(tǒng)模擬時(shí)延結(jié)果與實(shí)際集群節(jié)點(diǎn)通信時(shí)延作對(duì)比。集群配置和仿真主機(jī)配置如表3所示。
Table 3 Parameters of cluster and simulation host表3 集群和仿真主機(jī)配置
Figure 4 Communication latany of kinds of messages圖4 不同消息長(zhǎng)度的通信時(shí)延
由于集群限制,大多高性能集群的設(shè)計(jì)都是通過(guò)一臺(tái)InfiniBand交換機(jī)作為根部節(jié)點(diǎn),計(jì)算節(jié)點(diǎn)與InfiniBand交換機(jī)直接相連。實(shí)驗(yàn)數(shù)據(jù)采集于此種集群結(jié)構(gòu);為了減少通信誤差,實(shí)驗(yàn)以2個(gè)節(jié)點(diǎn)之間50次通信時(shí)延的算術(shù)平均值作為通信時(shí)延。通信消息在B、KB和MB 3個(gè)單位下分別選取1,4,16,64和256共5種長(zhǎng)度。
實(shí)驗(yàn)結(jié)果如圖4所示。其中圖4a~圖4c分別給出了當(dāng)通信消息單位分別為B、KB和MB時(shí),從實(shí)際集群采集的通信時(shí)延和互連網(wǎng)絡(luò)模擬系統(tǒng)模擬時(shí)延。從圖4a可以看出,當(dāng)消息較小時(shí)(1 B,4 B和16 B),集群通信時(shí)延相差不大。這主要是因?yàn)椴杉瘯r(shí)延為MPI通信時(shí)延,MPI環(huán)境通信本身需要額外的開(kāi)銷,而小消息通信時(shí)延相對(duì)來(lái)說(shuō)可忽略不計(jì)。模擬系統(tǒng)因?yàn)椴捎昧俗钚∠㈤L(zhǎng)度(1 024 B),不足則按最小長(zhǎng)度計(jì)算,所以在測(cè)量區(qū)間內(nèi)模擬結(jié)果不變。當(dāng)消息長(zhǎng)度增大時(shí),集群通信時(shí)延和模擬系統(tǒng)模擬時(shí)延結(jié)果相差不大,當(dāng)消息大小上升為MB級(jí)別時(shí),如圖4c所示,模擬結(jié)果和實(shí)際集群采集時(shí)延較為吻合,只有在特大通信消息時(shí)(256 MB),出現(xiàn)了一定的差距。這主要是因?yàn)榫W(wǎng)絡(luò)通信的復(fù)雜性,網(wǎng)絡(luò)并不會(huì)長(zhǎng)時(shí)間保持相同的擁塞情況。當(dāng)通信過(guò)程持續(xù)時(shí)間較長(zhǎng)時(shí),通信過(guò)程受到網(wǎng)絡(luò)干擾的可能也隨之增加。
由于集群通信采集時(shí)延是MPI通信時(shí)延,MPI通信本身有通信開(kāi)銷,當(dāng)通信消息很小時(shí),網(wǎng)絡(luò)通信時(shí)延相比MPI通信接口初始化開(kāi)銷占比較小,故本文把實(shí)際集群小消息通信時(shí)延作為MPI本身開(kāi)銷。把MPI開(kāi)銷作為修正因子加入模擬系統(tǒng)中,圖4d~圖4f表示加入修正因子之后的模擬結(jié)果。
為了分析互連網(wǎng)絡(luò)模擬系統(tǒng)的性能,實(shí)驗(yàn)分別記錄不同長(zhǎng)度消息的通信仿真所需實(shí)際時(shí)間。過(guò)小的通信消息,仿真所需時(shí)間短,故而受外部不穩(wěn)定因素影響波動(dòng)較大,所以不做討論。本實(shí)驗(yàn)主要采集單位為KB的消息,長(zhǎng)度分別取64 KB,128 KB,256 KB, 512 KB,1 024 KB和2 048 KB,仿真所需時(shí)間均取多次實(shí)驗(yàn)的算數(shù)平均值,以降低實(shí)驗(yàn)誤差。實(shí)驗(yàn)結(jié)果如圖5所示。
Figure 5 Time required for simulation圖5 仿真實(shí)際所需時(shí)間
圖5結(jié)果顯示,仿真所需時(shí)間與仿真消息大小基本成正比關(guān)系。這是因?yàn)橄到y(tǒng)是以消息驅(qū)動(dòng)的模擬仿真,當(dāng)通信消息成倍增長(zhǎng)時(shí),產(chǎn)生的仿真消息也是成倍增長(zhǎng),因而仿真所需時(shí)間也是成倍增加。在消息大小為64 KB,128 KB和256 KB時(shí),仿真所需時(shí)間本身也很小,因而測(cè)量時(shí)間波動(dòng)較大,所以和消息大小在1 MB和2 MB時(shí)的時(shí)間比率有稍微偏差??傮w來(lái)看,仿真所需時(shí)間較短,效率較高。
從趨勢(shì)看,當(dāng)消息長(zhǎng)度為256 MB時(shí),仿真時(shí)間將達(dá)到分鐘級(jí)別。但是,實(shí)際通信過(guò)程中,這類大消息不經(jīng)常出現(xiàn),同時(shí)仿真所需時(shí)間本身也與進(jìn)行仿真的主機(jī)配置相關(guān),所以不影響本模擬系統(tǒng)的正常使用。
互連網(wǎng)絡(luò)模擬方法通常分為2種:一是通過(guò)抽象互連網(wǎng)絡(luò)特征,用參數(shù)模型來(lái)刻畫互連網(wǎng)絡(luò),進(jìn)行數(shù)學(xué)參數(shù)建模;二是通過(guò)離散事件來(lái)模擬網(wǎng)絡(luò)行為,進(jìn)行仿真模擬。
在數(shù)學(xué)建模方面,最典型的是以LogP[5]為基礎(chǔ)的一系列簡(jiǎn)易參數(shù)模型。LogP模型使用4個(gè)參數(shù):互連網(wǎng)絡(luò)單次通信時(shí)延的上限(L)、處理器處理消息開(kāi)銷(o)、連續(xù)消息傳輸之間的間隔(g)和處理器數(shù)量(P),來(lái)刻畫互連網(wǎng)絡(luò)的整體通信時(shí)延。與LogP相比,Alexandrov等人[6]提出的LogGP模型添加了一個(gè)附加參數(shù)G,即長(zhǎng)消息中2個(gè)連續(xù)字節(jié)之間的間隙。該模型模擬了大多數(shù)網(wǎng)絡(luò)相對(duì)快速地傳輸大型消息的能力,使得每個(gè)字節(jié)的成本度量(G)比在LogP建模中多個(gè)小消息建模方式(受G限制)更精確。LoPC[7]在LogP模型的基礎(chǔ)上考慮了在多處理器或工作站網(wǎng)絡(luò)上并行算法對(duì)消息處理資源的爭(zhēng)奪,LoPC直接從LogP模型中獲取L、o和P參數(shù),并使用它們來(lái)預(yù)測(cè)爭(zhēng)用成本C。LoGPC[8]擴(kuò)展了LogP和LogGP,以考慮網(wǎng)絡(luò)爭(zhēng)用和網(wǎng)絡(luò)接口DMA行為對(duì)消息傳遞程序性能的影響。LogGPS[9]模型將發(fā)送方同步添加到模型中,大消息的傳遞通常是通過(guò)向接收方發(fā)送小的控制消息來(lái)檢查是否有足夠的緩沖來(lái)執(zhí)行的。會(huì)合協(xié)議使發(fā)送方與接收方同步,在接收方準(zhǔn)備好接收消息之前,不能發(fā)送消息。S為消息長(zhǎng)度的閾值,超過(guò)該閾值則采用同步協(xié)議,以分析同步對(duì)通信成本的影響。Hoefler等人[10]在LogfP模型中針對(duì)基于InfiniBand的小消息建模,增加參數(shù)f表示可同時(shí)發(fā)送的最大消息數(shù)量。
除了LogP系列模型外,還有對(duì)互連網(wǎng)絡(luò)進(jìn)行整體數(shù)學(xué)建模的方法。文獻(xiàn)[11]運(yùn)用排隊(duì)論針對(duì)交換端口建立排隊(duì)模型,進(jìn)而建立了虛切通方式下的鏈路延時(shí)模型,最后分別針對(duì)不同拓?fù)浣⒉煌穆酚赡P?,得到最終網(wǎng)絡(luò)排隊(duì)延時(shí)模型。高性能計(jì)算機(jī)系統(tǒng)模擬器SimHPC[12]集成了文獻(xiàn)[11]的方法,作為其互連網(wǎng)絡(luò)模擬系統(tǒng)。
數(shù)學(xué)建模方法的參數(shù)少則模型過(guò)于簡(jiǎn)單,會(huì)導(dǎo)致誤差太大;參數(shù)多則模型復(fù)雜,求解時(shí)間長(zhǎng)。與之相對(duì)的仿真模擬方法,精度更高且適用性更廣,但模擬時(shí)間比數(shù)學(xué)建模方法長(zhǎng)。近年來(lái),隨著計(jì)算機(jī)性能的提升,采用仿真模擬的方法所需時(shí)間不再是不可接受,較之仿真精度高,使用仿真法模擬互連網(wǎng)絡(luò)的比例逐步上升。
文獻(xiàn)[13]針對(duì)InfiniBand互連網(wǎng)絡(luò),使用OMNet++建立網(wǎng)絡(luò)仿真模型,然而卻沒(méi)有對(duì)路由建模,使用固定端口轉(zhuǎn)發(fā)進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)模擬。Liu等人[14]提出了一個(gè)針對(duì)Fat-Tree互連網(wǎng)絡(luò)建模的模擬器FatTreeSim,分別從胖樹拓?fù)洹⑴謽淞髁亢团謽渎酚傻确矫鎸?duì)網(wǎng)絡(luò)進(jìn)行建模,采用離散事件驅(qū)動(dòng)的仿真方法,但是該方法是基于PDES工具包實(shí)現(xiàn)的,不利于與高性能計(jì)算機(jī)模擬器集成。OMNet++實(shí)現(xiàn)的片級(jí)InfiniBand模擬器[15],同樣沒(méi)有對(duì)路由算法建模,而且不支持最近主流的EDR網(wǎng)絡(luò),僅能支持FDR的模擬。
高性能計(jì)算系統(tǒng)模擬器對(duì)高性能計(jì)算機(jī)的研發(fā)與調(diào)優(yōu)有著至關(guān)重要的作用,對(duì)其中互連網(wǎng)絡(luò)的模擬也是不可或缺的一部分。本文設(shè)計(jì)了一種基于OMNet++網(wǎng)絡(luò)仿真框架的大規(guī)模InfiniBand互連網(wǎng)絡(luò)模擬系統(tǒng),該系統(tǒng)通過(guò)記錄的并行程序MPI消息來(lái)驅(qū)動(dòng)網(wǎng)絡(luò)仿真過(guò)程,使OMNet++支持以外部消息為驅(qū)動(dòng)的網(wǎng)絡(luò)仿真。系統(tǒng)可做為高性能計(jì)算模擬器的網(wǎng)絡(luò)部分模擬,而不必每次都進(jìn)行新配置文件讀寫、網(wǎng)絡(luò)配置等操作。同時(shí)OMNet++網(wǎng)絡(luò)模型不必是InfiniBand互連網(wǎng)絡(luò),其他使用OMNet++仿真框架的網(wǎng)絡(luò)模型,同樣可以使用本文設(shè)計(jì)的互連網(wǎng)絡(luò)模擬系統(tǒng)實(shí)現(xiàn)由外部消息驅(qū)動(dòng)的網(wǎng)絡(luò)仿真。
后續(xù)改進(jìn)將針對(duì)模擬器的模擬效率展開(kāi),系統(tǒng)在針對(duì)大消息通信模擬時(shí)所需時(shí)間還有待改進(jìn)。同時(shí),需要增加路由算法的其他實(shí)現(xiàn),因?yàn)榫W(wǎng)絡(luò)拓?fù)涞亩鄻有?,選擇的路由算法應(yīng)有不同,OpenSM中提供的路由算法亦是如此。