專利名稱:基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法。
背景技術(shù):
多核處理器是當今以及未來處理器發(fā)展的主要趨勢,單個處理器中所集成的核的數(shù)量已經(jīng)由兩個發(fā)展到四個、八個甚至更多。微機上使用的多核處理器都使用了片上多核處理器架構(gòu),片上多核處理器(Chip Mult1-Processor, CMP)是將多個處理器內(nèi)核集成在一個處理器芯片中,從而提高計算能力。CMP可根據(jù)計算內(nèi)核的對等與否分為同構(gòu)多核和異構(gòu)多核,現(xiàn)在Inter和AMD主推的多核處理器,就是同構(gòu)的多核處理器。高效的通信機制是CMP處理器高性能的重要保障,目前比較主流的片上通信機制主要有兩種,一種是基于總線共享cache結(jié)構(gòu),一種是基于片上互連結(jié)構(gòu)??偩€共享cache結(jié)構(gòu)是指每個CPU內(nèi)核擁有共享的二級或三級cache,用于保存比較常用的數(shù)據(jù),并通過連接核心的總線進行通信。這種系統(tǒng)的優(yōu)點是結(jié)構(gòu)簡單,通信速度較高,缺點是基于總線結(jié)構(gòu)的可擴展性較差;基于片上互連結(jié)構(gòu)是指每個CPU核心具有獨立的處理單元和cache,各個CPU核心通過交叉開關(guān)或片上網(wǎng)絡(luò)等方式連接在一起,各個CPU核心間通過消息通信。這種結(jié)構(gòu)的優(yōu)點是可擴展性好,數(shù)據(jù)帶寬有保證,缺點是硬件結(jié)構(gòu)復雜,且軟件的改動較大。在基于片上互連的同構(gòu)多核結(jié)構(gòu)中,一個程序可以看成是一個任務(wù)集,這些任務(wù)在滿足它們之間存在的優(yōu)先約束和次序約束關(guān)系的前提下,可以并行或串行的執(zhí)行。多核調(diào)度技術(shù)就是如何在滿足一定的性能指標和約束關(guān)系的前提下,將任務(wù)分配到各工作核上有序并行地執(zhí)行,使任務(wù)執(zhí)行總時間得以縮短成為任務(wù)調(diào)度的主要目標。任務(wù)調(diào)度需要通過任務(wù)調(diào)度算法來實現(xiàn),而任務(wù)調(diào)度算法是NP完全的。目前較為具有代表性的多核任務(wù)調(diào)度算法主要有基于任務(wù)復制(Task-Duplication-Base,TDB)方式的DSH,BTDH, PY, CPFD, TDMSCL, ETDS, PPA, IREA等。由于采用任務(wù)復制的方式將加權(quán)有向無環(huán)圖(Directed Acyclic Graph, DAG)轉(zhuǎn)換為只含有join節(jié)點的任務(wù)圖后,join任務(wù)圖與樹狀結(jié)構(gòu)工藝圖可以相互轉(zhuǎn)換;又由于對產(chǎn)品加工樹采用關(guān)鍵路徑法調(diào)度,可以通過優(yōu)先加工關(guān)鍵路徑上的工序縮短產(chǎn)品完成時間,而以往算法沒有考慮任務(wù)圖可以轉(zhuǎn)換為與之對應(yīng)的產(chǎn)品加工樹形式,并通過優(yōu)先調(diào)度關(guān)鍵路徑上的任務(wù)節(jié)點的方式縮短任務(wù)執(zhí)行總時間,因此在任務(wù)完成時間上會有所延遲,同時由于不能根據(jù)處理器內(nèi)核多少調(diào)整調(diào)度序列,因此在處理器內(nèi)核不足時無法進行有效的調(diào)度。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,提聞了基于片上互連的同構(gòu)多核處理器的效率,使任務(wù)圖中每個節(jié)點都能得到充分調(diào)度,使任務(wù)完成時間得以提前,使處理器內(nèi)核充分并行,使內(nèi)核間通信時間得到較好控制,提升了同構(gòu)多核處理器的性能。上述的目的通過以下的技術(shù)方案實現(xiàn)
一種基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,該方法主要包括如下步驟=DAG任務(wù)圖處理模塊,采用任務(wù)復制的方法,將DAG任務(wù)圖中的fork節(jié)點復制給其后繼任務(wù)節(jié)點,形成join結(jié)構(gòu)任務(wù)圖,再進一步將join圖轉(zhuǎn)換為產(chǎn)品加工樹;任務(wù)節(jié)點調(diào)度分配模塊,引入綜合調(diào)度中關(guān)鍵路徑思想,查找廣品加工樹的關(guān)鍵路徑,并優(yōu)先調(diào)度關(guān)鍵路徑上節(jié)點,盡量提前關(guān)鍵路徑上節(jié)點開始執(zhí)行時間;調(diào)度序列調(diào)整優(yōu)化模塊,采用合并相似度最大的調(diào)度序列的方式,將調(diào)度序列合并以使調(diào)度序列數(shù)不大于處理器內(nèi)核數(shù),實現(xiàn)處理器內(nèi)核充分并行處理。所述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,所述的調(diào)度方法具體實施步驟如下
步驟1:遍歷DAG任務(wù)圖,并將任務(wù)圖中fork節(jié)點復制給它的后繼任務(wù)節(jié)點,形成只含有join節(jié)點的任務(wù) 步驟2 :將join任務(wù)圖轉(zhuǎn)換為與之對應(yīng)的產(chǎn)品加工樹;
步驟3:在產(chǎn)品加工樹中計算由根節(jié)點到各葉節(jié)點的路徑長度,找到路徑最長的,作為關(guān)鍵路徑,如路徑長度相同,則找到包含節(jié)點數(shù)最多的,作為關(guān)鍵路徑;
步驟4 :將關(guān)鍵路徑由第一個節(jié)點起,依次加入隊列;
步驟5 :判斷隊列是否為空,如不為空繼續(xù)向下執(zhí)行,否則跳轉(zhuǎn)至步驟14 ;
步驟6 :取隊列中第一個任務(wù)節(jié)點,判斷該節(jié)點入度是否大于1,并從隊列中刪除該節(jié)點,如該任務(wù)節(jié)點入度不大于1,繼續(xù)向下執(zhí)行,否則跳轉(zhuǎn)至步驟8 ;
步驟7 :與緊前節(jié)點序列形成調(diào)度序列,跳轉(zhuǎn)到步驟5 ;
步驟8:判斷不在關(guān)鍵路徑上的緊前節(jié)點序列是否已形成調(diào)度序列,如已形成調(diào)度序列跳轉(zhuǎn)至步驟11 ;否則繼續(xù)向下執(zhí)行;
步驟9 :判斷該序列中是否含有入度大于I的節(jié)點,如果含有入度大于I的節(jié)點繼續(xù)向下執(zhí)行,否則跳轉(zhuǎn)至步驟11 ;
步驟10 :將緊前節(jié)點序列虛擬為一棵產(chǎn)品加工樹,跳轉(zhuǎn)至步驟3 ;
步驟11 :擬合并緊前節(jié)點序列,如果合并后使得該節(jié)點開始時間延遲,繼續(xù)向下執(zhí)行;否則跳轉(zhuǎn)至步驟13 ;
步驟12 :將關(guān)鍵緊前節(jié)點序列與非關(guān)鍵緊前節(jié)點序列分別形成調(diào)度序列,并將節(jié)點分配到使其最早開始執(zhí)行的序列上,跳轉(zhuǎn)到步驟5 ;
步驟13 :合并緊前節(jié)點序列形成調(diào)度序列,跳轉(zhuǎn)到步驟5 ;
步驟14 :判斷產(chǎn)品加工樹中是否還有未調(diào)度節(jié)點,如果有,將該節(jié)點虛擬為一棵產(chǎn)品加工樹并跳轉(zhuǎn)到步驟3 ;否則繼續(xù)向下執(zhí)行;
步驟15 :判斷調(diào)度序列數(shù)是否大于處理器內(nèi)核數(shù),如果是,繼續(xù)向下執(zhí)行;否則跳轉(zhuǎn)到步驟20 ;
步驟16 :將調(diào)度序列分別加入隊列;
步驟17 :依次計算隊列之間的相似度;
步驟18 :查找相似度最大的隊列;
步驟19 :合并相似度最大的隊列,跳轉(zhuǎn)到步驟15 ;
步驟20 :為每個調(diào)度序列分配內(nèi)核;
步驟21 :輸出調(diào)度結(jié)果甘特圖。所述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,所述的根節(jié)點到各葉節(jié)點的路徑長度是路徑上各工序加工時間和節(jié)點間通信時間總和。
所述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,所述的任務(wù)節(jié)點調(diào)度分配模塊中引入綜合調(diào)度中關(guān)鍵路徑策略,并且采用緊前節(jié)點組盡早調(diào)度策略進行關(guān)鍵路徑上節(jié)點調(diào)度。所述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,所述的調(diào)度序列調(diào)整優(yōu)化模塊中采用合并相似度最大策略,根據(jù)處理器內(nèi)核數(shù)對調(diào)度序列數(shù)進行調(diào)整。有益效果1.本發(fā)明通過任務(wù)復制的方式將DAG任務(wù)圖轉(zhuǎn)化為與之相對應(yīng)的產(chǎn)品加工樹;再在產(chǎn)品加工樹中采取使關(guān)鍵路徑上節(jié)點的緊前節(jié)點盡早調(diào)度的方式,使關(guān)鍵路徑上節(jié)點盡早開始執(zhí)行,以縮短任務(wù)執(zhí)行總時間;并采用合并相似度最大的調(diào)度序列的方式,使調(diào)度序列數(shù)不多于處理器內(nèi)核數(shù),實現(xiàn)處理器內(nèi)核充分并行處理。2.本發(fā)明減少處理器內(nèi)核間通信,在基于片上互連的同構(gòu)多核處理器中執(zhí)行一個任務(wù)時,一個任務(wù)節(jié)點執(zhí)行完畢后將生成的數(shù)據(jù)或控制以消息的方式發(fā)給它的后繼任務(wù)節(jié)點,任務(wù)節(jié)點必須等待它的所有前驅(qū)任務(wù)節(jié)點執(zhí)行完成后才能夠執(zhí)行。如任務(wù)節(jié)點與其后繼任務(wù)節(jié)點不在同一內(nèi)核上則需要進行核間通信,采用任務(wù)復制方式對任務(wù)圖進行處理后,使得fork節(jié)點與其后繼節(jié)點可以分配到同一內(nèi)核上執(zhí)行,進而可以減少處理器內(nèi)核間的通信。3.本發(fā)明對任務(wù)圖處理更為充分首次將綜合調(diào)度中的產(chǎn)品加工樹引入多核調(diào)度任務(wù)圖的處理中,產(chǎn)品加工樹是一種呈樹狀結(jié)構(gòu)只是邊的方向與樹相反的任務(wù)圖,在這種任務(wù)圖中每個任務(wù)節(jié)點都可以被虛擬為一棵單獨的產(chǎn)品加工樹。便于對每個節(jié)點進行單獨分析和充分處理,以找到每個節(jié)點的最優(yōu)調(diào)度方式。4.本發(fā)明方法通過任務(wù)復制減少處理器內(nèi)核間的通信時間;通過將任務(wù)圖轉(zhuǎn)換為廣品加工樹以找到關(guān)鍵路徑。關(guān)鍵路徑上的任務(wù)節(jié)點的完成時間決定了任務(wù)完成總時間,節(jié)點必須等待其緊前節(jié)點序列執(zhí)行完后才能開始執(zhí)行。而有些關(guān)鍵路徑上節(jié)點有多個緊前節(jié)點序列,這些序列經(jīng)過任務(wù)復制處理后可能會被擬分配到不同處理器內(nèi)核上執(zhí)行,本技術(shù)通過最大限度合并這種被分配到不同內(nèi)核上的調(diào)度序列到同一內(nèi)核上執(zhí)行的方式來進一步減少通信時間,提前關(guān)鍵路徑上節(jié)點完成時間,以使任務(wù)完成總時間得以縮短。5.本發(fā)明方法處理器充分并行處理,通過合并相似度最大的調(diào)度序列的方式,使調(diào)度序列數(shù)不多于多核處理器內(nèi)核數(shù),每個調(diào)度序列都能夠分配到相應(yīng)的內(nèi)核上處理。解決了當處理器內(nèi)核個數(shù)不充足時,傳統(tǒng)調(diào)度算法無法進行合理的任務(wù)調(diào)度的問題,是對傳統(tǒng)調(diào)度算法的優(yōu)化。6.本發(fā)明方法首先采用任務(wù)復制的方法將DAG任務(wù)圖轉(zhuǎn)換為join結(jié)構(gòu)任務(wù)圖,再通過引入綜合調(diào)度中產(chǎn)品加工樹的方式將join結(jié)構(gòu)任務(wù)圖轉(zhuǎn)換為產(chǎn)品加工樹,并找到關(guān)鍵路徑,然后采用緊前任務(wù)節(jié)點組盡早完成的處理方式,使關(guān)鍵路徑上節(jié)點盡早開始執(zhí)行,縮短任務(wù)總的執(zhí)行時間,并根據(jù)內(nèi)核數(shù)對調(diào)度序列進行調(diào)整,實現(xiàn)多核的充分并行。
附圖1是本發(fā)明的任務(wù)調(diào)度實施結(jié)構(gòu)圖。附圖2是本發(fā)明的DAG任務(wù)圖處理模塊過程圖。附圖3是本發(fā)明的任務(wù)節(jié)點調(diào)度分配模塊過程圖。附圖4是本發(fā)明的序列調(diào)整優(yōu)化模塊過程圖。
附圖5是本發(fā)明的單任務(wù)DAG任務(wù)例。附圖6是本發(fā)明采用任務(wù)復制方式處理的join結(jié)構(gòu)任務(wù)圖例。附圖7是本發(fā)明將join結(jié)構(gòu)任務(wù)圖轉(zhuǎn)換成的產(chǎn)品加工樹圖例。附圖8是本發(fā)明針對附圖5所示任務(wù)圖的調(diào)度結(jié)果甘特圖。附圖9是現(xiàn)有技術(shù)對附圖5所示任務(wù)圖的調(diào)度結(jié)果甘特圖。
具體實施例方式 實施例1 :
一種基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,其特征是該方法主要包括如下步驟DAG任務(wù)圖處理模塊,采用任務(wù)復制的方法,將DAG任務(wù)圖中的fork節(jié)點復制給其后繼任務(wù)節(jié)點,形成join結(jié)構(gòu)任務(wù)圖,再進一步將join圖轉(zhuǎn)換為產(chǎn)品加工樹;任務(wù)節(jié)點調(diào)度分配模塊,引入綜合調(diào)度中關(guān)鍵路徑思想,查找產(chǎn)品加工樹的關(guān)鍵路徑,并優(yōu)先調(diào)度關(guān)鍵路徑上節(jié)點,盡量提前關(guān)鍵路徑上節(jié)點開始執(zhí)行時間;調(diào)度序列調(diào)整優(yōu)化模塊,采用合并相似度最大的調(diào)度序列的方式,將調(diào)度序列合并以使調(diào)度序列數(shù)不大于處理器內(nèi)核數(shù),實現(xiàn)處理器內(nèi)核充分并行處理。實施例2
上述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,所述的調(diào)度方法具體實施步驟如下
步驟1:遍歷DAG任務(wù)圖,并將任務(wù)圖中fork節(jié)點復制給它的后繼任務(wù)節(jié)點,形成只含有join節(jié)點的任務(wù) 步驟2 :將join任務(wù)圖轉(zhuǎn)換為與之對應(yīng)的產(chǎn)品加工樹;
步驟3:在產(chǎn)品加工樹中計算由根節(jié)點到各葉節(jié)點的路徑長度,找到路徑最長的,作為關(guān)鍵路徑,如路徑長度相同,則找到包含節(jié)點數(shù)最多的,作為關(guān)鍵路徑;
步驟4 :將關(guān)鍵路徑由第一個節(jié)點起,依次加入隊列;
步驟5 :判斷隊列是否為空,如不為空繼續(xù)向下執(zhí)行,否則跳轉(zhuǎn)至步驟14 ;
步驟6 :取隊列中第一個任務(wù)節(jié)點,判斷該節(jié)點入度是否大于1,并從隊列中刪除該節(jié)點,如該任務(wù)節(jié)點入度不大于1,繼續(xù)向下執(zhí)行,否則跳轉(zhuǎn)至步驟8 ;
步驟7 :與緊前節(jié)點序列形成調(diào)度序列,跳轉(zhuǎn)到步驟5 ;
步驟8 :判斷不在關(guān)鍵路徑上的緊前節(jié)點序列是否已形成調(diào)度序列,如已形成調(diào)度序列跳轉(zhuǎn)至步驟11 ;否則繼續(xù)向下執(zhí)行;
步驟9 :判斷該序列中是否含有入度大于I的節(jié)點,如果含有入度大于I的節(jié)點繼續(xù)向下執(zhí)行,否則跳轉(zhuǎn)至步驟11;
步驟10 :將緊前節(jié)點序列虛擬為一棵產(chǎn)品加工樹,跳轉(zhuǎn)至步驟3 ;
步驟11 :擬合并緊前節(jié)點序列,如果合并后使得該節(jié)點開始時間延遲,繼續(xù)向下執(zhí)行;否則跳轉(zhuǎn)至步驟13 ;
步驟12 :將關(guān)鍵緊前節(jié)點序列與非關(guān)鍵緊前節(jié)點序列分別形成調(diào)度序列,并將節(jié)點分配到使其最早開始執(zhí)行的序列上,跳轉(zhuǎn)到步驟5 ;
步驟13 :合并緊前節(jié)點序列形成調(diào)度序列,跳轉(zhuǎn)到步驟5 ;
步驟14 :判斷產(chǎn)品加工樹中是否還有未調(diào)度節(jié)點,如果有,將該節(jié)點虛擬為一棵產(chǎn)品加工樹并跳轉(zhuǎn)到步驟3 ;否則繼續(xù)向下執(zhí)行; 步驟15 :判斷調(diào)度序列數(shù)是否大于處理器內(nèi)核數(shù),如果是,繼續(xù)向下執(zhí)行;否則跳轉(zhuǎn)到步驟20 ;
步驟16 :將調(diào)度序列分別加入隊列;
步驟17 :依次計算隊列之間的相似度;
步驟18 :查找相似度最大的隊列;
步驟19 :合并相似度最大的隊列,跳轉(zhuǎn)到步驟15 ;
步驟20 :為每個調(diào)度序列分配內(nèi)核;
步驟21 :輸出調(diào)度結(jié)果甘特圖。實施例3
上述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,所述的根節(jié)點到各葉節(jié)點的路徑長度是路徑上各工序加工時間和節(jié)點間通信時間總和。上述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,所述的任務(wù)節(jié)點調(diào)度分配模塊中引入綜合調(diào)度中關(guān)鍵路徑策略,并且采用緊前節(jié)點組盡早調(diào)度策略進行關(guān)鍵路徑上節(jié)點調(diào)度。上述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,所述的調(diào)度序列調(diào)整優(yōu)化模塊中采用合并相似度最大策略,根據(jù)處理器內(nèi)核數(shù)對調(diào)度序列數(shù)進行調(diào)整。實施例4
上述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,基于任務(wù)復制的DAG任務(wù)圖處理模塊
單任務(wù)模型通常采用DAG圖來表示,單任務(wù)由多個任務(wù)節(jié)點組成,DAG圖可以很好的表不任務(wù)節(jié)點之間的關(guān)系。fork圖和join圖是DAG任務(wù)圖中兩種最基本、最重要的結(jié)構(gòu)圖。在DAG任務(wù)圖處理模塊中本發(fā)明采用任務(wù)復制的處理方式,將任務(wù)圖中的fork節(jié)點復制給其后繼任務(wù)節(jié)點形成join結(jié)構(gòu)任務(wù)圖,并將join圖進一步轉(zhuǎn)換為綜合調(diào)度中的產(chǎn)品加工樹,為后續(xù)任務(wù)調(diào)度提供保障。實施例5
上述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,基于綜合調(diào)度中關(guān)鍵路徑和緊前任務(wù)節(jié)點組盡早完成的任務(wù)節(jié)點調(diào)度分配模塊
關(guān)鍵路徑上節(jié)點的完成時間對任務(wù)執(zhí)行總時間起決定作用,可以通過優(yōu)先加工關(guān)鍵路徑上的任務(wù)節(jié)點縮短產(chǎn)品完成時間。故本發(fā)明在設(shè)計任務(wù)節(jié)點調(diào)度分配模塊時,采用綜合調(diào)度中查找并優(yōu)先調(diào)度關(guān)鍵路徑上節(jié)點的方式進行處理,而在處理過程中會發(fā)現(xiàn)某些關(guān)鍵路徑上節(jié)點緊前節(jié)點序列不唯一,此時本發(fā)明將采用緊前任務(wù)節(jié)點組盡早完成策略進行調(diào)度,以得到初始調(diào)度序列。在任務(wù)節(jié)點調(diào)度分配過程中,首先在產(chǎn)品加工樹中找出關(guān)鍵路徑,并自關(guān)鍵路徑上第一個節(jié)點起將關(guān)鍵路徑上節(jié)點加入隊列。在調(diào)度過程中如果隊列非空,則取隊列中第一個任務(wù)節(jié)點。如任務(wù)節(jié)點入度為0,則形成只含自身的調(diào)度序列;如任務(wù)節(jié)點入度為1,則將該節(jié)點分配到其緊前節(jié)點形成調(diào)度序列上。如任務(wù)節(jié)點入度大于1,則取其不屬于關(guān)鍵路徑的緊前節(jié)點序列(以下簡稱“非關(guān)鍵緊前序列”),如序列中含有入度大于I的節(jié)點,則將該序列虛擬為一棵產(chǎn)品加工樹進行調(diào)度;如序列中不含有入度大于I的節(jié)點,則判斷序列與屬于關(guān)鍵路徑上的緊前節(jié)點序列(以下簡稱“關(guān)鍵緊前序列”)合并后是否能使該任務(wù)節(jié)點開始時間提前,如果合并后能使得該任務(wù)節(jié)點開始執(zhí)行時間提前或保持不變,則合并兩序列,以提前任務(wù)結(jié)束時間,減少處理器內(nèi)核消耗;如合并后使得該任務(wù)節(jié)點開始執(zhí)行時間延遲,則將該兩節(jié)點的緊前節(jié)點分別形成調(diào)度序列,并將該任務(wù)節(jié)點分配到能使其最早開始的調(diào)度序列上,完成該任務(wù)節(jié)點的分配調(diào)度。重復以上步驟直到隊列為空,此時如果還有未調(diào)度節(jié)點則將該節(jié)點序列虛擬為一棵產(chǎn)品加工樹進行調(diào)度。遞歸執(zhí)行以上調(diào)度過程直到所有任務(wù)調(diào)度完成。實施例6
上述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,基于合并相似度最大序列的調(diào)度序列調(diào)整優(yōu)化模塊
當今比較主流的多核處理器內(nèi)核個數(shù)一般為四個或八個,當采用傳統(tǒng)調(diào)度技術(shù)處理任務(wù)調(diào)度時,難免會出現(xiàn)調(diào)度序列數(shù)多于處理器內(nèi)核數(shù)的情況,本發(fā)明針對這一狀況設(shè)置了基于合并相似度最大序列的調(diào)度序列調(diào)整優(yōu)化模塊。在調(diào)度序列調(diào)整優(yōu)化中,當內(nèi)核數(shù)少于執(zhí)行序列個數(shù)時,因為有些節(jié)點任務(wù)被復制到不同的執(zhí)行序列中,執(zhí)行序列間會出現(xiàn)相同的節(jié)點任務(wù),找出相同節(jié)點任務(wù)最多的兩個執(zhí)行序列,將其合并,最大限度地減少合并后序列的執(zhí)行時間。通過合并的方式就可以減少執(zhí)行序列的數(shù)量以適應(yīng)內(nèi)核需要。當內(nèi)核數(shù)多于執(zhí)行序列數(shù)時,直接為每個執(zhí)行序列分配一個內(nèi)核。整個單任務(wù)的完成時間就是調(diào)度到內(nèi)核上具有最長完成時間的執(zhí)行序列的執(zhí)行時間。實施例7
上述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,本技術(shù)主要針對基于片上互連的同構(gòu)多核處理器下的單任務(wù)模型,單任務(wù)模型通常采用DAG任務(wù)圖來表示,單任務(wù)由多個任務(wù)節(jié)點組成,DAG圖可以很好的表示任務(wù)節(jié)點之間的關(guān)系。DAG圖可以表示為G=(T,E),其中T表示圖中節(jié)點的集合{TJ,節(jié)點T用來表示任務(wù)節(jié)點,Ti表示第i個任務(wù)節(jié)點。節(jié)點的權(quán)值表示任務(wù)節(jié)點的計算時間。E是有向邊的集合{Eu},連接節(jié)點Ti和節(jié)點Tj的有向邊Eu G E表示從任務(wù)節(jié)點Ti到任務(wù)節(jié)點L存在通信關(guān)系,邊的權(quán)值表示任務(wù)節(jié)點間的通信時間。整個任務(wù)圖從起始節(jié)點(沒有前驅(qū)的節(jié)點)開始到終止節(jié)點(沒有后繼的節(jié)點)結(jié)束。一個任務(wù)節(jié)點執(zhí)行完畢后將生成的數(shù)據(jù)或控制以消息的方式發(fā)給它的后繼任務(wù)節(jié)點,圖中的任務(wù)節(jié)點必須等待它的所有前驅(qū)任務(wù)節(jié)點執(zhí)行完成后才能夠執(zhí)行。在同一內(nèi)核上執(zhí)行的任務(wù)節(jié)點間的通信開銷可以忽略不計,不同內(nèi)核上的任務(wù)節(jié)點之間要有較長的通信時間。任務(wù)節(jié)點以非搶占方式執(zhí)行,內(nèi)核上一旦執(zhí)行某個任務(wù)節(jié)點,則直到該任務(wù)節(jié)點執(zhí)行完畢后,這個內(nèi)核才能執(zhí)行其他任務(wù)節(jié)點。實施例8
上述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,如附圖5所示,即為一個單任務(wù)模型的DAG任務(wù)圖,圖中矩形框內(nèi)T用來表示任務(wù)節(jié)點,節(jié)點的權(quán)值表示任務(wù)節(jié)點的計算時間。有向邊表示從任務(wù)節(jié)點Ti到任務(wù)節(jié)點L存在通信關(guān)系,邊的權(quán)值表示任務(wù)節(jié)點間的通信時間。不失一般性其他含有多個開始節(jié)點、多個終止節(jié)點的DAG任務(wù)圖可以通過添加虛擬開始和終止節(jié)點的方式轉(zhuǎn)換成與圖1對應(yīng)的任務(wù)圖。以下將結(jié)合附圖5中的DAG圖來對本技術(shù)的具體執(zhí)行流程進行說明,設(shè)處理器內(nèi)核數(shù)為4,首先將任務(wù)圖中fork任務(wù)節(jié)點分別復制給各自的后繼任務(wù)節(jié)點,通過任務(wù)節(jié)點復制的方式將DAG任務(wù)圖變成join結(jié)構(gòu)任務(wù)圖,得到如附圖6所示的join結(jié)構(gòu)任務(wù)圖。實施例9:
上述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,下面再將join結(jié)構(gòu)任務(wù)圖轉(zhuǎn)換為如附圖7所示的產(chǎn)品加工樹,在加工樹中可得到由葉節(jié)點到根節(jié)點的路徑如表I所
/Jn o表I路徑列表
權(quán)利要求
1.一種基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,其特征是該方法主要包括如下步驟DAG任務(wù)圖處理模塊,采用任務(wù)復制的方法,將DAG任務(wù)圖中的fork節(jié)點復制給其后繼任務(wù)節(jié)點,形成join結(jié)構(gòu)任務(wù)圖,再進ー步將join圖轉(zhuǎn)換為產(chǎn)品加工樹;任務(wù)節(jié)點調(diào)度分配模塊,引入綜合調(diào)度中關(guān)鍵路徑思想,查找產(chǎn)品加工樹的關(guān)鍵路徑,并優(yōu)先調(diào)度關(guān)鍵路徑上節(jié)點,提前關(guān)鍵路徑上節(jié)點開始執(zhí)行時間;調(diào)度序列調(diào)整優(yōu)化模塊,采用合并相似度最大的調(diào)度序列的方式,將調(diào)度序列合并以使調(diào)度序列數(shù)不大于處理器內(nèi)核數(shù),實現(xiàn)處理器內(nèi)核充分并行處理。
2.根據(jù)權(quán)利要求1所述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,其特征是所述的調(diào)度方法具體實施步驟如下 步驟1:遍歷DAG任務(wù)圖,并將任務(wù)圖中fork節(jié)點復制給它的后繼任務(wù)節(jié)點,形成只含有join節(jié)點的任務(wù)圖; 步驟2 :將join任務(wù)圖轉(zhuǎn)換為與之對應(yīng)的產(chǎn)品加工樹; 步驟3 :在產(chǎn)品加工樹中計算由根節(jié)點到各葉節(jié)點的路徑長度,找到路徑最長的,作為關(guān)鍵路徑,如路徑長度相同,則找到包含節(jié)點數(shù)最多的,作為關(guān)鍵路徑; 步驟4 :將關(guān)鍵路徑由第一個節(jié)點起,依次加入隊列; 步驟5 :判斷隊列是否為空,如不為空繼續(xù)向下執(zhí)行,否則跳轉(zhuǎn)至步驟14 ; 步驟6 :取隊列中第一個任務(wù)節(jié)點,判斷該節(jié)點入度是否大于1,并從隊列中刪除該節(jié)點,如該任務(wù)節(jié)點入度不大于1,繼續(xù)向下執(zhí)行,否則跳轉(zhuǎn)至步驟8 ; 步驟7 :與緊前節(jié)點序列形成調(diào)度序列,跳轉(zhuǎn)到步驟5 ; 步驟8 :判斷不在關(guān)鍵路徑上的緊前節(jié)點序列是否已形成調(diào)度序列,如已形成調(diào)度序列跳轉(zhuǎn)至步驟11 ;否則繼續(xù)向下執(zhí)行; 步驟9 :判斷該序列中是否含有有入度大于I的節(jié)點,如果含有入度大于I的節(jié)點繼續(xù)向下執(zhí)行,否則跳轉(zhuǎn)至步驟11; 步驟10 :將緊前節(jié)點序列虛擬為一棵產(chǎn)品加工樹,跳轉(zhuǎn)至步驟3 ; 步驟11 :擬合并緊前節(jié)點序列,如果合并后使得該節(jié)點開始時間延遲,繼續(xù)向下執(zhí)行;否則跳轉(zhuǎn)至步驟13 ; 步驟12 :將關(guān)鍵緊前節(jié)點序列與非關(guān)鍵緊前節(jié)點序列分別形成調(diào)度序列,并將節(jié)點分配到使其最早開始執(zhí)行的序列上,跳轉(zhuǎn)到步驟5 ; 步驟13 :合并緊前節(jié)點序列形成調(diào)度序列,跳轉(zhuǎn)到步驟5 ; 步驟14 :判斷產(chǎn)品加工樹中是否還有未調(diào)度節(jié)點,如果有,將該節(jié)點虛擬為一棵產(chǎn)品加工樹并跳轉(zhuǎn)到步驟3 ;否則繼續(xù)向下執(zhí)行; 步驟15 :判斷調(diào)度序列數(shù)是否大于處理器內(nèi)核數(shù),如果是,繼續(xù)向下執(zhí)行;否則跳轉(zhuǎn)到步驟20 ; 步驟16 :將調(diào)度序列分別加入隊列; 步驟17 :依次計算隊列之間的相似度; 步驟18 :查找相似度最大的隊列; 步驟19 :合并相似度最大的隊列,跳轉(zhuǎn)到步驟15 ; 步驟20 :為每個調(diào)度序列分配內(nèi)核; 步驟21 :輸出調(diào)度結(jié)果甘特圖。
3.根據(jù)權(quán)利要求1或2所述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,其特征是所述的根節(jié)點到各葉節(jié)點的路徑長度是路徑上各エ序加工時間和節(jié)點間通信時間總和。
4.根據(jù)權(quán)利要求1或2或3所述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,其特征是所述的任務(wù)節(jié)點調(diào)度分配模塊中引入綜合調(diào)度中關(guān)鍵路徑策略,并且采用緊前節(jié)點組盡早調(diào)度策略進行關(guān)鍵路徑上節(jié)點調(diào)度。
5.根據(jù)權(quán)利要求1或2或3或4所述的基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法,其特征是所述的調(diào)度序列調(diào)整優(yōu)化模塊中采用合并相似度最大策略,根據(jù)處理器內(nèi)核數(shù)對調(diào)度序列數(shù)進行調(diào)整。
全文摘要
基于關(guān)鍵路徑和任務(wù)復制的單任務(wù)多核調(diào)度方法。目前多核任務(wù)調(diào)度算法,在處理器內(nèi)核不足時無法進行有效調(diào)度。本發(fā)明方法包括DAG任務(wù)圖處理模塊,采用任務(wù)復制的方法,將DAG任務(wù)圖中的fork節(jié)點復制給其后繼任務(wù)節(jié)點,形成join結(jié)構(gòu)任務(wù)圖,再進一步將join圖轉(zhuǎn)換為產(chǎn)品加工樹;任務(wù)節(jié)點調(diào)度分配模塊,引入綜合調(diào)度中關(guān)鍵路徑思想,查找產(chǎn)品加工樹的關(guān)鍵路徑,并優(yōu)先調(diào)度關(guān)鍵路徑上節(jié)點,盡量提前關(guān)鍵路徑上節(jié)點開始執(zhí)行時間;調(diào)度序列調(diào)整優(yōu)化模塊,采用合并相似度最大的調(diào)度序列的方式,將調(diào)度序列合并以使調(diào)度序列數(shù)不大于處理器內(nèi)核數(shù),實現(xiàn)處理器內(nèi)核充分并行處理。本發(fā)明用于基于片上互連的同構(gòu)多核處理器單任務(wù)多核調(diào)度。
文檔編號G06F9/48GK103034614SQ201210554170
公開日2013年4月10日 申請日期2012年12月19日 優(yōu)先權(quán)日2012年12月19日
發(fā)明者謝志強, 韓英杰 申請人:哈爾濱理工大學