專利名稱:基于社區(qū)特性的并行離散事件仿真對(duì)象分發(fā)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及并行離散事件仿真的仿真對(duì)象分發(fā)方法,尤其是面向并行 或集群計(jì)算機(jī)的具有社區(qū)特性的并行離散事件仿真對(duì)象在多處理器上的劃分與分發(fā)方法。
背景技術(shù):
并行離散事件仿真(PDES,ParallelDiscrete Event Simulation),可 簡(jiǎn)稱并行仿真,是對(duì)大規(guī)模復(fù)雜系統(tǒng)進(jìn)行建模與仿真研究的重要方法,它通過(guò)將復(fù)雜系統(tǒng) 的多個(gè)組成部分——仿真對(duì)象(或仿真實(shí)體)分發(fā)到多個(gè)處理器上并行執(zhí)行,獲得運(yùn)行加速 比,提高仿真運(yùn)行效率。并行離散事件仿真采用離散事件驅(qū)動(dòng)建模方式,對(duì)組成復(fù)雜系統(tǒng)的 各類仿真對(duì)象(Simulation Object)進(jìn)行建模,仿真對(duì)象間通過(guò)事件調(diào)度實(shí)現(xiàn)數(shù)據(jù)通信和 交互,整個(gè)仿真系統(tǒng)通過(guò)并行事件處理得以推進(jìn)。并行仿真采用處理器虛擬化的思想,在仿 真部署時(shí)將仿真對(duì)象實(shí)例分發(fā)到具體的物理計(jì)算節(jié)點(diǎn),因此可以在不同的并行計(jì)算環(huán)境或 不同數(shù)目的計(jì)算節(jié)點(diǎn)上執(zhí)行。并行仿真內(nèi)核能夠自動(dòng)將不同計(jì)算節(jié)點(diǎn)上仿真對(duì)象間的事件 調(diào)度轉(zhuǎn)換為遠(yuǎn)程消息發(fā)送,而同一計(jì)算節(jié)點(diǎn)上的事件調(diào)度則通過(guò)共享內(nèi)存方式直接復(fù)制到 待處理事件列表,其開(kāi)銷要小于遠(yuǎn)程消息發(fā)送。由于并行仿真所使用的計(jì)算節(jié)點(diǎn)數(shù)目在其 運(yùn)行之前往往是不確定的,所以需要靈活的仿真對(duì)象分發(fā)方法的支持,達(dá)到既能充分利用 多計(jì)算節(jié)點(diǎn)資源又能高效運(yùn)行仿真的目標(biāo)。由于大規(guī)模復(fù)雜系統(tǒng)中往往包含大量的對(duì)象,數(shù)目成千上萬(wàn),對(duì)象間的交互錯(cuò)綜 復(fù)雜,使得仿真對(duì)象的劃分與分發(fā)成為影響并行仿真運(yùn)行效率的重要因素。首先,由于整 個(gè)并行仿真的執(zhí)行時(shí)間取決于運(yùn)行時(shí)間最長(zhǎng)的計(jì)算節(jié)點(diǎn),各個(gè)計(jì)算機(jī)節(jié)點(diǎn)的計(jì)算負(fù)載需 均衡,即所承載的仿真對(duì)象和事件處理的數(shù)量要大致相等?,F(xiàn)有的一些并行仿真平臺(tái),如 μ sik、SPEEDES, ROSS等,采用的仿真對(duì)象分發(fā)方法有SCATTER、BLOCK、隨機(jī)分發(fā)及用戶自 定義方式。SCATTER方法(也稱輪循方法)按照分牌方式逐個(gè)分發(fā),例如將10個(gè)仿真對(duì)象分 發(fā)到3個(gè)計(jì)算節(jié)點(diǎn),則SCATTER的分發(fā)結(jié)果是[{0,3,6,9},{1,4,7},{2,5,8}],即將0、3、 6、9號(hào)仿真對(duì)象分發(fā)到節(jié)點(diǎn)0,其余依次類推。BLOCK方法是按照分塊方式進(jìn)行仿真對(duì)象的 分發(fā),先將仿真對(duì)象按照編號(hào)劃分成均等的塊,然后進(jìn)行分發(fā)。上例的BLOCK分發(fā)結(jié)果可以 是[{0,1,2}, {3,4, 5}, {6,7,8,9}]。用戶自定義方式則是由仿真用戶負(fù)責(zé)制定仿真對(duì)象分 發(fā)策略,需要在程序中編碼指定。上述方法可統(tǒng)稱為計(jì)算負(fù)載均衡分發(fā)策略。第二,考慮計(jì) 算節(jié)點(diǎn)間的通信開(kāi)銷(100 μ s級(jí))遠(yuǎn)大于節(jié)點(diǎn)內(nèi)部的通信開(kāi)銷(1 μ s級(jí)),相差將近100倍, 因此在盡可能計(jì)算負(fù)載均衡的基礎(chǔ)上還需要考慮最小化節(jié)點(diǎn)間的通信。目前有文獻(xiàn)將仿 真對(duì)象以及各個(gè)對(duì)象間的交互關(guān)系構(gòu)建成一張圖(&aph),利用數(shù)學(xué)圖論中的圖劃分方法 (K-cut算法等)將該圖進(jìn)行K劃分,能夠?qū)⒃搱D大致均等地劃分成K份并盡可能最小化各 部分之間的連接,然后根據(jù)劃分結(jié)果將仿真對(duì)象分發(fā)到K個(gè)計(jì)算節(jié)點(diǎn)上。但圖劃分是一個(gè) 目前公認(rèn)的NP問(wèn)題,在規(guī)模大的情況下難以求得最優(yōu)解。另外,對(duì)于一些特定類型的仿真 應(yīng)用,其計(jì)算和通信負(fù)載會(huì)集中在某些區(qū)域,適合采用按照時(shí)空區(qū)域的劃分方法,例如交通 仿真中繁忙十字路口的計(jì)算量和通信相對(duì)較大,可按照十字路口的空間區(qū)域進(jìn)行劃分。此 外,動(dòng)態(tài)負(fù)載平衡(Dynamic Load Balancing)方法也在并行仿真中得到廣泛應(yīng)用。動(dòng)態(tài)負(fù) 載平衡根據(jù)系統(tǒng)運(yùn)行時(shí)的狀態(tài)信息動(dòng)態(tài)維護(hù)各個(gè)計(jì)算節(jié)點(diǎn)上的負(fù)載,由于需要將仿真對(duì)象 在不同的計(jì)算節(jié)點(diǎn)間進(jìn)行遷移,因此在使用時(shí)需要綜合權(quán)衡遷移的開(kāi)銷代價(jià)與所能獲得的好處,導(dǎo)致其使用難度較大。此類方法可稱為計(jì)算_通信負(fù)載均衡分發(fā)方法。近年來(lái),大量實(shí)證研究發(fā)現(xiàn)復(fù)雜系統(tǒng)中仿真對(duì)象間的連接關(guān)系往往不是隨機(jī)分布 的,而呈現(xiàn)一定的社區(qū)結(jié)構(gòu)(Community Structure)和組織(Organization)特性。一些仿 真對(duì)象會(huì)內(nèi)聚成群體,群體內(nèi)部的連接相對(duì)稠密,不同群體之間的連接則相對(duì)稀疏。這種群 體結(jié)構(gòu)特性一般稱為社區(qū)(Community)。相關(guān)研究表明許多類型的復(fù)雜系統(tǒng)(如社會(huì)系統(tǒng)、 電力系統(tǒng)、信息網(wǎng)絡(luò)、軍事集團(tuán)等)中都包含社區(qū)結(jié)構(gòu),甚至可以說(shuō)社區(qū)特性具有普適性。這 些社區(qū)特性在不同類型的應(yīng)用中具有不同的含義,例如在社會(huì)仿真中社區(qū)可以指家庭、朋 友或某地區(qū)的人口,在生物系統(tǒng)仿真中可以指功能相關(guān)的結(jié)構(gòu)單元,在互聯(lián)網(wǎng)應(yīng)用中可以 指相關(guān)話題的網(wǎng)頁(yè)集合,等等。由于社區(qū)內(nèi)部的連接比較密集,社區(qū)間的連接相對(duì)稀疏,對(duì) 應(yīng)于仿真應(yīng)用,仿真執(zhí)行時(shí)社區(qū)內(nèi)仿真對(duì)象間的交互也會(huì)相對(duì)頻繁,社區(qū)間仿真對(duì)象的交 互較稀少。這在社會(huì)動(dòng)力學(xué)等仿真中特別顯著,例如在傳染病微觀仿真中,病毒攜帶者會(huì)與 其親人、朋友接觸的機(jī)會(huì)多些,導(dǎo)致感染概率相對(duì)較高。所謂社區(qū)發(fā)現(xiàn)是指運(yùn)用社區(qū)發(fā)現(xiàn)算法挖掘出圖中內(nèi)在的社區(qū)結(jié)構(gòu)。社區(qū)發(fā)現(xiàn)方法 的基本思想是根據(jù)節(jié)點(diǎn)的內(nèi)聚性度量,遞歸地對(duì)網(wǎng)絡(luò)圖進(jìn)行合并或分裂,把網(wǎng)絡(luò)圖分解為 嵌套的社區(qū)層次結(jié)構(gòu)。目前在此領(lǐng)域出現(xiàn)了多種社區(qū)發(fā)現(xiàn)方法,如minimum-cut圖劃分方 法、模塊化方法和信息流法等。雖然社區(qū)發(fā)現(xiàn)與圖劃分方法具有一定的相似性,但存在一些 主要區(qū)別(1)圖劃分方法試圖將圖劃分成相等大小的部分,從社區(qū)特性的角度來(lái)看這是 不可取的,因?yàn)閳D中存在的社區(qū)數(shù)目和大小是不確定的。分析發(fā)現(xiàn)許多模型圖中所包含社 區(qū)的大小呈冪率分布,其中。這意味著多數(shù)社區(qū)是小型或中型規(guī)模,但很大規(guī)模的社區(qū)也可 能存在。例如,對(duì)電影演員合作關(guān)系模型進(jìn)行社區(qū)發(fā)現(xiàn),社區(qū)大小(即社區(qū)內(nèi)包含的仿真對(duì) 象個(gè)數(shù))為10-200的社區(qū)共占62. 5%,最大的社區(qū)大小為28385,但數(shù)目稀少。(2)社區(qū)間的 連接并不是圖劃分方法要求的嚴(yán)格最小化,某些大的社區(qū)之間的連接可能較多。總之,由于 圖劃分方法并未考慮到系統(tǒng)中仿真對(duì)象社區(qū)內(nèi)聚合交互的特性,而生硬地追求等份劃分, 因此,基于社區(qū)的模型劃分方法會(huì)比純粹的圖劃分方法更切合實(shí)際,因而也更優(yōu)越,尤其適 合具有社會(huì)特性的大規(guī)模復(fù)雜系統(tǒng)仿真。在復(fù)雜系統(tǒng)建模與仿真研究中,普適的社區(qū)特性將有利于提高復(fù)雜系統(tǒng)并行仿真 的運(yùn)行效率,如何充分利用復(fù)雜系統(tǒng)的社區(qū)特性進(jìn)行并行離散事件仿真對(duì)象分發(fā)是本領(lǐng)域 技術(shù)人員關(guān)注的重要問(wèn)題。國(guó)內(nèi)外尚無(wú)將社區(qū)特性運(yùn)用到并行仿真對(duì)象分發(fā)的報(bào)道。技術(shù)方案本發(fā)明要解決的技術(shù)問(wèn)題是如何利用大規(guī)模復(fù)雜系統(tǒng)的社區(qū)特性而提 出的一種新型并行仿真對(duì)象分發(fā)方法,將社區(qū)特性引入到并行仿真系統(tǒng)中,以社區(qū)為單位 對(duì)仿真系統(tǒng)中仿真對(duì)象進(jìn)行聚合,并根據(jù)計(jì)算節(jié)點(diǎn)數(shù)目對(duì)社區(qū)聚合圖進(jìn)行劃分,由劃分結(jié) 果指導(dǎo)仿真對(duì)象的分發(fā),從而降低社區(qū)內(nèi)的交互開(kāi)銷,提高并行仿真在多個(gè)處理器上的運(yùn) 行效率。本發(fā)明的具體技術(shù)方案是
第一步,從復(fù)雜系統(tǒng)中提取出仿真對(duì)象及仿真對(duì)象間的事件調(diào)度關(guān)系,構(gòu)造復(fù)雜系統(tǒng) 的模型圖^漢幻。模型圖由節(jié)點(diǎn)和連接邊組成,其中節(jié)點(diǎn)代表仿真對(duì)象,連接邊代表仿真 對(duì)象間存在事件調(diào)度關(guān)系。假設(shè)復(fù)雜系統(tǒng)中共有《個(gè)仿真對(duì)象,仿真對(duì)象間共有《條邊,用 Nodei表示模型圖中對(duì)應(yīng)于第i個(gè)仿真對(duì)象的節(jié)點(diǎn),用及敘^表示第A條邊,同時(shí)用及/#。. 表示連接節(jié)點(diǎn)i和j的邊,其中0<i系m,0<j ^m, 0<k ^n0構(gòu)建模型圖的具體步驟如下1. 1新建一個(gè)空的無(wú)向圖,用^漢幻表示,其中Z表示節(jié)點(diǎn)的集合,萬(wàn)表示邊的集合。 用表示節(jié)點(diǎn)集合Z的大小,初始為0 ; 1. 2 令 i 二7 ;
1.3若/ ,執(zhí)行1. 4步;若i) ,說(shuō)明對(duì)所有的仿真對(duì)象處理完畢,模型圖已構(gòu)造完 成,轉(zhuǎn)1. 10步;
1.4對(duì)第i個(gè)仿真對(duì)象構(gòu)建一個(gè)新節(jié)點(diǎn)Afoifei,并將Afoifei加入到圖G漢E)中,S^W ; 1.5令戶7 ;
1.6若7·<·5,執(zhí)行1.7步;若JAs,轉(zhuǎn)1.9步;
1.7判斷仿真對(duì)象i和J之間是否存在事件調(diào)度關(guān)系,若存在事件調(diào)度關(guān)系,向圖 G(V, E)加入一條連接Afoofei和Afoofey的無(wú)向邊及; 1.8 j=j+l,轉(zhuǎn) 1. & 步。1.9 i=i+7,轉(zhuǎn) 1.3 步。1. 10 所有仿真對(duì)象及其關(guān)系都已構(gòu)建完畢,得到模型圖饑E)。第二步,根據(jù)復(fù)雜系統(tǒng)的社區(qū)特性,對(duì)模型圖G漢幻執(zhí)行社區(qū)發(fā)現(xiàn),獲得仿真對(duì) 象間的社區(qū)結(jié)構(gòu)。根據(jù)2002年Girvan和Newman發(fā)表在美國(guó)國(guó)家科學(xué)會(huì)刊第99卷12期 的論文〈〈Community structure in social and biological networks〉〉所提出的社區(qū)發(fā) 現(xiàn)思想,采用不斷移除最高中心度(Centrality)邊的方法對(duì)模型圖G漢幻進(jìn)行社區(qū)發(fā) 現(xiàn),將各個(gè)節(jié)點(diǎn)聚合到不同社區(qū)。其中,采用最短路徑權(quán)重5F (Shortest-path Weight) 作為邊的中心度的估算值,同時(shí)定義社區(qū)發(fā)現(xiàn)所要移除邊的數(shù)目為M fe^M7fe 0M, 1 ^NumEdgesRemove </ ,為達(dá)到較好的社區(qū)發(fā)現(xiàn)效果,Mtfsfe^^Tfeffloi^取值為的 整數(shù)部分。為了不破壞模型圖^漢幻,并不真正將邊移除,而是為圖^漢幻中的邊增加一 個(gè)數(shù)據(jù)域,用于標(biāo)示是否被移除,TfeffiOMi/為1表示已移除,TfeffiOMi/為O表示未移 除。具體步驟如下
2.1 計(jì)算模型圖中所有邊的最短路徑權(quán)重5F值,方法是 2.1.1 令 i二
2. 1. 2 若i系m,進(jìn)行第2. 1. 3步;若i>m,轉(zhuǎn)2. 1. 12步;
2. 1. 3 構(gòu)建一個(gè)空的先入后出的堆棧stack和一個(gè)先入先出的隊(duì)列queue, stack和 queue的每個(gè)元素均為節(jié)點(diǎn),節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)包括4個(gè)域距離i/ (表示該節(jié)點(diǎn)與根節(jié)點(diǎn)的 距離,初始值為-1)、權(quán)重『(節(jié)點(diǎn)的權(quán)重值,初始值為0)、父節(jié)點(diǎn)集合(存放該節(jié)點(diǎn)的 父節(jié)點(diǎn),初始為空)和關(guān)聯(lián)值論(衡量節(jié)點(diǎn)與父節(jié)點(diǎn)間的關(guān)聯(lián)強(qiáng)度,初始值為0)。 分別用符號(hào)dx、wx, Iistx, dependency,新、Nodex的距離、權(quán)重、父節(jié)點(diǎn)集合以及關(guān)聯(lián)值。設(shè) 置Nodei的距離(Ii=O,權(quán)重Wi=I,并將Nodei加到queue中;
2. 1. 4判斷卯we是否為空,若非空,執(zhí)行2. 1. 5步;否則轉(zhuǎn)2. 1. 7步; 2. 1. 5從隊(duì)列queue的頭部移出一個(gè)節(jié)點(diǎn),設(shè)為^并將該節(jié)點(diǎn)壓入堆棧stack ; 2. 1.6 對(duì)模型圖G漢幻中^的每一個(gè)鄰居節(jié)點(diǎn)力,判斷是否式謂,若為真,則將辦加 入到隊(duì)列卯^ze中,并設(shè)置o^/力;再判斷式是否等于<",若為真,則將節(jié)點(diǎn)力的權(quán)重增 加 ,即wb=wb乂,并將r加入到b的父節(jié)點(diǎn)集合Iistb中;轉(zhuǎn)2. 1. 4步;
2. 1.7判斷Siad是否為空,若非空,執(zhí)行2. 1.8步;否則轉(zhuǎn)2. 1. 11步; 2.1.8從堆棧^sted頂部移除一個(gè)節(jié)點(diǎn),設(shè)為 ;2. 1. 9依次對(duì)節(jié)點(diǎn)u父節(jié)點(diǎn)集合中的每一個(gè)父節(jié)點(diǎn)/進(jìn)行如下處理 2. 1. 9. 1根據(jù)節(jié)點(diǎn)u的關(guān)聯(lián)值及節(jié)點(diǎn)/與《的權(quán)重比值,更新節(jié)點(diǎn)f的關(guān)聯(lián)值
dependencyf
dependencyf= dependencyf+(wf/wJ X (1. O+dependencyJ ;
2. 1. 9. 2 從圖以K Ε)中查找連接節(jié)點(diǎn)/和u的邊及敘& ,更新邊及敘& 的最短 路徑權(quán)重5F值
SWfu = SWf+(wf/wJ*(l. 0+dependency); 2. 1. 10 轉(zhuǎn) 2. 1. 7 步; 2. 1. 11 i=i+l,雉 2. 1. 2 步; 2.1.12結(jié)束,得到所有邊的最短路徑權(quán)重5F值。
2. 2不斷從圖以K E)中選擇最大5F值的邊,將該邊的Removed設(shè)為1,標(biāo)記為移 除,并重新計(jì)算模型圖桃E)中所有邊的最短路徑權(quán)重5F值,進(jìn)行社區(qū)發(fā)現(xiàn),直到移除的 NumEdgesRemove。具體步驟如下
2.2.1令 U=I ;2.2.2若 ii NumEdgesRemo2· 2· 3 步;若 H>NumEdgesRemove, 2. 3 步;2.2.3 k=l, 1=1 ’ value=0. 0 ;2.2.4若左</ ,轉(zhuǎn)2. 2. 5步;若^>/ ,則轉(zhuǎn)2. 2. 7步;2.2.5判斷 SiV1^vaIue,如為真,則 l=k, value=SWk ;2.2.6k=k+l ’ 銪 2. 2. 2 步;2.2.7將第7邊的Removed設(shè)為1,標(biāo)記為移除;2.2.8采用2. 1步的方法重新計(jì)算模型圖中所有邊的最短路徑權(quán)重SW值,ii=ii+l,
轉(zhuǎn)2. 2. 2步;
2.3 提取并輸出模型圖G漢幻中的社區(qū)及社區(qū)所包含的節(jié)點(diǎn)。由于已經(jīng)連續(xù)移 除了具有最高M(jìn)m^NumEdgesRemove條邊,使整個(gè)圖分割成多個(gè)互不連通的子圖。這些子 圖就是通過(guò)社區(qū)發(fā)現(xiàn)結(jié)果得到的社區(qū),用c表示所發(fā)現(xiàn)社區(qū)的個(gè)數(shù),用Cb〃 p表示第β個(gè)社 區(qū)。輸出模型圖“K Ε)中每個(gè)節(jié)點(diǎn)Afoifei UKi 及其所屬的社區(qū)號(hào)Coimp {0<p ^c), 第二步結(jié)束。第三步根據(jù)第二步發(fā)現(xiàn)的社區(qū),構(gòu)造帶權(quán)重的社區(qū)聚合圖C作E,)。每個(gè) 社區(qū)都是模型圖^漢幻的子圖,用分^^胃表示社區(qū)/7的大小,即該社區(qū)所包含的節(jié)點(diǎn)數(shù) 目。將社區(qū)內(nèi)部節(jié)點(diǎn)間的連接稱為社區(qū)內(nèi)部連接,不同社區(qū)內(nèi)節(jié)點(diǎn)間的連接稱為社區(qū)間連 接。采用廣,萬(wàn)。表示社區(qū)聚合圖,用艙論。和^^\分別表示圖^作~萬(wàn)。中 的節(jié)點(diǎn)和邊,用Weight,p和Weight,pq表示節(jié)點(diǎn)和邊的權(quán)重.。具體步驟如下
3.1 新建一個(gè)空的帶權(quán)重?zé)o向圖C作。^入其中廣和^分別代表社區(qū)聚合 圖中的社區(qū)集合和社區(qū)間邊的集合。3.2 構(gòu)建社區(qū)聚合圖的節(jié)點(diǎn)及其權(quán)重,其中節(jié)點(diǎn)的權(quán)重為該社區(qū)的大小。具 體步驟如下
3.2.1令p=l;
3.2.2若ρ 執(zhí)行 3. 2. 3 步;若轉(zhuǎn) 3. 3 步;
3.2.3對(duì)應(yīng)于社區(qū) O /),新建一個(gè)節(jié)點(diǎn)將 iVorfe'p 加入到圖(;‘(V', E')中;3.2.4轉(zhuǎn) 3. 2. 2 步;
3.3構(gòu)建社區(qū)聚合圖的邊及其權(quán)重,其中社區(qū)間邊的權(quán)重為該兩社區(qū)間的總連接數(shù)。具 體步驟如下
3.3.1 令左二
3. 3.2若 Κλ,執(zhí)行 3. 3. 3 步;若 1Λ ,轉(zhuǎn) 3. 4 步;
3. 3. 3對(duì)模型圖tf爾E)中的邊及敘i,查找其兩個(gè)連接節(jié)點(diǎn),設(shè)為徹論/;并查詢?cè)搩晒?jié)點(diǎn)所處的社區(qū),設(shè)為Cornnp和Co.q ;
3. 3.4若Commp等同于O /^,表明Tfocfei和Tfocfej'位于同一個(gè)社區(qū),F(xiàn)o^el為社區(qū)內(nèi)部的連接邊,轉(zhuǎn)3. 3. 7步;若Co_與Coymg不相等,
則價(jià)^為Co_和Conrnq不同社區(qū)間的連接邊,執(zhí)行3. 3. 5步;
3. 3. 5判斷社區(qū)Coimp和Coimq在社區(qū)聚合圖中對(duì)應(yīng)的節(jié)點(diǎn)Node,p與Node,。間是否 已存在邊及/沢,pq,若存在,則Weight’Pi=Weight’Pi+l SK^f 3. 3. 7 ;若不存在,則執(zhí)行3. 3. 6 ; 3. 3. 6此時(shí)Afoife %與Node’ q間不存在邊,向圖C ^^ E')中增加一條連接Afoife ^ 與 Node,v 的邊 Edge,Ρ ,并設(shè)置 Weigh t,p=l,執(zhí)行 3.3.7;
3. 3. 7k=k+l ’轉(zhuǎn) 3. 3. 2 步;
3.4 結(jié)束,得到社區(qū)聚合圖C作E,)。第四步對(duì)社區(qū)聚合圖C廣)進(jìn)行f劃分。根據(jù)并行仿真所使用的計(jì)算機(jī) 節(jié)點(diǎn)數(shù)K,采用明尼蘇達(dá)州大學(xué)1995年Karypis等人的技術(shù)報(bào)告《METIS: Unstructured Graph Partitioning and Sparse Matrix Ordering System》提出的基于多層次#劃分的 METIS方法,將帶權(quán)重的、無(wú)向社區(qū)聚合圖^YC E,)進(jìn)行f劃分,得到f個(gè)等份,用 表示,其中0<h ^K0劃分結(jié)果中的每個(gè)等份包含1至多個(gè)社區(qū)節(jié)點(diǎn),可以用集合形式表示 % Parth= {Node ’ a, Node'b,…,Afoife,力其中社區(qū)節(jié)點(diǎn)的標(biāo)號(hào)和社區(qū)的個(gè)數(shù)依據(jù)METIS 劃分而定。用Weightparth表示第A等份的總權(quán)重,為該等份內(nèi)所含社區(qū)的大小之和,即Wei ghtParth=VeightNode, +WeightNode,b +··· + VeightN0de,cO 同一等份內(nèi)部的社區(qū)節(jié)點(diǎn)間的連接邊 為內(nèi)部邊,不同等份中社區(qū)節(jié)點(diǎn)之間的邊為等份間連接邊。METIS方法能有效地使各個(gè)等份 的總權(quán)重大致均衡,并最小化所有等份間連接邊的權(quán)重和,能夠有效保證各個(gè)計(jì)算機(jī)節(jié)點(diǎn) 上的負(fù)載相對(duì)均衡,并且盡可能地降低計(jì)算節(jié)點(diǎn)間的通信量。第五步根據(jù)第四步社區(qū)聚合圖G,(V', Ε 的f劃分結(jié)果進(jìn)行并行仿真對(duì)象的 分發(fā),將劃分的各個(gè)等份指定分發(fā)到具體的計(jì)算節(jié)點(diǎn),并將分發(fā)結(jié)果寫入并行仿真對(duì)象分 發(fā)參數(shù)文件。具體過(guò)程是先將所劃分的等份作^^唯一對(duì)應(yīng)到第力-7號(hào)計(jì)算節(jié)點(diǎn)上(計(jì)算節(jié) 點(diǎn)從0開(kāi)始編號(hào)),相應(yīng)地將等份內(nèi)部的社區(qū)節(jié)點(diǎn),如、徹論\、徹論\等分發(fā)到所分 配的計(jì)算節(jié)點(diǎn),再以社區(qū)為基本單位,將社區(qū)所包含的仿真對(duì)象都指定分發(fā)到該計(jì)算節(jié)點(diǎn), 最后將分發(fā)結(jié)果寫入并行仿真對(duì)象分發(fā)參數(shù)文件。并行仿真對(duì)象分發(fā)文件的內(nèi)容包括計(jì)算 節(jié)點(diǎn)數(shù)目A仿真對(duì)象類型、社區(qū)、社區(qū)內(nèi)仿真對(duì)象以及它們分發(fā)的目標(biāo)計(jì)算節(jié)點(diǎn)。仿真對(duì)象 分發(fā)參數(shù)文件的主體部分采用層次式的格式,按照各種仿真對(duì)象類型、各個(gè)社區(qū)、社區(qū)內(nèi)部 的各個(gè)仿真對(duì)象進(jìn)行組織,指定各個(gè)仿真對(duì)象所屬的計(jì)算節(jié)點(diǎn)。并行仿真在啟動(dòng)時(shí)通過(guò)讀 取該仿真對(duì)象分發(fā)參數(shù)文件,在多個(gè)計(jì)算節(jié)點(diǎn)上生成該分發(fā)方法所指定的仿真對(duì)象。本發(fā)明的核心是將社區(qū)特性引入到并行仿真系統(tǒng)中,基于社區(qū)發(fā)現(xiàn)和社區(qū)聚合圖 劃分實(shí)現(xiàn)并行離散事件仿真對(duì)象的分發(fā),采用本發(fā)明可達(dá)到以下有益效果
1.由于充分考慮了大規(guī)模復(fù)雜系統(tǒng)中仿真對(duì)象間的社區(qū)特性,首先利用
社區(qū)發(fā)現(xiàn)方法將將聯(lián)系緊密的仿真對(duì)象內(nèi)聚成社區(qū),再在社區(qū)聚合的層次上進(jìn)行f等份劃分,能夠根據(jù)并行仿真所使用的計(jì)算資源獲得仿真對(duì)象分發(fā)結(jié)果,是一種高效的并行仿真 對(duì)象分發(fā)方法;
2.由于以社區(qū)為基本的分發(fā)單元,考慮了仿真對(duì)象間事件調(diào)度的社區(qū)特 性,能夠有效地平衡多計(jì)算節(jié)點(diǎn)的計(jì)算負(fù)載和通信負(fù)載,尤其對(duì)于大規(guī)模微觀虛擬社會(huì)、復(fù) 雜網(wǎng)絡(luò)、軍事作戰(zhàn)、社會(huì)動(dòng)力學(xué)(如疾病/民意/流言傳播)等仿真應(yīng)用,能夠顯著提高并行 仿真的運(yùn)行效率;
3.本方法簡(jiǎn)單易用,適用范圍較廣,在信息擴(kuò)散、流言傳播等測(cè)試應(yīng)用上的 性能要優(yōu)于已有的計(jì)算負(fù)載均衡分發(fā)方法和計(jì)算-通信負(fù)載均衡分發(fā)方法;
4.本方法以社區(qū)為單位對(duì)不同類型的仿真對(duì)象指定所分配的計(jì)算節(jié)點(diǎn),并 行仿真在初始化階段通過(guò)讀取并行仿真對(duì)象分發(fā)參數(shù)文件在各個(gè)計(jì)算節(jié)點(diǎn)生成相應(yīng)的仿 真對(duì)象實(shí)例。這種方式能夠有效滿足大規(guī)模并行仿真初始化需求。
圖1是并行離散事件仿真對(duì)象分發(fā)示意圖2是采用本發(fā)明進(jìn)行并行離散事件仿真對(duì)象分發(fā)的示例圖3是本發(fā)明的總體流程圖4是本發(fā)明第一步構(gòu)建模型圖的流程圖5是本發(fā)明第二步社區(qū)發(fā)現(xiàn)流程圖6是本發(fā)明第三步生成帶權(quán)重社區(qū)聚合圖的流程圖。
具體實(shí)施例方式
圖1是并行離散事件仿真對(duì)象分發(fā)示意圖。復(fù)雜系統(tǒng)中的仿真對(duì)象及仿真對(duì)象間的事 件調(diào)度關(guān)系可以用帶節(jié)點(diǎn)和邊的圖進(jìn)行表示,其中節(jié)點(diǎn)代表仿真對(duì)象,邊代表兩仿真對(duì)象 之間存在事件調(diào)度關(guān)系,如圖1箭頭上部分所示。并行仿真通過(guò)將仿真對(duì)象分發(fā)到多個(gè)處 理器計(jì)算節(jié)點(diǎn)上并行執(zhí)行,獲取并行加速比,提高仿真運(yùn)行效率。由于并行仿真應(yīng)用在運(yùn)行 前所使用的計(jì)算節(jié)點(diǎn)數(shù)往往不確定,而且不同的分發(fā)方法會(huì)影響整個(gè)并行仿真的計(jì)算和通 信負(fù)載的均衡,因此需要靈活高效的仿真對(duì)象分發(fā)機(jī)制的支持。許多復(fù)雜系統(tǒng)具有社區(qū)結(jié) 構(gòu)特性,仿真對(duì)象會(huì)按照連接的密集程度進(jìn)行聚合,形成社區(qū),如圖1中圓圈部分所示。以 社區(qū)為基礎(chǔ),仿真對(duì)象間的連接可分為社區(qū)內(nèi)部連接和社區(qū)之間的連接,分別用實(shí)線和虛 線表示。以社區(qū)為單位將仿真對(duì)象向多個(gè)計(jì)算節(jié)點(diǎn)進(jìn)行分發(fā),其分發(fā)結(jié)果如圖1箭頭下部 分所示。社區(qū)之間的連接會(huì)依據(jù)劃分結(jié)果可能形成計(jì)算節(jié)點(diǎn)間的消息發(fā)送,而社區(qū)內(nèi)部的 連接則采用計(jì)算節(jié)點(diǎn)內(nèi)部的共享內(nèi)存通信。由于現(xiàn)有的SCATTER、BL0CK、隨機(jī)法、以及圖劃 分等分發(fā)方式未考慮復(fù)雜系統(tǒng)中普適存在的社區(qū)特性,不能充分滿足大規(guī)模復(fù)雜系統(tǒng)并行 仿真的需求,而基于社區(qū)特性的并行仿真對(duì)象分發(fā)則是一種高效的、切合實(shí)際的方法。圖2是采用本發(fā)明進(jìn)行并行仿真對(duì)象分發(fā)方法的示例圖。圖2以一簡(jiǎn)單的模型圖 為示例,描述了基于社區(qū)特性的并行仿真對(duì)象分發(fā)方法的主要過(guò)程圖(a)將復(fù)雜系統(tǒng)中 相對(duì)獨(dú)立的各個(gè)部分抽象為仿真對(duì)象,這些仿真對(duì)象以及它們之間的事件調(diào)度關(guān)系構(gòu)成模 型圖G漢E)。圖中帶數(shù)字標(biāo)號(hào)的節(jié)點(diǎn)代表對(duì)應(yīng)的仿真對(duì)象,節(jié)點(diǎn)間的連接邊表示兩仿真對(duì) 象間存在事件調(diào)度關(guān)系,例如仿真對(duì)象1分別與仿真對(duì)象3、6間存在事件調(diào)度關(guān)系。圖(b) 是對(duì)模型圖^漢幻進(jìn)行社區(qū)發(fā)現(xiàn)的結(jié)果,位于不同形狀塊上的仿真對(duì)象分別聚合成社區(qū), 例如仿真對(duì)象{1,3,6,7}、{8,9,10,11,12,13,14}等分別形成社區(qū)。社區(qū)的主要特征在于社區(qū)內(nèi)部的連接密度往往大于社區(qū)之間的連接。圖(C)將模型圖^漢幻中的社區(qū)進(jìn)一步 抽象成帶權(quán)重的社區(qū)聚合圖C作^ Α。,其中圓形節(jié)點(diǎn)表示對(duì)應(yīng)的社區(qū),圓形節(jié)點(diǎn)大小與 社區(qū)大小呈比例縮放,圓形中數(shù)字為社區(qū)編號(hào),方括號(hào)內(nèi)數(shù)字為社區(qū)節(jié)點(diǎn)權(quán)重,連接邊上的 數(shù)字為社區(qū)間連接邊的權(quán)重。例如標(biāo)號(hào)為1的社區(qū)節(jié)點(diǎn)對(duì)應(yīng)于仿真對(duì)象{8,9,10,11,12, 13,14}組成的社區(qū);由于該社區(qū)包含7個(gè)仿真對(duì)象,因此該社區(qū)節(jié)點(diǎn)的權(quán)重設(shè)為7 ;同時(shí)由 于該社區(qū)分別與2、3號(hào)社區(qū)之間有1、2條社區(qū)間連接邊,因此分別賦予兩者之間連接邊的 權(quán)重為1和2。對(duì)聚合圖C作iT)進(jìn)行f劃分,此示例f值為3,將社區(qū)聚合圖劃分成 3份,如圖中虛線所作的分割。社區(qū)1單獨(dú)成一個(gè)等份,社區(qū)2和4、3和5分別組成其余兩 等份。由于^劃分算法的特征,所劃分的各個(gè)等份的總權(quán)重大致相等(此例恰好都為7),而 且分割線劃分的社區(qū)間連接邊的總權(quán)重較小(此例為2+1+1+1+1=6)。圖3是本發(fā)明的總體流程圖,本發(fā)明的流程包括五步
第一步,從復(fù)雜系統(tǒng)中提取出仿真對(duì)象及仿真對(duì)象間的事件調(diào)度關(guān)系,構(gòu)造復(fù)雜系統(tǒng) 的模型圖^漢幻;
第二步,根據(jù)復(fù)雜系統(tǒng)的社區(qū)特性,對(duì)模型圖^漢幻執(zhí)行社區(qū)發(fā)現(xiàn),獲得仿真對(duì)象間 的社區(qū)結(jié)構(gòu);
第三步,根據(jù)第二步發(fā)現(xiàn)的社區(qū),構(gòu)造帶權(quán)重的社區(qū)聚合圖C作E'); 第四步,對(duì)社區(qū)聚合圖C作iT)進(jìn)行f劃分;
第五步,根據(jù)第四步社區(qū)聚合圖C作",E')的f劃分結(jié)果進(jìn)行并行仿真對(duì)象的分發(fā), 將劃分的各個(gè)等份指定分發(fā)到具體的計(jì)算節(jié)點(diǎn),并將分發(fā)結(jié)果寫入并行仿真對(duì)象分發(fā)參數(shù) 文件。圖4是本發(fā)明第一步構(gòu)建模型圖G漢幻的流程圖根據(jù)復(fù)雜系統(tǒng)仿真中仿真對(duì)象 以及仿真對(duì)象間的事件調(diào)度關(guān)系構(gòu)建模型圖,其中節(jié)點(diǎn)表示仿真對(duì)象,邊代表兩仿真對(duì)象 間存在事件調(diào)度關(guān)系。具體步驟是
1.1新建一個(gè)空的無(wú)向圖,用G漢幻表示,其中Z表示節(jié)點(diǎn)的集合,表示邊的集合。 用表示節(jié)點(diǎn)集合Z的大小,初始為0 ; 1. 2 令 i 二7 ;
1.3若/ ,執(zhí)行1. 4步;若i) ,說(shuō)明對(duì)所有的仿真對(duì)象處理完畢,模型圖已構(gòu)造完 成,轉(zhuǎn)1. 10步;
1.4對(duì)第i個(gè)仿真對(duì)象構(gòu)建一個(gè)新節(jié)點(diǎn)Afoifei,并將Afoifei加入到圖G漢E)中,S^W ; 1.5令戶7 ;
1.6若7·<·5,執(zhí)行1.7步;若JAs,轉(zhuǎn)1.9步;
1.7判斷仿真對(duì)象i和J之間是否存在事件調(diào)度關(guān)系,若存在事件調(diào)度關(guān)系,向圖 G(V, E)加入一條連接Afoofei和Afoofey的無(wú)向邊及; 1.8 j=j+l,轉(zhuǎn) 1. & 步。1. 9 iiV7,轉(zhuǎn) 1.3 步。1. 10 所有仿真對(duì)象及其關(guān)系都已構(gòu)建完畢,得到模型圖饑E)。圖5是本發(fā)明第二步社區(qū)發(fā)現(xiàn)流程圖對(duì)模型圖G漢幻采用不斷移除最高中心度 邊的社區(qū)發(fā)現(xiàn)方法,采用最短路徑權(quán)重(SW)估算邊的中心度。主要步驟是
2.1 計(jì)算模型圖中所有邊的最短路徑權(quán)重5F值;2. 2 不斷從圖“K E)中選擇最大5F值的邊,將該邊的Removed設(shè)為1,標(biāo)記為移 除,并重新計(jì)算模型圖饑E)中所有邊的最短路徑權(quán)重5F值,進(jìn)行社區(qū)發(fā)現(xiàn),直到移除的 也數(shù)達(dá)錢 NumEdgesRemove ;
2.3 提取并輸出模型圖G(V,E)中的社區(qū)及社區(qū)所包含的節(jié)點(diǎn)。由于已經(jīng)按照預(yù) immkNuniEdgesRemove移除具有較高中心度的邊,使整個(gè)圖分割成多個(gè)互不連通的子 圖。這些子圖就是通過(guò)社區(qū)發(fā)現(xiàn)結(jié)果得到的社區(qū)。其中,圖(a)是計(jì)算模型圖中所有邊的最短路徑權(quán)重SW值的過(guò)程,具體步驟是 2.1.1 令 i=1;
2. 1. 2 若i≤m,進(jìn)行第2. 1. 3步;若i>m,轉(zhuǎn)2. 1. 12步;
2. 1. 3 構(gòu)建一個(gè)空的先入后出的堆棧stack和一個(gè)先入先出的隊(duì)列queue, stack和 queue的每個(gè)元素均為節(jié)點(diǎn),節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)包括4個(gè)域距離i/ (表示該節(jié)點(diǎn)與根節(jié)點(diǎn)的 距離,初始值為-1)、權(quán)重『(節(jié)點(diǎn)的權(quán)重值,初始值為0)、父節(jié)點(diǎn)集合Bsi (存放該節(jié)點(diǎn)的 父節(jié)點(diǎn),初始為空)和關(guān)聯(lián)值論(衡量節(jié)點(diǎn)與父節(jié)點(diǎn)間的關(guān)聯(lián)強(qiáng)度,初始值為0)。 分別用符號(hào)dx、wx, Iistx, dependency,新、Nodex的距離、權(quán)重、父節(jié)點(diǎn)集合以及關(guān)聯(lián)值。設(shè) 置Nodei的距離(Ii=O,權(quán)重Wi=I,并將Nodei加到queue中;
2. 1. 4判斷卯we是否為空,若非空,執(zhí)行2. 1. 5步;否則轉(zhuǎn)2. 1. 7步; 2. 1. 5從隊(duì)列queue的頭部移出一個(gè)節(jié)點(diǎn),設(shè)為^并將該節(jié)點(diǎn)壓入堆棧stack ; 2. 1.6對(duì)模型圖G漢幻中^的每一個(gè)鄰居節(jié)點(diǎn)力,判斷式謂,若為真,則將力加入到隊(duì) 鞏queue中,并設(shè)置式;再判斷式是否等于<W,若為真,則將節(jié)點(diǎn)辦的權(quán)重增加 , 即 ,乂,并將r加入到b的父節(jié)點(diǎn)集合Iistb中;轉(zhuǎn)2. 1. 4步;
2. 1.7判斷Siad是否為空,若非空,執(zhí)行2. 1.8步;否則轉(zhuǎn)2. 1. 11步; 2.1.8從堆棧^sted頂部移除一個(gè)節(jié)點(diǎn),設(shè)為 ; 2. 1. 9依次對(duì)節(jié)點(diǎn)u父節(jié)點(diǎn)集合中的每一個(gè)父節(jié)點(diǎn)/進(jìn)行如下處理 2. 1. 9. 1根據(jù)節(jié)點(diǎn)u的關(guān)聯(lián)值及節(jié)點(diǎn)/與《的權(quán)重比值,更新節(jié)點(diǎn)f的關(guān)聯(lián)值
dependencyf
dependencyf 二 dependencyf +(wf/wj X (1. O+dependencyJ
2. 1. 9. 2 從圖以K Ε)中查找連接節(jié)點(diǎn)/和u的邊及敘& ,更新邊及敘& 的最短 路徑權(quán)重5F值
SWfu = SWf+(wf/wJ*(l. 0+dependency);
2. 1. 10 轉(zhuǎn) 2. 1. 7 步;
2. 1. 11 i=i+l,雉 2. 1. 2 步;
2.1.12結(jié)束,得到所有邊的最短路徑權(quán)重5F值。圖(b)是第二步中第2. 2,2. 3步的過(guò)程,其中第2步的具體步驟是
2.2.1令 H=I ;
2.2.2若 ii ≤NumEdgesRemove,執(zhí)行 2. 2. 3 步;若 iDNumEdgesRemove,轉(zhuǎn) 2. 3 步;
2.2.3令 k=l,1=1,value=0. O ;
2. 2. 4 若 K≤n,轉(zhuǎn) 2. 2. 4 步;若^>/ ,則轉(zhuǎn) 2. 2. 7 步; 2. 2. 5 判斷 SiV1^vaIue,如為真,則 l=k, value=SWk ; 2.2.6 左功+7,轉(zhuǎn) 2. 2. 2 步;2. 2. 7將第/邊的Removed設(shè)為1,標(biāo)記為移除;
2.2. 8采用2. 1步的方法重新計(jì)算模型圖中所有邊的最短路徑權(quán)重SW值,ii=ii+l, 轉(zhuǎn)2. 2. 2步;
圖6是本發(fā)明第三步生成帶權(quán)重社區(qū)聚合圖的流程圖,具體步驟是 3.1 新建一個(gè)空的帶權(quán)重?zé)o向圖C作。^入其中廣和^分別代表社區(qū)聚合 圖中的社區(qū)集合和社區(qū)間邊的集合。 3.2 構(gòu)建社區(qū)聚合圖的節(jié)點(diǎn)及其權(quán)重,其中節(jié)點(diǎn)的權(quán)重為該社區(qū)的大小。具 體步驟如下
3.2.1令p=l;
3.2.2若/)冬£,執(zhí)行3.2.3步;若/))£,則轉(zhuǎn)3.3步;
3.2.3對(duì)應(yīng)于社區(qū)O /),新建一個(gè)節(jié)點(diǎn)AWe'p.^^i^tpZ&Zeo /),將AWe'p加入到圖C爾。E')中;
3.2.4轉(zhuǎn) 3. 2. 2 步;
3.3構(gòu)建社區(qū)聚合圖的邊及其權(quán)重,其中社區(qū)間邊的權(quán)重為該兩社區(qū)間的總連接數(shù)。具 體步驟如下
3.3.1 令左二
3.3.2若 Κλ,執(zhí)行 3. 3. 3 步;若 1Λ ,轉(zhuǎn) 3. 4 步;
3. 3. 3對(duì)模型圖tf爾E)中的邊及敘i,查找其兩個(gè)連接節(jié)點(diǎn),設(shè)為徹論/;并查詢?cè)搩晒?jié)點(diǎn)所處的社區(qū),設(shè)為Cornnp和Co.q ;
3. 3.4若Commp等同于O /^,表明Tfocfei和Tfocfej'位于同一個(gè)社區(qū),F(xiàn)o^el為社區(qū)內(nèi)部的連接邊,轉(zhuǎn)3. 3. 7步;若Co_與Coymg不相等,
則價(jià)^為Co_和Conrnq不同社區(qū)間的連接邊,執(zhí)行3. 3. 5步;
3. 3. 5判斷社區(qū)Coimp和Coimq在社區(qū)聚合圖中對(duì)應(yīng)的節(jié)點(diǎn)Node,p與Node,。間是否 已存在邊及/沢,pq,若存在,則Weight’Pi=Weight’Pi+l SK^f 3. 3. 7 ;若不存在,則執(zhí)行3. 3. 6 ; 3. 3. 6此時(shí)Afoife %與Node’ q間不存在邊,向圖C ^^ E')中增加一條連接Afoife ^ 與 Node,v 的邊 Edge,Ρ ,并設(shè)置 Weigh t,p=l,執(zhí)行 3.3.7;
3. 3. 7k=k+l ’轉(zhuǎn) 3. 3. 2 步;
3.4 結(jié)束,得到社區(qū)聚合圖f rr, E,)。
1權(quán)利要求
一種基于社區(qū)特性的并行離散事件仿真對(duì)象分發(fā)方法,其特征在于包括以下步驟第一步,從復(fù)雜系統(tǒng)中提取出仿真對(duì)象及仿真對(duì)象間的事件調(diào)度關(guān)系,構(gòu)造復(fù)雜系統(tǒng)的模型圖G(V,E),模型圖G(V,E)由節(jié)點(diǎn)和連接邊組成,其中節(jié)點(diǎn)代表仿真對(duì)象,連接邊代表仿真對(duì)象間存在事件調(diào)度關(guān)系,V表示節(jié)點(diǎn)的集合,E表示邊的集合;復(fù)雜系統(tǒng)中m個(gè)仿真對(duì)象間共有n條邊,用Nodei表示模型圖中對(duì)應(yīng)于第i個(gè)仿真對(duì)象的節(jié)點(diǎn),用Edgek表示第k條邊,同時(shí)用Edgei,j表示連接節(jié)點(diǎn)i和j的邊,其中0<i≤m,0<j≤m,0<k≤n;第二步,根據(jù)復(fù)雜系統(tǒng)的社區(qū)聚合特性,采用不斷移除最高中心度邊的方法對(duì)圖G(V,E)進(jìn)行社區(qū)發(fā)現(xiàn),將各個(gè)節(jié)點(diǎn)聚合到不同社區(qū);采用最短路徑權(quán)重SW作為邊的中心度的估算值,同時(shí)定義社區(qū)發(fā)現(xiàn)所要移除邊的數(shù)目為NumEdgesRemove,1≤NumEdgesRemove≤n,為圖G(V,E)中的邊增加一個(gè)數(shù)據(jù)域Removed,用于標(biāo)示是否被移除,Removed為1表示已移除,Removed為0表示未移除,具體步驟如下第1步,計(jì)算模型圖G(V,E)中所有邊的最短路徑權(quán)重SW值;第2步,不斷從圖G(V,E)中選擇最大SW值的邊,將該邊的Removed設(shè)為1,標(biāo)記為移除,并重新計(jì)算模型圖G(V,E)中所有邊的最短路徑權(quán)重SW值,進(jìn)行社區(qū)發(fā)現(xiàn),直到移除的邊數(shù)達(dá)到NumEdgesRemove;第3步,提取并輸出模型圖G(V,E)中的社區(qū)及社區(qū)所包含的節(jié)點(diǎn),由于已經(jīng)連續(xù)移除了具有最高SW值的NumEdgesRemove條邊,使整個(gè)圖分割成多個(gè)互不連通的子圖,這些子圖就是通過(guò)社區(qū)發(fā)現(xiàn)結(jié)果得到的社區(qū),用c表示所發(fā)現(xiàn)社區(qū)的個(gè)數(shù),用Commp表示第p個(gè)社區(qū),輸出模型圖G(V,E)中每個(gè)節(jié)點(diǎn)Nodei及其所屬的社區(qū)號(hào)Commp,0<i≤m,0<p≤c;第三步根據(jù)第二步發(fā)現(xiàn)的社區(qū),構(gòu)造帶權(quán)重的社區(qū)聚合圖G’(V’, E’),V’和E’分別代表社區(qū)聚合圖中的社區(qū)集合和社區(qū)間邊的集合,節(jié)點(diǎn)的權(quán)重為社區(qū)的大小,邊的權(quán)重為兩社區(qū)間仿真對(duì)象的連接邊數(shù);用SizeCommp表示社區(qū)p的大小,即該社區(qū)所包含的節(jié)點(diǎn)數(shù)目,將社區(qū)內(nèi)部節(jié)點(diǎn)間的連接稱為社區(qū)內(nèi)部連接,不同社區(qū)內(nèi)節(jié)點(diǎn)間的連接稱為社區(qū)間連接;用Node’p和Edge’pq分別表示社區(qū)聚合圖G’(V’, E’)中的節(jié)點(diǎn)和邊,用Weight’p和Weight’pq表示節(jié)點(diǎn)和邊的權(quán)重;具體步驟如下3.1 新建一個(gè)空的帶權(quán)重?zé)o向圖G’(V’, E’);3.2 構(gòu)建社區(qū)聚合圖的節(jié)點(diǎn)及其權(quán)重,具體步驟如下3.2.1 令p=1;3.2.2 若p≤c,執(zhí)行3.2.3步;若p>c,轉(zhuǎn)3.3步;3.2.3 對(duì)應(yīng)于社區(qū)Commp,新建一個(gè)節(jié)點(diǎn)Node’p,Weight’p=SizeCommp,將Node’p加入到圖G’(V’, E’)中;3.2.4 p=p+1,轉(zhuǎn)3.2.2步;3.3 構(gòu)建社區(qū)聚合圖的邊及其權(quán)重,具體步驟如下3.3.1 令k=1;3.3.2 若k≤n,執(zhí)行3.3.3步;若k>n,轉(zhuǎn)3.4步;3.3.3 對(duì)模型圖G(V,E)中的邊Edgek,查找其兩個(gè)連接節(jié)點(diǎn),設(shè)為Nodei和Nodej;并查詢?cè)搩晒?jié)點(diǎn)所處的社區(qū),設(shè)為Commp和Commq;3.3.4 若Commp等同于Commq,表明Nodei和Nodej位于同一個(gè)社區(qū),Edgek為社區(qū)內(nèi)部的連接邊,轉(zhuǎn)3.3.7步;若Commp與Commq不相等,則Edgek為Commp和Commq不同社區(qū)間的連接邊,執(zhí)行3.3.5步;3.3.5 判斷社區(qū)Commp和Commq在社區(qū)聚合圖中對(duì)應(yīng)的節(jié)點(diǎn)Node’p與Node’q間是否已存在邊Edge’pq,若存在,則Weight’pq=Weight’pq+1,執(zhí)行3.3.7;若不存在,則執(zhí)行3.3.6;3.3.6 此時(shí)Node’p與Node’q間不存在邊,向圖G’(V’, E’)中增加一條連接Node’p與Node’q的邊Edge’pq,并設(shè)置Weight’pq=1,執(zhí)行3.3.7;3.3.7 k=k+1,轉(zhuǎn)3.3.2步;3.4 結(jié)束,得到社區(qū)聚合圖G’(V’, E’);第四步采用基于多層次K劃分的METIS方法對(duì)社區(qū)聚合圖G’(V’, E’)進(jìn)行K劃分,得到K個(gè)等份,用Parth表示,其中0<h≤K;劃分結(jié)果中的每個(gè)等份包含1至多個(gè)社區(qū)節(jié)點(diǎn),用集合形式表示為Parth={Node’a, Node’b, … , Node’c},其中社區(qū)節(jié)點(diǎn)的標(biāo)號(hào)和社區(qū)的個(gè)數(shù)依據(jù)METIS劃分結(jié)果而定;用WeightParth表示第h等份的總權(quán)重,為該等份內(nèi)所含社區(qū)的大小之和,即WeightParth=WeightNode’a+WeightNode’b+...+ WeightNode’c;同一等份內(nèi)部的社區(qū)節(jié)點(diǎn)間的連接邊為內(nèi)部邊,不同等份中社區(qū)節(jié)點(diǎn)之間的邊為等份間連接邊;第五步根據(jù)第四步社區(qū)聚合圖G’(V’, E’)的K劃分結(jié)果進(jìn)行并行仿真對(duì)象的分發(fā),將劃分的各個(gè)等份指定分發(fā)到具體的計(jì)算節(jié)點(diǎn),并將分發(fā)結(jié)果寫入并行仿真對(duì)象分發(fā)參數(shù)文件,具體過(guò)程是先將所劃分的等份Parth唯一對(duì)應(yīng)到第h 1號(hào)計(jì)算節(jié)點(diǎn)上,相應(yīng)地將等份內(nèi)部的社區(qū)節(jié)點(diǎn)等分發(fā)到所分配的計(jì)算節(jié)點(diǎn),再以社區(qū)為基本單位,將社區(qū)所包含的仿真對(duì)象都指定分發(fā)到該計(jì)算節(jié)點(diǎn),同時(shí)將分發(fā)結(jié)果寫入并行仿真對(duì)象分發(fā)參數(shù)文件。
2.如權(quán)利要求1所述的基于社區(qū)特性的并行離散事件仿真對(duì)象分發(fā)方法,其特征在于 所述構(gòu)造復(fù)雜系統(tǒng)的模型圖^漢幻的具體步驟如下·2. 1)新建一個(gè)空的無(wú)向圖,用G漢幻表示,其中Z表示節(jié)點(diǎn)的集合,萬(wàn)表示邊的集合, 用表示節(jié)點(diǎn)集合Z的大小,初始為0 ;·2.2)令i二·2.3)若i < ,執(zhí)行 2. 4)步;若 i) ,轉(zhuǎn) 2. 10)步;·2. 4) 對(duì)第i個(gè)仿真對(duì)象構(gòu)建一個(gè)新節(jié)點(diǎn)徹論,.,并將A^fei加入到圖G漢幻中, s=s+l ;·2.5)令戶7;·2.6)若j· 執(zhí)行 2. 7)步;若 JAs,轉(zhuǎn) 2. 9)步;·2. 7) 判斷仿真對(duì)象i和J之間是否存在事件調(diào)度關(guān)系,若存在事件調(diào)度關(guān)系,向圖 G(V, E)加入一條連接Afoofei和Afoofey的無(wú)向邊及;·2.8)j^JV7,轉(zhuǎn) 2. 6)步;·2.9)iiV7,轉(zhuǎn) 2. 3)步;·2.10)所有仿真對(duì)象及其關(guān)系都已構(gòu)建完畢,得到模型圖G漢幻。
3.如權(quán)利要求1所述的基于社區(qū)特性的并行離散事件仿真對(duì)象分發(fā)方法,其特征在于 所述計(jì)算模型圖中所有邊的最短路徑權(quán)重5F值方法是·3. 1)令 i=l ;·3. 2)若i< ,進(jìn)行第3. 3)步;若i) ,轉(zhuǎn)3. 12)步;·3. 3)構(gòu)建一個(gè)空的先入后出的堆棧Wad和一個(gè)先入先出的隊(duì)列卯we,Wad和 卯we的每個(gè)元素均為節(jié)點(diǎn),節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)包括4個(gè)域距離A初始值為-1 ;權(quán)重『,初始值為0 ;父節(jié)點(diǎn)集合BW,存放該節(jié)點(diǎn)的父節(jié)點(diǎn),初始為空;衡量節(jié)點(diǎn)與父節(jié)點(diǎn)間的關(guān)聯(lián)強(qiáng) 度的關(guān)聯(lián)值cbpendency,初始值為0 ;分別用符號(hào)dx、wx, Iistx, dependency,穌Nodex的距 離、權(quán)重、父節(jié)點(diǎn)集合以及關(guān)聯(lián)值,設(shè)置徹論,.的距離‘=0,權(quán)重Wj=I,并將Mvfei加到queue 中;;3. 4)判斷是否為空,若非空,執(zhí)行3. 5步;否則轉(zhuǎn)3. 7步;;3. 5)從隊(duì)列q_e的頭部移出一個(gè)節(jié)點(diǎn),設(shè)為^并將該節(jié)點(diǎn)壓入堆棧stack ;;3.6)對(duì)模型圖G漢幻中^的每一個(gè)鄰居節(jié)點(diǎn)力,判斷是否式⑶,若為真,則將力加入 到隊(duì)列卯中,并設(shè)置;再判斷式是否等于 若為真,則將節(jié)點(diǎn)辦的權(quán)重增加 wv,即 ,乂,并將r加入到b的父節(jié)點(diǎn)集合Iistb中;轉(zhuǎn)3. 4步;;3.7)判斷^sted是否為空,若非空,執(zhí)行3.8)步;否則轉(zhuǎn)3. 11)步;;3.8)從堆棧^sted頂部移除一個(gè)節(jié)點(diǎn),設(shè)為 ;;3. 9)依次對(duì)節(jié)點(diǎn)u父節(jié)點(diǎn)集合中的每一個(gè)父節(jié)點(diǎn)/進(jìn)行如下處理;3. 9.1) 根據(jù)節(jié)點(diǎn)u的關(guān)聯(lián)值及節(jié)點(diǎn)f與υ的權(quán)重比值,更新節(jié)點(diǎn)f的關(guān)聯(lián)值 dependencyf dependencyf= dependencyf+ (wf/wj X (1. O+dependencyJ ;;3. 9. 2) 從圖以K Ε)中查找連接節(jié)點(diǎn)/和u的邊及敘& ,更新邊及敘& 的最短路 徑權(quán)重5F值SWfu = SWf+(wf/wJ*(l. 0+dependency);;3. 10)轉(zhuǎn) 3. 7)步;;3.11) i=i+l,轉(zhuǎn)?>. 2)步;;3.12)結(jié)束,得到所有邊的最短路徑權(quán)重5F值。
4.如權(quán)利要求1所述的基于社區(qū)特性的并行離散事件仿真對(duì)象分發(fā)方法,其特征在于 所述不斷從圖^漢幻中移除最大5F值的邊,并重新計(jì)算模型圖G漢幻中所有邊的最短路 徑權(quán)重5F值,進(jìn)行社區(qū)發(fā)現(xiàn)的方法是;4. 1)令 H=I ;;4. 2)若 H NumEdgesRemove, ^A^iT 4· 3)步;若 ii>NumEdgesRemove,結(jié)束;;4.3)令左二7,1=1,value=0.O ;;4.4)若Κ/ ,轉(zhuǎn)4. 5)步;若P/ ,則轉(zhuǎn) 4. 7)步;;4.5)判斷SWPvalue,如為真,則 /動(dòng),Value=SWk ;;4.6)1=^7,轉(zhuǎn) 4. 2)步;;4. 7)將第/邊的Removed設(shè)為1,標(biāo)記為移除;;4.8)重新計(jì)算模型圖中所有邊的最短路徑權(quán)重SW值,ii=ii+l,轉(zhuǎn)(2)步。
5.如權(quán)利要求1所述的基于社區(qū)特性的并行離散事件仿真對(duì)象分發(fā)方法,其特征在 于所述并行仿真對(duì)象分發(fā)文件的內(nèi)容包括計(jì)算節(jié)點(diǎn)數(shù)目K、仿真對(duì)象類型、社區(qū)、社區(qū)內(nèi)仿 真對(duì)象以及它們分發(fā)的目標(biāo)計(jì)算節(jié)點(diǎn);仿真對(duì)象分發(fā)參數(shù)文件的主體部分采用層次式的格 式,按照各種仿真對(duì)象類型、各個(gè)社區(qū)、社區(qū)內(nèi)部的各個(gè)仿真對(duì)象進(jìn)行組織,指定各個(gè)仿真 對(duì)象所屬的計(jì)算節(jié)點(diǎn)。
6.如權(quán)利要求1所述的基于社區(qū)特性的并行離散事件仿真對(duì)象分發(fā)方法,其特征在于 WdNumEdgesRemove取值為10%Xn的整數(shù)部分。
全文摘要
本發(fā)明公開(kāi)了一種基于社區(qū)特性的并行離散事件仿真對(duì)象分發(fā)方法,目的是提出一種新型并行仿真對(duì)象分發(fā)方法,提高并行仿真在多個(gè)處理器上的運(yùn)行效率。技術(shù)方案是構(gòu)造復(fù)雜系統(tǒng)的模型圖G(V,E),提取出仿真對(duì)象及仿真對(duì)象間的事件調(diào)度關(guān)系;采用不斷移除最高中心度邊的方法對(duì)圖G進(jìn)行社區(qū)發(fā)現(xiàn),將各個(gè)節(jié)點(diǎn)聚合到不同社區(qū);構(gòu)造帶權(quán)重的社區(qū)聚合圖G’(V’,E’);采用多層次K劃分方法對(duì)G’(V’,E’)進(jìn)行K劃分;根據(jù)K劃分結(jié)果進(jìn)行并行仿真對(duì)象的分發(fā),將劃分的各個(gè)等份指定分發(fā)到具體的計(jì)算節(jié)點(diǎn)。采用本發(fā)明能根據(jù)并行仿真所使用的計(jì)算資源獲得仿真對(duì)象分發(fā)結(jié)果,能有效平衡多計(jì)算節(jié)點(diǎn)的計(jì)算負(fù)載和通信負(fù)載,顯著提高并行仿真的運(yùn)行效率。
文檔編號(hào)G06F9/46GK101944045SQ20101051005
公開(kāi)日2011年1月12日 申請(qǐng)日期2010年10月18日 優(yōu)先權(quán)日2010年10月18日
發(fā)明者侯波南, 劉剛, 劉步權(quán), 姚益平, 彭紹亮, 曲慶軍, 蔣志文, 鄢來(lái)斌, 陳莉麗 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)