• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      生成有限拓撲的負載均衡算法*

      2019-10-10 03:02:14陳建兵梁立葉志霞
      關(guān)鍵詞:共享內(nèi)存并行算法歸類

      陳建兵, 梁立, 葉志霞

      (1.云南師范大學 信息管理處,云南 昆明 650500;2.云南師范大學 信息學院,云南 昆明 650500)

      1 引 言

      有限拓撲是指有限集合的拓撲:由n元集合X的子集生成的集族T滿足:

      (1)可行性:Φ,X∈T

      (2)封閉性:對任意的A,B∈T都有A∪B∈T且A∩B∈T

      則稱集族T是X的一個拓撲.

      1元集合X的拓撲只有1個:{Φ,X};2元集合有4個拓撲,3元集合有29個拓撲,4元集合有355個拓撲,5元集合有6 942個拓撲,6元集合有209 527個拓撲,……,10元集合有8 977 053 873 043個拓撲[1]……

      在早期,用枚舉法生成拓撲并計數(shù)[2],計算量相當龐大.n元集合的所有集族有22n個,即使只枚舉滿足可行性的集族,也需要檢驗22n-2個集族的封閉性,計算量仍然龐大.而且拓撲占有集族的比例相當?shù)蚚3],說明枚舉法做了大量的無效計算.趙婷婷根據(jù)文獻[4]的構(gòu)造定理,得到了文獻[5]和[6]的遞推算法,大大減少了無效的計算,但算法的時間復雜度仍然是非多項式的.拓撲數(shù)量的下界[7]是2n2/4也表明了這是一個NP難問題,即使完全有效的計算,計算量也很驚人的.因此,構(gòu)造并行算法很有必要,而負載均衡技術(shù)是有效發(fā)揮并行計算的關(guān)鍵.

      2 遞推算法

      2.1 有關(guān)概念

      設(shè)n元集合Xn的拓撲T={Φ,A1,…,Ak,Xn},則

      (1)拓撲長度:拓撲中非空真子集的個數(shù),即|T-{Φ,Xn}|,取值范圍0~2n-2.平庸拓撲的長度最小為0,離散拓撲的長度最大為2n-2.

      (2)拓撲元數(shù):拓撲中所有非空真子集的并所含元素個數(shù),即|∪A∈T-{Φ,Xn}A|,取值范圍0~n.只有平庸拓撲的拓撲元數(shù)為0.稱Smax=∪A∈T-{Φ,Xn}A為T的最大子集.

      如果拓撲元數(shù)小于n,則稱T為α拓撲;如果拓撲元數(shù)等于n,則稱T為β拓撲.

      (3)直和運算:設(shè)Xn的集族J={J1,J2,…,Jm},x∈Xn,則J?{x} ={J1∪{x},J2∪{x},…,Jm∪{x}}稱為J與x的直和運算,簡記為J?x.

      2.2 遞推算法

      n元集合Xn={x1,x2,…,xn} 的所有拓撲由n-1元集合Xn-1的每一個拓撲生成[5-6].對每一個n-1元集合的拓撲T={Φ,A1,…,Ak,Xn-1},由下面T1-T5五步產(chǎn)生n元集合的拓撲(新拓撲):

      T1:T1=T∪{Xn}

      T2:T2=T∪(T?xn)

      T3: 對每一個Ai∈T-{Φ,Xn-1},T3=T∪(J?xn),其中J={Aj|Ai?Aj,Aj∈T}

      T4: 對每一個Ai∈T-{Xn-1},T4=(T?xn)∪J,其中J={Aj|Ai?Aj,Aj∈T}

      T5:如果∪A∈T-{Φ,Xn-1}A≠Xn-1,則產(chǎn)生T5=(T-{Xn-1})∪{Xn},并計算T6

      計算T6:

      Call max_main(Smax∪{xn},Φ,T5,T5-Xn)

      對每一個Ai∈T5-{Φ,Xn}

      T6=T5∪J,其中J={Aj|Ai?Aj,Aj∈T5-{Φ,Xn}}⊕xn

      Call max_main(Smax∪{xn},Ai∪{xn},T6,J)

      下面的過程max_main是計算T6的一個子例程:

      procedure max_main(Smax,Smain,Told,J)

      {

      C=Xn-Smax

      對每一個C1∈2C,C1≠Φ

      D=J?C1?xn={D1,……,Dh},其中Di=Ji∪C1∪{xn},Di≠Xn

      對每一個Di∈D

      ifDi>Smain

      G=Told∪H,其中H={Dj|Di?Dj,Dj∈D}

      如果G是拓撲

      把G賦給T6

      Call max_main(Smax∪Di,Di,T6,J∪H)

      }

      對每一個n-1元集合的拓撲T,在T1-T2每一步只產(chǎn)生一個新拓撲;T3-T4會產(chǎn)生多個新拓撲;T6是在產(chǎn)生T5之后才計算(只有T是α拓撲才產(chǎn)生一個T5,也才會計算T6).

      對每一個n-1元集合的拓撲T產(chǎn)生新拓撲的任務都是獨立的,所以算法并行化是很容易的.分布式內(nèi)存并行計算的加速比很高(MPI易于實現(xiàn)),對每一個空閑的CPU都可以立即分配一個新的T,然后獨立完成T1-T6步;而共享內(nèi)存的并行計算存在多個計算任務等待的情況(主要是第T6步的計算量差異較大),按照α拓撲進行分類等待的時間會大大減少 (OpenMP易于實現(xiàn)共享內(nèi)存的并行算法) .

      這個算法的時間復雜度比早期的一些算法有了很大的改進,計算量幾乎就是拓撲數(shù)量,只有T6的計算有冗余.

      3 負載均衡算法

      上述的遞推算法T1-T5每一步之間是相互獨立的,沒有耦合,它們只依賴n-1元集合的拓撲T,容易實現(xiàn)算法的并行計算.但是,每一個T所需要計算的時間不同,T1-T5每一步所花的時間差異很大,所以并行計算的負載均衡很重要.下面7種并行計算方法主要考慮負載均衡的問題:

      (1)對每一個T,用5個CPU分別計算T1-T5.顯然,T1-T2容易計算;T3-T4計算時間與T的長度有關(guān);如果T是α拓撲那么計算T5之后還需要計算T6,計算時間與T的長度和拓撲元數(shù)都有關(guān)系,如果T不是α拓撲就不需要計算T5.顯然,5個步驟的計算量很不均衡.

      (2)假設(shè)有CPUs個CPU,把T1-T5合并起來視為一個函數(shù)f(T).讀取CPUs個T之后再讓每個T分配一個CPU調(diào)用f(T)實現(xiàn)并行計算.根據(jù)(1)的分析,每一個T的長度和拓撲元數(shù)的不同,調(diào)用f(T)所需要的計算時間差異也很大.每個T的結(jié)構(gòu)不同而導致每個CPU的計算量很不均衡.

      (3)把所有的T歸類.拓撲元數(shù)相同且拓撲長度也相同的T歸為一類.把同一類CPUs個T同時調(diào)度CPUs個CPU,最后剩余的T做一次善后處理.因為n-1元集合的拓撲數(shù)量很大,把它們同時放在內(nèi)存是不現(xiàn)實的,而且各類拓撲分布零散不容易歸類,所以這是一種理想方法,難以實現(xiàn).下面的三種方法是基于這種理想方法而逐步改進的.

      (4) 把α拓撲和β拓撲交叉計算.設(shè)兩個函數(shù)α(T)和β(T),α(T)包含了T1-T5的計算,β(T) 包含了T1-T4的計算.如果T的拓撲元數(shù)小于n-1則調(diào)用給α(T), 否則調(diào)用β(T).α拓撲和β拓撲可能交叉出現(xiàn),這是一種容易實現(xiàn)的并行算法.不同的T調(diào)用β(T) 的計算量比較相近,但是α(T) 的計算任務差異很大,因此負載也很不均衡.

      (5)改進第(4)種方法,把α拓撲和β拓撲分開計算.對n-1元的所有拓撲掃描兩次:第一次處理n-1元的α拓撲,第二次處理n-1元的β拓撲.實驗表明,這種方法比前面幾種方法在負載均衡的性能上有了明顯的改善,但是拓撲元數(shù)差別很大的兩個α拓撲,它們的計算時間相差也很大.

      (6)改進第(5)種方法,按拓撲元數(shù)歸類,仍然采用兩次掃描.用一個二維數(shù)組Tα[n-1][CPUs] 緩存α拓撲,當某一個拓撲元數(shù)i存夠了CPUs個T,立即把Tα[i](i=0,1,…,n-2)分配給CPUs個CPU,調(diào)用α(T)并行計算.類似,用一個一維數(shù)組Tβ[CPUs] 緩存β拓撲,當存夠了CPUs個T就分配CPUs個CPU調(diào)用β(T)并行計算.

      方法(6)無論是數(shù)組Tα還是Tβ都沒有考慮拓撲長度歸類的問題.事實上,由于拓撲長度的取值范圍比較大,而且按長度分布的拓撲比較稀疏,按長度歸類是很難實現(xiàn)的.影響計算量的主要因素是拓撲元數(shù),也就是α(T)中T5步的計算是影響計算量的主要因素.

      (7)分配CPUs個CPU,每個進程完成了T1-T5的全部計算之后,不等待其他進程而直接讀取新的T,直到全部T處理結(jié)束.

      方法(7)可以使分配的CPU長期處于高利用狀態(tài),但存在兩個負擔:一是每個CPU全程負責一個T的遞推,在讀取新數(shù)據(jù)的時候需要“互斥”處理;二是由于每個T所需時間差異很大,在任務結(jié)束前,可能導致長時間等待某個進程結(jié)束才完成整個任務.實驗發(fā)現(xiàn),把β拓撲放到最后處理確實有明顯的效果,原因是在任務結(jié)束前不需要計算T6.因此方法(7)具有非常好的負載均衡性能.

      4 算法實驗

      在上面討論的七種并行算法中,計算結(jié)果都一樣,不一樣的是算法的計算時間.不同的計算時間是由負載均衡的性能決定的.方法(1)和(2)的負載極不均衡,方法(3)難以實現(xiàn),方法(5)是方法(4)的改進.因此,在本節(jié)中只給出方法(5)-(7)的實驗數(shù)據(jù),可以看到這三種方法逐步趨于較好的負載均衡狀態(tài).

      用OMP共享內(nèi)存并行程序設(shè)計[8],使用64個CPU對方法(5)-(7)進行實驗.在相同的云計算環(huán)境下,方法(5)-(7)的計算時間對照如表1.從實驗數(shù)據(jù)可以看出方法(7)的計算時間有大幅度的減少,說明從方法(5)到方法(7)的改進是有效的.

      表1 幾種并行計算時間對照表

      從圖1-圖3可以看出,方法(7)的計算過程比較穩(wěn)定,CPU的使用率較高.總體而言無論從計算時間還是計算過程的穩(wěn)定性的角度分析,方法(7)的負載均衡性能基本趨于最佳狀態(tài).

      圖1 方法(5)的運行記錄截圖

      圖2 方法(6)的運行記錄截圖

      圖3 方法(7)的運行記錄截圖

      5 結(jié) 論

      上述算法和實驗中,除了拓撲長度和拓撲元數(shù)對負載均衡有較大影響外,每一類數(shù)據(jù)使用CPU的個數(shù)對負載均衡影響也不小.

      方法(5)-(7)是基于數(shù)據(jù)歸類的思想而實現(xiàn)負載均衡的.實驗表明是可行而且非常有效的.如果再動態(tài)調(diào)整CPU數(shù),會使算法的負載均衡性能達到更佳的狀態(tài).方法(7)不需要考慮算法的耦合度,是比較普適性的方法.

      另外,如果用文件存儲n-1元集合的拓撲數(shù)據(jù),數(shù)據(jù)量很大,存為CPU個文件比較好:一是讀寫數(shù)據(jù)相對快,二是每一個線程單獨讀或?qū)懸粋€文件,不需要解決互斥的問題.對同一個CPU,先處理α拓撲之后緊接著處理β拓撲,因為處理α拓撲比β拓撲更花時間,如果順序顛倒,很有可能線程之間需要等待才能全部結(jié)束,尤其是共享內(nèi)存的并行計算的算法這一點更重要.

      猜你喜歡
      共享內(nèi)存并行算法歸類
      電表“對”與“錯”歸類巧掌握
      地圖線要素綜合化的簡遞歸并行算法
      通過QT實現(xiàn)進程間的通信
      Happiness through honorable actions
      基于PCI總線的多處理器協(xié)同機制研究
      科技風(2017年20期)2017-07-10 18:56:06
      分式方程應用題歸類解說
      基于GPU的GaBP并行算法研究
      QNX下PEX8311多路實時數(shù)據(jù)采集的驅(qū)動設(shè)計
      電子世界(2014年21期)2014-04-29 06:41:36
      基于GPU的分類并行算法的研究與實現(xiàn)
      一種高效RTAI 共享內(nèi)存管理層的研究與實現(xiàn)*
      卓资县| 来宾市| 宣化县| 托克逊县| 阿勒泰市| 什邡市| 威远县| 安图县| 柳林县| 剑河县| 正镶白旗| 万安县| 辉县市| 津南区| 沅江市| 吉木萨尔县| 上犹县| 冕宁县| 天全县| 岐山县| 平度市| 昌宁县| 湘阴县| 泾阳县| 涞源县| 武冈市| 克山县| 济南市| 墨竹工卡县| 龙泉市| 东安县| 土默特右旗| 卓资县| 九江县| 余姚市| 翁牛特旗| 河北区| 布拖县| 清丰县| 盐山县| 潮安县|