一種并行模型的消息傳輸方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,特別是涉及一種并行模型的消息傳輸方法及系統(tǒng)。
【背景技術(shù)】
[0002]當(dāng)前,計算機(jī)微處理器的發(fā)展已進(jìn)入多核時代,并由多核向眾核發(fā)展。傳統(tǒng)仿真軟件在多核平臺中只能被分配到單個處理器核上執(zhí)行,無法充分利用多核平臺的計算資源,顯示出預(yù)期的加速性能。仿真軟件并行化是提高多核平臺計算資源利用率和仿真運(yùn)行速度的有效方法。但傳統(tǒng)的實(shí)體級模型的并行仿真編程模式需要在模型代碼內(nèi)部實(shí)現(xiàn)并行,需要模型編程人員不僅對模型建模還要對并行編程模式有很深入的了解,這將對模型構(gòu)建人員產(chǎn)生很高要求并增加模型開發(fā)的難度。
[0003]因此需要提供一種針對實(shí)體級的并行仿真模型的自動消息傳輸實(shí)現(xiàn)方法,可充分兼容現(xiàn)有的仿真模型組件,同時可減少模型開發(fā)人員的工作量,在并行仿真運(yùn)行平臺中的完全重用原有的模型組件,同時封裝了底層并行相關(guān)操作,自動實(shí)現(xiàn)并行模型的消息傳輸,以滿足實(shí)體級模型的并行仿真需求。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問題是提供一種并行模型的消息傳輸實(shí)現(xiàn)方法及系統(tǒng),解決以往串行仿真向并行仿真平臺移植過程中,建模人員需要對模型進(jìn)行大量修改且并行編程模式復(fù)雜的問題。
[0005]為解決上述技術(shù)問題,本發(fā)明采用下述技術(shù)方案:
[0006]一種并行模型的消息傳輸方法,該方法的步驟包括
[0007]將CISE引擎集中式開發(fā)的仿真模型組件轉(zhuǎn)換為并行運(yùn)行的模型組件,并生成并行代碼框架;
[0008]對并行仿真運(yùn)行平臺內(nèi)所有的復(fù)雜數(shù)據(jù)類型進(jìn)行注冊管理和生成類型代理;
[0009]將并行運(yùn)行的模型組件之間的信息交互封裝為消息傳遞編程模型MPI的消息格式,從而完成消息的發(fā)送與接收。
[0010]優(yōu)選的,所述并行運(yùn)行的模型組件包括并行仿真中所需的數(shù)據(jù)結(jié)構(gòu)和時間管理機(jī)制。
[0011]優(yōu)選的,所述將常規(guī)集中式開發(fā)的仿真模型組件封裝為并行運(yùn)行的模型組件的過程中還生成模型進(jìn)程分配文件,該文件包括記錄仿真應(yīng)用初始化的模型組件實(shí)例個數(shù),并靜態(tài)的為每個模型組件實(shí)例分配一個進(jìn)程ID,同時記錄進(jìn)程ID與模型組件實(shí)例的對應(yīng)關(guān)系O
[0012]優(yōu)選的,所述對并行仿真運(yùn)行平臺內(nèi)所有的復(fù)雜數(shù)據(jù)類型進(jìn)行注冊管理和生成類型代理包括
[0013]獲取原并行仿真運(yùn)行平臺內(nèi)所有的復(fù)雜數(shù)據(jù)類型的結(jié)構(gòu)、屬性和每個屬性所占用的字節(jié)數(shù);
[0014]按照MPI的格式,定義需要注冊的消息類型;
[0015]向MPI注冊消息類型;
[0016]刪除已經(jīng)注冊的消息類型。
[0017]一種并行模型的消息傳輸系統(tǒng),該系統(tǒng)包括
[0018]并行適配映射單元,用于常規(guī)集中式開發(fā)的仿真模型組件轉(zhuǎn)換為并行運(yùn)行的模型組件;
[0019]數(shù)據(jù)轉(zhuǎn)換單元,用于對并行仿真運(yùn)行平臺內(nèi)所有的復(fù)雜數(shù)據(jù)類型進(jìn)行類型注釋;
[0020]信息交互單元,用于將并行運(yùn)行的模型組件之間的信息交互轉(zhuǎn)換為MPI格式的消息。
[0021]優(yōu)選的,該所述并行適配映射單元包括
[0022]并行代碼框架生成模塊,用于完成常規(guī)集中式開發(fā)的仿真模型組件和代碼轉(zhuǎn)換為并行運(yùn)行的模型組件及代碼的過程;
[0023]模型進(jìn)程分配文件生成模塊,用于根據(jù)仿真應(yīng)用初始化的模型組件實(shí)例個數(shù),靜態(tài)的為每個模型組件實(shí)例分配一個進(jìn)程ID,同時記錄進(jìn)程ID與模型組件實(shí)例的對應(yīng)關(guān)系。
[0024]優(yōu)選的,所述數(shù)據(jù)轉(zhuǎn)換單元包括
[0025]原始信息獲取模塊,用于獲取原并行仿真運(yùn)行平臺內(nèi)所有的復(fù)雜數(shù)據(jù)類型的結(jié)構(gòu)、屬性和每個屬性所占用的字節(jié)數(shù);
[0026]數(shù)據(jù)注冊管理模塊,用于向MPI注冊消息類型和刪除已經(jīng)注冊的消息類型;
[0027]生成類型代理模塊,用于按照MPI的格式,定義需要注冊的消息類型。
[0028]優(yōu)選的,所述信息交互單元包括
[0029]轉(zhuǎn)換模塊,用于將并行運(yùn)行的模型組件之間的信息交互轉(zhuǎn)換為MPI格式的消息;
[0030]消息發(fā)送模塊,用于一對一或一對多的并行消息發(fā)送;
[0031 ]消息接收模塊,用于并行消息的接收。
[0032]優(yōu)選的,該系統(tǒng)還包括
[0033]時間管理模塊,用于實(shí)時獲取CISE引擎的時間;
[0034]時間同步模塊,用于根據(jù)時間管理模塊獲取的時間,同步并行消息傳輸系統(tǒng)。
[0035]本發(fā)明的有益效果如下:
[0036]本發(fā)明所述技術(shù)方案通過將仿真應(yīng)用中的相關(guān)模型實(shí)例自動映射為在并行機(jī)上運(yùn)行的邏輯進(jìn)程LP,通過LP之間發(fā)送MPI消息完成模型之間的通信,同時也通過在LP之間發(fā)送MPI消息實(shí)現(xiàn)時間同步等功能。實(shí)現(xiàn)了并行模型之間事件調(diào)度和處理、消息發(fā)送等對用戶透明,減少用戶的開發(fā)難度和開發(fā)工作量,提高開發(fā)效率。
【附圖說明】
[0037]下面結(jié)合附圖對本發(fā)明的【具體實(shí)施方式】作進(jìn)一步詳細(xì)的說明;
[0038]圖1示出本發(fā)明所述一種并行模型的消息傳輸實(shí)現(xiàn)系統(tǒng)的示意圖。
【具體實(shí)施方式】
[0039]目前CISE為集中式的仿真引擎,所有模型組件都在CISE引擎中串行執(zhí)行,當(dāng)實(shí)體個數(shù)比較多或者模型計算比較復(fù)雜的時候,計算性能會有所下降。因此本并行仿真運(yùn)行平臺將仿真應(yīng)用中的仿真實(shí)體進(jìn)行并行化,使仿真實(shí)體運(yùn)行不同的進(jìn)程中,均衡仿真引擎的負(fù)載,充分利用并行機(jī)或者集群的計算性能。
[0040]本發(fā)明公開了一種并行模型的消息傳輸實(shí)現(xiàn)方法,該方法的步驟包括
[0041]首先,串行仿真模型組件自動映射為并行模型組件:通過將仿真應(yīng)用中的相關(guān)模型實(shí)例自動映射為在并行機(jī)上運(yùn)行的邏輯進(jìn)程LP,一組并行執(zhí)行的邏輯進(jìn)程LP協(xié)作完成的并行仿真應(yīng)用。生成并行仿真模型組件是將原有集中式開發(fā)的仿真模型組件封裝為可以并行運(yùn)行的模型組件,主要是為其增加并行仿真中所需要的數(shù)據(jù)結(jié)構(gòu)和時間管理機(jī)制。并行代碼框架是仿真應(yīng)用的主控程序,包含了多個并行仿真模型的調(diào)度和仿真應(yīng)用的推進(jìn)控制程序。與集中式仿真應(yīng)用不同,并行仿真應(yīng)用是由一些并行執(zhí)行的進(jìn)程組成的,每個進(jìn)程的代碼都相同,代碼的具體執(zhí)行邏輯由控制程序進(jìn)行分配和選擇。因此需要將全部仿真應(yīng)用邏輯和仿真模型的調(diào)度都包含在一個應(yīng)用程序中。并行代碼框架生成即完成將原有仿真應(yīng)用的模型和代碼轉(zhuǎn)換為并行仿真應(yīng)用代碼的過程。由于并行代碼框架適用于所有模型組件,因此需要對進(jìn)程執(zhí)行的模型組件程序做運(yùn)行時選擇。并行適配映射的另一個功能就是生成模型進(jìn)程分配文件,該文件記錄仿真應(yīng)用初始化時的模型組件實(shí)例個數(shù),并靜態(tài)的為每個模型組件實(shí)例分配一個進(jìn)程ID,該文件會記錄進(jìn)程ID與模型組件實(shí)例的對應(yīng)關(guān)系。
[0042]其次,MPI消息類型注釋:消息類型注冊管理主要用于對仿真應(yīng)用中的復(fù)雜數(shù)據(jù)類型進(jìn)行注冊。由于所有在MPI中進(jìn)行通信的類型都需要首先進(jìn)行注冊和生成消息代理,因此需要在并行仿真運(yùn)行平臺內(nèi)對所有的復(fù)雜類型進(jìn)行注冊管理和生成類型代理,其中包括
[0043]I)獲取消息類型聲明:獲取原類型的結(jié)構(gòu),包括其中有幾個屬性,每個屬性占用的字節(jié)數(shù)等;
[0044]2)定義消息類型代理:按照MPI的格式,設(shè)計需要注冊的消息類型;
[0045]3)添加消息類型注冊:向MP