動(dòng)態(tài)任務(wù)安排方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明所揭露的實(shí)施例有關(guān)于一任務(wù)安排設(shè)計(jì),尤指一種用以分配子任務(wù)至異構(gòu)計(jì)算系統(tǒng)的計(jì)算裝置的動(dòng)態(tài)任務(wù)安排方法。
【背景技術(shù)】
[0002]隨著半導(dǎo)體工藝的演進(jìn),多處理器系統(tǒng)如今也變更受歡迎,而對(duì)于異構(gòu)計(jì)算系統(tǒng)而言,其具有多個(gè)不相同的處理器,舉例來說,該異構(gòu)計(jì)算系統(tǒng)可包含至少一第一處理器(例如,一個(gè)或多個(gè)中央處理單元(Central Processing Units, CPUs))以及至少一第二處理器(例如,一個(gè)或多個(gè)圖形處理單元(Graphic processing units, GPUs)),其中每一個(gè)第一處理器可具有第一處理器架構(gòu)(例如,第一指令集架構(gòu)),而每一個(gè)第二處理器可具有與第一處理器架構(gòu)不同的第二處理器架構(gòu)(例如,第二指令集架構(gòu))。因此,若相同任務(wù)在該第一處理器以及該第二處理器上執(zhí)行,由該第一處理器所執(zhí)行的指令與由該第二處理器所執(zhí)行的指令將不相同。
[0003]多種架構(gòu)已經(jīng)被發(fā)展來啟動(dòng)程序,其中每一架構(gòu)包含一個(gè)或多個(gè)在異構(gòu)計(jì)算環(huán)境上執(zhí)行的任務(wù),例如開放計(jì)算語言(Open Computing Language, OpenCL)以及異構(gòu)系統(tǒng)架構(gòu)(Heterogeneous System Architecture, HSA)。以開放計(jì)算語言為例,其為用來編寫程序并且可在由中央處理單元、圖形處理單元以及其他處理器(如,數(shù)字信號(hào)處理器(digitalsignal processors, DSPs))所組成的異構(gòu)平臺(tái)上執(zhí)行的架構(gòu),詳細(xì)來說,開放計(jì)算語言用于異構(gòu)計(jì)算系統(tǒng)的平行編碼的一種開放標(biāo)準(zhǔn)。傳統(tǒng)上,被選以執(zhí)行開放計(jì)算語言程序任務(wù)的異構(gòu)計(jì)算系統(tǒng)的計(jì)算裝置由程序設(shè)計(jì)員靜態(tài)地決定,并且,在于多個(gè)裝置平行地執(zhí)行該開放計(jì)算語言任務(wù)的例子中,程序設(shè)計(jì)員需要根據(jù)裝計(jì)算置的數(shù)量靜態(tài)地將任務(wù)分成子任務(wù),且指定子任務(wù)的其中之一給每一裝置。
[0004]然而,此種靜態(tài)任務(wù)分配的靜態(tài)任務(wù)安排設(shè)計(jì)會(huì)使該異構(gòu)計(jì)算系統(tǒng)具有較低的吞吐量(throughput),且無法保證異構(gòu)計(jì)算系統(tǒng)中不同的處理器的負(fù)載平衡。
【發(fā)明內(nèi)容】
[0005]根據(jù)本發(fā)明的示范性實(shí)施例,提出一用以分配子任務(wù)至異構(gòu)計(jì)算系統(tǒng)的計(jì)算裝置的動(dòng)態(tài)任務(wù)安排方法以解決上述問題。
[0006]根據(jù)本發(fā)明的第一觀點(diǎn),揭露示范性的動(dòng)態(tài)任務(wù)安排方法,其中該示范性的動(dòng)態(tài)任務(wù)安排方法包含:接收一個(gè)任務(wù),其中該任務(wù)包含核心以及由該核心處理的多個(gè)數(shù)據(jù)項(xiàng);動(dòng)態(tài)地將任務(wù)分成多個(gè)子任務(wù),且每一子任務(wù)具有核心以及數(shù)據(jù)項(xiàng)的一部分,其中該部分的大小是可變的;分配該多個(gè)子任務(wù)至異構(gòu)計(jì)算系統(tǒng)的多個(gè)計(jì)算裝置中。
[0007]根據(jù)本發(fā)明的第二觀點(diǎn),揭露示范性的動(dòng)態(tài)任務(wù)安排方法,其中該示范性的動(dòng)態(tài)任務(wù)安排方法包含:接收一個(gè)任務(wù),其中該任務(wù)包含核心以及由該核心處理的多個(gè)數(shù)據(jù)項(xiàng);將該任務(wù)成多個(gè)子任務(wù),且每一子任務(wù)具有該核心以及該些數(shù)據(jù)項(xiàng)的一部分,其中該部分的大小是固定的;并動(dòng)態(tài)地分配該些子任務(wù)至一異構(gòu)計(jì)算系統(tǒng)的多個(gè)計(jì)算裝置中。
[0008]本發(fā)明所公開的動(dòng)態(tài)任務(wù)安排方法可通過動(dòng)態(tài)地分配子任務(wù)至計(jì)算裝置來達(dá)到計(jì)算裝置之間的負(fù)載平衡。
[0009]本發(fā)明的這些及其他的目的對(duì)于本領(lǐng)域的技術(shù)人員來說,在閱讀了下述優(yōu)選實(shí)施例的詳細(xì)說明以后是很容易理解和明白的,所述優(yōu)選實(shí)施例通過多幅圖予以揭示。
【附圖說明】
[0010]圖1是根據(jù)本發(fā)明一實(shí)施例的異構(gòu)計(jì)算系統(tǒng)的示意圖。
[0011]圖2是根據(jù)本發(fā)明一實(shí)施例的第一動(dòng)態(tài)任務(wù)安排方法的流程圖。
[0012]圖3是將一個(gè)任務(wù)分成多個(gè)子任務(wù)的第一范例不意圖。
[0013]圖4是圖2所示的步驟204的示范性實(shí)施例的流程圖。
[0014]圖5是決定不同計(jì)算裝置中的每一裝置的預(yù)測(cè)任務(wù)運(yùn)行時(shí)間的范例示意圖。
[0015]圖6是決定不同計(jì)算裝置中的每一裝置的估計(jì)任務(wù)運(yùn)行時(shí)間的范例示意圖。
[0016]圖7是根據(jù)本發(fā)明實(shí)施例的具有地域性的數(shù)據(jù)分割以及不具地域性的數(shù)據(jù)分割的示意圖。
[0017]圖8是根據(jù)本發(fā)明的實(shí)施例的第二動(dòng)態(tài)任務(wù)安排方法的流程圖。
[0018]圖9是將一個(gè)任務(wù)分成多個(gè)子任務(wù)的另一范例不意圖。
【具體實(shí)施方式】
[0019]本說明書及權(quán)利要求書使用了某些詞語代指特定的組件。本領(lǐng)域的技術(shù)人員可理解的是,制造商可能使用不同的名稱代指同一組件。本文件不通過名字的差別,而通過功能的差別來區(qū)分組件。在以下的說明書和權(quán)利要求書中,詞語“包括”是開放式的,因此其應(yīng)理解為“包括,但不限于...”。
[0020]圖1是根據(jù)本發(fā)明實(shí)施例的異構(gòu)計(jì)算系統(tǒng)的示意圖,其中異構(gòu)計(jì)算系統(tǒng)10可實(shí)現(xiàn)于攜帶式裝置內(nèi),例如,移動(dòng)電話、平板計(jì)算機(jī)、穿戴式裝置等,然而此不為本發(fā)明的限制,也就是說,任何使用所提出的動(dòng)態(tài)任務(wù)安排方法的電子裝置皆應(yīng)隸屬于本發(fā)明的范疇中。在本實(shí)施例中,異構(gòu)計(jì)算系統(tǒng)10可具有動(dòng)態(tài)任務(wù)安排器100以及多個(gè)計(jì)算裝置102與104,其中任務(wù)安排器100耦接至計(jì)算裝置102與104并用以執(zhí)行所提出的動(dòng)態(tài)任務(wù)安排方法,該方法用以將一個(gè)任務(wù)分割成多個(gè)子任務(wù)并且分配該子任務(wù)至計(jì)算裝置102與104,舉例來說,但非限制,動(dòng)態(tài)任務(wù)安排器100可為支持異構(gòu)計(jì)算環(huán)境的操作系統(tǒng)(operatingsystem, OS)的一部分,因此,動(dòng)態(tài)任務(wù)安排器100可為在異構(gòu)計(jì)算系統(tǒng)10上所執(zhí)行的軟件模塊,如圖1所示,異構(gòu)計(jì)算系統(tǒng)10可具有計(jì)算機(jī)可讀媒介12,例如內(nèi)存裝置。計(jì)算機(jī)可讀媒介12可儲(chǔ)存程序代碼(PROG) 14,當(dāng)異構(gòu)計(jì)算系統(tǒng)10讀取并執(zhí)行程序代碼14時(shí),動(dòng)態(tài)任務(wù)安排器100執(zhí)行所提出的動(dòng)態(tài)任務(wù)安排方法。該方法的流程將于下面段落詳細(xì)描述。
[0021]計(jì)算裝置102與104可為具有不同指令集架構(gòu)的處理器,舉例來說,計(jì)算裝置102可為中央處理單元,而計(jì)算裝置104可為圖形處理器,為達(dá)清晰與簡(jiǎn)潔之便,圖1僅顯示出計(jì)算裝置102與104,實(shí)作上異構(gòu)計(jì)算系統(tǒng)10可具有多于兩個(gè)的計(jì)算裝置,其取決于實(shí)際設(shè)計(jì)考慮。舉例來說,異構(gòu)計(jì)算系統(tǒng)10可被修改為具有多于一個(gè)的中央處理單元以及多于一個(gè)的圖形處理單元,舉另一例子,異構(gòu)計(jì)算系統(tǒng)10可被修改為具有不同處理器種類的額外處理器,即,所提出的動(dòng)態(tài)任務(wù)安排方法可被應(yīng)用于具有任何處理器組合的異構(gòu)計(jì)算系統(tǒng)上。
[0022]在第一示范性設(shè)計(jì)中,設(shè)定動(dòng)態(tài)任務(wù)安排器100以利用可變?nèi)航M大小分割技術(shù)方案來將任務(wù)分割為多個(gè)子任務(wù),其中該任務(wù)包含核心以及由該核心所處理的多個(gè)數(shù)據(jù)項(xiàng),并且每一個(gè)子任務(wù)包含相同核心以及數(shù)據(jù)項(xiàng)的一部分,其中該部分的大小為可變。在異構(gòu)計(jì)算系統(tǒng)10支持開放計(jì)算語言架構(gòu)的情況下,數(shù)據(jù)項(xiàng)可為與開放計(jì)算語言的工作項(xiàng)目相關(guān)的輸出數(shù)據(jù)(例如,圖像的像素),且該核心可為每一工作項(xiàng)目的程序代碼(基本上為一開放計(jì)算語言功能)。因此,圖像的像素可被分成多個(gè)像素群,其具有可變的大小并且由動(dòng)態(tài)任務(wù)安排器100動(dòng)態(tài)地決定。
[0023]圖2是根據(jù)本發(fā)明實(shí)施例的第一動(dòng)態(tài)任務(wù)安排方法的流程圖,在異構(gòu)計(jì)算系統(tǒng)10上所執(zhí)行的動(dòng)態(tài)任務(wù)安排器100使用該動(dòng)態(tài)任務(wù)安排方法,其中該方法簡(jiǎn)短歸納如下。
[0024]步驟202:接收一任務(wù),其中該任務(wù)包含核心以及由該核心所處理的多個(gè)數(shù)據(jù)項(xiàng)。
[0025]步驟204:動(dòng)態(tài)地將該任務(wù)分割成多個(gè)子任務(wù),且每一子任務(wù)具有相同核心以及數(shù)據(jù)項(xiàng)的一部分,其中該部分的大小為可變的。
[0026]步驟206:分配子任務(wù)至異構(gòu)計(jì)算系統(tǒng)的多個(gè)計(jì)算裝置。