專利名稱:一種單指令集異構(gòu)多核系統(tǒng)靜態(tài)任務調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及基于多目標優(yōu)化遺傳算法(multi-objective optimization geneticalgorithm)的一種單指令集異構(gòu)多核系統(tǒng)靜態(tài)任務調(diào)度方法,屬于計算機系統(tǒng)結(jié)構(gòu)技術(shù)領(lǐng)域。
背景技術(shù):
云計算的興起使數(shù)據(jù)中心的能耗快速增長,然而能耗并沒有得到有效利用。單指令集異構(gòu)多核處理器是近年提出的一種新型體系結(jié)構(gòu),與同構(gòu)多核處理器相比,該處理器具有更好的性能功耗比,但同時給任務調(diào)度帶來了巨大的挑戰(zhàn)。調(diào)度問題具有復雜性、多約束性等特點,是組合優(yōu)化問題中的NP完全問題,采用窮舉法來搜索最優(yōu)調(diào)度是不現(xiàn)實的。啟發(fā)式算法具有較好的時間復雜度和在特定條件下獲得近優(yōu)解的能力,但啟發(fā)式算法是局部尋優(yōu),無法保證解的質(zhì)量,研究人員開始嘗試其他 搜索算法,如遺傳算法、模擬退火算法、粒子群算法等,其中遺傳算法應用最為廣泛,可以在大狀態(tài)空間隨機高效采樣和搜索,并很快收斂到最優(yōu)解或近優(yōu)解,能很好的解決NP完全問題,在任務調(diào)度等很多領(lǐng)域都得到了應用。遺傳算法是模擬生物在自然環(huán)境中的遺傳和進化過程而形成的一種自適應全局優(yōu)化概率搜索算法,E. S. H Hou首次將遺傳算法應用于多處理器任務調(diào)度。異構(gòu)多核處理器的優(yōu)勢在于性能功耗比,通常情況下,性能和功耗是一對矛盾,高性能就意味著高功耗。評價異構(gòu)多核處理器調(diào)度算法的優(yōu)劣要同時看性能和功耗兩個方面,這是典型的多目標優(yōu)化(Multi-Objective Optimization)問題,本發(fā)明使用多目標優(yōu)化遺傳算法尋找異構(gòu)多核環(huán)境下最優(yōu)的靜態(tài)任務調(diào)度方案。本發(fā)明的創(chuàng)新點有兩個方面,一是針對現(xiàn)有的高度值方法確定任務執(zhí)行順序和依賴關(guān)系存在的嚴重不足,提出使用先序關(guān)系矩陣來確定任務執(zhí)行的先后順序并給出了運算模式,二是將染色體編碼結(jié)構(gòu)中表示任務先后順序的基因位從一般算法中定義的全局排序改為沒有依賴關(guān)系的兩個任務之間的局部順序,使種群初始化時的有效個體所占比例變?yōu)?br>
100% O
發(fā)明內(nèi)容
I、發(fā)明目的本發(fā)明提供了一種單指令集異構(gòu)多核系統(tǒng)靜態(tài)任務調(diào)度方法。這種方法使用局部排序表征無依賴關(guān)系的兩個任務的執(zhí)行順序,使種群初始化效率和有效個體大大提聞,使用先序關(guān)系矩陣來確定任務的執(zhí)行順序,克服了傳統(tǒng)高度值方法存在的嚴重不足。本方法能擴大最優(yōu)個體搜索范圍,在種群規(guī)模足夠大時,可以找到高度值方法漏掉的部分最優(yōu)解,從而得到更優(yōu)的調(diào)度序列。對同樣的任務集而言,使用本方法可以使整個任務集的完成時間更短、功耗更低,實現(xiàn)節(jié)能降耗的目的。2、技術(shù)方案
2. I問題描述設(shè)異構(gòu)多核系統(tǒng)由分布在不同處理器上的多個處理器核組成C=IC1, C2,…,CJ,工作負載已分解為一系列線程級任務T= IT1, T2,…,TJ,η和m分別為處理器核個數(shù)和任務個數(shù)。該任務分配模型可以用七元組表示(C,Τ,Θ, Ψ, Ω,Ε,Λ)。Θ是一個mXn的執(zhí)行時間矩陣,其元素θ ^表示任務Ti在處理器核Cj上的執(zhí)行時間,與同構(gòu)多核系統(tǒng)不同,異構(gòu)多核系統(tǒng)中同一個任務在不同類型核上的執(zhí)行時間不同。因此需要用一個矩陣來表示,假設(shè)每個任務的執(zhí)行時間都是預知的。在計算處理器核的功耗時,只考慮兩種狀態(tài),有任務運行和無任務運行。當有任務運行時,以動態(tài)功耗為主,與時鐘頻率和電壓相關(guān);沒有任務運行時,以靜態(tài)功耗為主。
Ψ是一個mXm的通信延遲矩陣,其元素Vij表示任務Ti與Tj之間的通信延遲。任務之間的通信延遲與它們之間的傳輸數(shù)據(jù)量有關(guān),還與它們所在的處理器核的相對位置有關(guān)。Ω是一個mXn的任務分配矩陣,ω ij=l表示任務Ti被分配到處理器核Cj上,否則,ω i j—O。E是任務依賴關(guān)系圖中的有向邊集?!碩i,Tj> e E表示在任務Ti沒有完成之前,任務L不能執(zhí)行,即Ti為L的直接前驅(qū),Tj為Ti的直接后繼。A是一個mXm的任務先序關(guān)系矩陣,其中的λ u表示任務Ti與Tj之間的約束關(guān)系,定乂如下
if<T T,> e EA flif<T,,T,:: el':( I )
0otherwise任務的先序關(guān)系矩陣表示任務之間的依賴關(guān)系,這是保證調(diào)度結(jié)果正確的關(guān)鍵?,F(xiàn)有技術(shù)普遍使用高度值來確定任務執(zhí)行的先后順序。定義如下
.[iOifpred{T)~0、
即') = |i + max,, (HiJk)) Othmvist( 2 )其中,H(Ti)表示Ti的高度值,Pred(Ti)表示任務Ti的前驅(qū)結(jié)點集合。H(Ti)的定義只是給出了得到調(diào)度有效解的一個充分條件,然而它并不是一個必
要條件,根據(jù)該定義不能得到問題的所有有效解,張聰為此給出了一個擴展定義
I max" , JHTt)= 0、
Cji f) = If ο \
' j Ininj- , G(T;: ) I olhenvise'其中,G(Ti)表示Ti的高度值,Succ(Ti)表示任務Ti的后繼結(jié)點集合。根據(jù)公式
(2)和(3)就得到了 DAG圖中每個結(jié)點的兩個高度值H(Ti)和G(Ti),分別表示每個任務可能取得的最小高度值和最大高度值。定義邪(1\)=^11(1011101(1\),6(1\))為任務Ti的實際高度值,其是介于H(Ti)和G(Ti)之間的隨機整數(shù)。如果處理器核上的k個任務的高度值滿足HG(T1)彡HG(T2)彡…彡HG(Tk),則符合此約束關(guān)系的調(diào)度序列為有效調(diào)度序列。本發(fā)明發(fā)現(xiàn),使用高度值來表述任務之間的依賴關(guān)系并不嚴格,比如,如果DAG圖由多個不連通的子圖構(gòu)成,即同時有多個不相關(guān)的程序同時運行,每個子圖的任務之間是沒有約束關(guān)系的,此時根據(jù)高度值來決定調(diào)度順序顯然不合理;再如,即使對一個子圖的兩個任務而言,高度值小的任務與高度值大的任務也并非一定存在約束關(guān)系。圖I和圖2中任務旁邊標注的數(shù)字是該任務的高度值,前者是H(Ti),后者是G(Ti)。從圖I可以看到,T2的高度值為1,T5的高度值為2,依據(jù)高度值定義,T2必須在T5之前執(zhí)行,但實際上T2和T5之間并沒有約束關(guān)系,只要T3 (無論在哪個核上)執(zhí)行完畢后的輸出數(shù)據(jù)傳遞到T5所在的處理器核,T5就可以執(zhí)行,T2可以在T5之后運行。擴展定義G(Ti)并沒有改變高度值的先天不足,比如圖2中,T2的實際高度值HG (T2)可以取值為O、I、2。如果HG (T2) =0,則T3與T8之間的所有任務必須等T2結(jié)束之后才能運行,實際上除T7外其余任務與T2并沒有任何約束關(guān)系,如果HG (T2) =2,則T2必須在T1, T3,T5結(jié)束之后才能運行,顯然也不合理。另一方面,如果有兩個處理器核,每個處理器核上的任務都滿足先序關(guān)系,并不意味著某個任務結(jié)束后,該處理器核上緊挨著的下一個任務就能立即運行,仍然要看其它處理器核上與該任務存在依賴關(guān)系的任務是否都已經(jīng)運行結(jié)束,如果還有依賴任務沒有結(jié)束,同樣需要等待,直到它們運行結(jié)束且數(shù)據(jù)傳輸完畢后才能啟動該任務的執(zhí)行。本發(fā)明提出使用先序關(guān)系矩陣替換高度值用于任務依賴關(guān)系的比較。對于圖I所示的DAG圖,其先序關(guān)系矩陣如4. a所示。
權(quán)利要求
1.一種單指令集異構(gòu)多核系統(tǒng)靜態(tài)任務調(diào)度方法,其特征在于該方法具體步驟如下步驟一種群初始化 遺傳算法初始種群的產(chǎn)生有兩種方法,一是沒有任何條件限制,隨機的產(chǎn)生初始種群;二是種群的產(chǎn)生必須滿足一定的要求,在滿足這些條件的前提下再隨機的產(chǎn)生初始種群;根據(jù)具體問題選擇相應的方法; 設(shè)η為處理器數(shù)量,m為總的任務數(shù),當染色體S的u( ·)部分為任務的全局排序時,種群初始化步驟如下 (1)產(chǎn)生一個新的染色體S; (2)初始化染色體S的ν(·)部分,其中的每一個基因位均為隨機數(shù),類型為整數(shù),取值范圍為[O, η-i]; (3)初始化染色體S的u(·)部分,取值為1,2,…,m的一個排列,鑒于全局排序存在的問題,這里在u( ·)部分使用局部排序,用于確定兩個沒有依賴關(guān)系的任務之間的執(zhí)行順序;因此,任何一個隨機序列都是有效的,不需要判斷個體是否有效,種群初始化的過程因此變得簡單; (4)當種群規(guī)模達到設(shè)定值時,退出初始化,否則,轉(zhuǎn)向(I)繼續(xù)產(chǎn)生新個體; 步驟二 計算適應度值 要實現(xiàn)的調(diào)度目標是尋找一個調(diào)度策略,將m個子任務分配到η個處理器核上,合理安排各個子任務的執(zhí)行次序,使得各子任務在滿足依賴關(guān)系圖的約束下,整個任務的完成時間盡量短,功耗盡量低;多目標優(yōu)化遺傳算法不需要像權(quán)重法那樣設(shè)置權(quán)重系數(shù),仍然同單目標優(yōu)化遺傳算法那樣分別計算多個目標的適應度值,采用Pareto方法來判斷一個解是否是非劣解;異構(gòu)多核系統(tǒng)的調(diào)度目標是總的任務完成時間和功耗,因此需要同時計算兩個適應度值;適應度值的計算是在甘特圖的基礎(chǔ)上完成的,甘特圖的生成還要以及執(zhí)行時間矩陣O、通信延遲矩陣Ψ、任務分配矩陣Ω,任務先序關(guān)系矩陣Λ ; 1)任務完成時間 假設(shè)一個有效的調(diào)度策略S,將T中的m個任務分配到η個處理器核上,那么任務Ti在處理器核Cj上的執(zhí)行時間滿足 ) - mux IFinishOlA]j Ji- Iix-Jt I !'Finish(Ti, Cj) =Begin(Ti, Cj) + Θ(5) 公式(5)中,Begin(Ti, Cj)和FinishCTi, Cj)分別表示任務Ti在處理器Cj核上的開始執(zhí)行時刻和結(jié)束執(zhí)行時刻,假設(shè)任務Tk e Pred(Ti)被分配到處理器核(;上;根據(jù)公式(5)得到所有任務的結(jié)束執(zhí)行時刻;某個調(diào)度策略S下的總的任務完成時間為最后一個任務的結(jié)束時間,令Γ (S) =maX (Finish (TpCj)),任務調(diào)度的目標之一是尋找一個調(diào)度策略S,使得Γ⑶最?。? 2)系統(tǒng)能耗模型 處理器核的功耗主要來自三個方面動態(tài)功耗Pdyn、靜態(tài)功耗Pstatie和短路功耗Pshtjrt ;動態(tài)功耗來自處理器核內(nèi)部各元件正常工作時的功耗;靜態(tài)功耗是來自亞閾值漏電流和柵極漏電流產(chǎn)生的功耗;短路功耗是晶體管在邏輯門打開的瞬間產(chǎn)生的功耗;處理器核的功耗主要由Pdyn決定,約占70%,動態(tài)功耗用公式表示為Pdyn=KCV2f,其中,K是晶體管的翻轉(zhuǎn)次數(shù),C是晶體管的裝載電容,f是時鐘頻率,V是供電電壓;隨著工藝的發(fā)展,動態(tài)功耗在降低,使得靜態(tài)功耗所占比重增大;每個處理器核都有一個電壓和頻率成對匹配的離散有限集合,頻率和電壓已知后估算出每個處理器核的動態(tài)功耗P= {Pdyn—o,Pdynj,-,PdynjJ,根據(jù)靜態(tài)功耗與動態(tài)功耗的大致比例關(guān)系,粗略地估算每個處理器核的靜態(tài)功耗P= {P— Pstaticj,…,PstaticJ,暫且忽略短路功耗;當調(diào)度序列確定后,每個處理器核的正常工作時間及空閑時間就確定了,假設(shè)每個處理器核的正常工作時間為Twork- iTwork 0, Twork l,…,TwarkjJ,閑時間為 Tidle-{Tidle—Q, Tidle l,…,TidlejJ,則兀成全部任務所消耗的能量e ,(A>==,};任務調(diào)度的目標之二是尋找一個調(diào)度策略S,使得energy (S)最??; 步驟三選擇算子操作 選擇操作是將種群中優(yōu)秀個體選出,將劣質(zhì)個體淘汰,遺傳算法的選擇操作就是基于個體適應度值的選擇,適應度值大的個體被選中的概率大,適應度值小的個體被淘汰的概率大;常見的選擇方法有隨機遍歷抽樣、局部選擇、錦標賽選擇、輪盤賭選擇;這里使用帶放回即with replacement的二選一錦標賽選擇法;具體流程是在精英種群中隨機抽取兩 個個體,記錄其中適應度高的個體,然后再把它們?nèi)糠呕氐骄⒎N群中,如果選擇N個個體,則重復N次; 步驟四交叉算子操作 交叉算子是為了擴大算法的搜索空間,避免算法過早地收斂于某個局部最優(yōu)解,防止早熟;在用于任務調(diào)度的交叉算子中,要保證任務集不增不減,同時還要保證交叉運算后的調(diào)度序列依然滿足任務之間的先序關(guān)系; 提出交叉算子僅作用于染色體的V( ·)部分,u( ·)部分在種群初始化后不再變化,原因在于任務之間的先后順序是通過任務先序關(guān)系矩陣來保證的,u( ·)部分定義的先后順序只是一種補充;具體算法如下 (1)從種群中隨機選擇個體S; (2)從個體S中隨機選擇兩個任務,Tx和Ty; (3 )如果任務Tx和Ty所在的處理器核不同,即V (X)古V (y),則進行交叉, r(—v),否貝1J,直接轉(zhuǎn)入(4); (4)退出交叉運算; 步驟五變異算子操作 在異構(gòu)多核處理器任務分配中,不能采用傳統(tǒng)的隨機變異操作,變異算子必須保證任務總數(shù)和種類不變、處理器核的范圍也不變;這里的變異算子限定只作用在V( ·)上,相當于將任務遷移;具體算法如下 (1)從種群中隨機選擇個體S; (2)從個體S的v(·)中隨機選擇I個基因位i ; (3)隨機產(chǎn)生一個整數(shù)me
,其中N是處理器核的數(shù)量;(4)令v( · )=m ; (5)退出變異運算。
全文摘要
一種單指令集異構(gòu)多核系統(tǒng)靜態(tài)任務調(diào)度方法,該方法有五大步驟步驟一種群初始化;步驟二計算適應度值;步驟三選擇算子操作;步驟四交叉算子操作;步驟五變異算子操作。本發(fā)明使用局部排序表征無依賴關(guān)系的兩個任務的執(zhí)行順序,使種群初始化效率和有效個體大大提高,使用先序關(guān)系矩陣來確定任務的執(zhí)行順序,克服了傳統(tǒng)高度值方法存在的嚴重不足。本方法能擴大最優(yōu)個體搜索范圍,在種群規(guī)模足夠大時,可以找到高度值方法漏掉的部分最優(yōu)解,從而得到更優(yōu)的調(diào)度序列。對同樣的任務集而言,使用它可以使整個任務集的完成時間更短、功耗更低,實現(xiàn)節(jié)能降耗的目的。
文檔編號G06F9/46GK102866912SQ20121039127
公開日2013年1月9日 申請日期2012年10月16日 優(yōu)先權(quán)日2012年10月16日
發(fā)明者徐遠超, 譚旭, 范東睿, 張 浩, 王達, 宋風龍, 張志敏 申請人:首都師范大學