一種用于異構(gòu)眾核系統(tǒng)下的應(yīng)用程序線程數(shù)動(dòng)態(tài)調(diào)整方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)領(lǐng)域,涉及一種并行應(yīng)用程序線程數(shù)動(dòng)態(tài)調(diào)整方法, 尤其涉及一種用于異構(gòu)眾核系統(tǒng)下的應(yīng)用程序線程數(shù)動(dòng)態(tài)調(diào)整方法。
【背景技術(shù)】
[0002] 隨著多核、眾核技術(shù)的迅速發(fā)展,異構(gòu)系統(tǒng)已經(jīng)成為高性能計(jì)算領(lǐng)域一種重要的 發(fā)展趨勢(shì),如何在充分利用異構(gòu)系統(tǒng)高計(jì)算能力提升程序性能的同時(shí),降低系統(tǒng)的能耗是 異構(gòu)系統(tǒng)需要解決的一個(gè)關(guān)鍵問題。在主處理器+協(xié)處理器架構(gòu)的新型異構(gòu)眾核系統(tǒng)下, 主處理器主要負(fù)責(zé)處理復(fù)雜的邏輯控制任務(wù),協(xié)處理器負(fù)責(zé)處理計(jì)算密度高、邏輯分支簡(jiǎn) 單的大規(guī)模數(shù)據(jù)并行任務(wù),主處理器和協(xié)處理器協(xié)同的計(jì)算任務(wù)的不同部分,為具體的應(yīng) 用程序提供高效的計(jì)算平臺(tái)。在具體運(yùn)行程序時(shí),如何在主處理器和協(xié)處理器端設(shè)置線程 數(shù),對(duì)程序性能、異構(gòu)系統(tǒng)整體能耗都將產(chǎn)生重要的影響。
[0003] 異構(gòu)眾核系統(tǒng)下,主處理器一般采用通用的片上多核處理器(CMP),因處理器核數(shù) 有限,通常在CMP上將線程數(shù)設(shè)置為具體的處理器核數(shù),就能達(dá)到較好的加速效果。協(xié)處理 器通常采用新型眾核處理器(如GPU和MIC),由于處理器核數(shù)眾多(通常幾十、上百個(gè)核), 同時(shí)處理核內(nèi)部又引入了同時(shí)多線程(SMT)技術(shù),這使得影響因素更加復(fù)雜。如果設(shè)置的 線程數(shù)過多,會(huì)因線程間爭(zhēng)用共享資源導(dǎo)致計(jì)算性能下降,同時(shí)由于啟用眾多的處理核會(huì) 造成過高的能源消耗;設(shè)置的線程數(shù)過少,則因異構(gòu)系統(tǒng)處理核資源得不到充分利用,影響 計(jì)算性能的提升。又因主處理器和協(xié)處理器具有不同的硬件架構(gòu),如何根據(jù)分配到的任務(wù) 特點(diǎn),結(jié)合硬件架構(gòu)特征合理的設(shè)置線程數(shù),將任務(wù)映射到具體的處理核上,對(duì)充分利用不 同處理器的硬件資源、高效發(fā)揮異構(gòu)眾核系統(tǒng)的計(jì)算能力及提高異構(gòu)眾核系統(tǒng)整體效能具 有重要意義。
[0004] 已有的針對(duì)多核及眾核環(huán)境下,確定多線程應(yīng)用程序最佳線程數(shù)的研宄工作,總 體上可以分為根據(jù)經(jīng)驗(yàn)值靜態(tài)設(shè)置、迭代探測(cè)、預(yù)測(cè)三種實(shí)現(xiàn)方法。由于受所處理數(shù)據(jù)及具 體運(yùn)行平臺(tái)的變化等因素影響,根據(jù)經(jīng)驗(yàn)值靜態(tài)設(shè)置的方法通常不能正確的反映程序具體 運(yùn)行時(shí)的特性,準(zhǔn)確性和性能較低;迭代探測(cè)的方法通過在程序運(yùn)行過程中不斷的測(cè)試對(duì) 比不同的線程數(shù)對(duì)性能的影響,最終找到近似最優(yōu)的線程數(shù),然后以此為標(biāo)準(zhǔn)進(jìn)行線程映 射,但該方法會(huì)引入較高的額外開銷,不能反映程序動(dòng)態(tài)變化的特性;預(yù)測(cè)的方法介于前兩 者之間,結(jié)合一定的模型,估計(jì)出最優(yōu)的線程數(shù)。
[0005] 已有的工作主要針對(duì)傳統(tǒng)的多核及眾核環(huán)境研宄相應(yīng)的最優(yōu)線程數(shù),但在由主處 理器和協(xié)處理器構(gòu)成的異構(gòu)眾核系統(tǒng)下,協(xié)處理器集成了更多數(shù)量的處理核,主處理器和 協(xié)處理器協(xié)同的處理計(jì)算任務(wù),要根據(jù)架構(gòu)特征,結(jié)合應(yīng)用程序本身的特點(diǎn)及程序在運(yùn)行 過程中運(yùn)行狀態(tài)才能設(shè)置合理的線程數(shù),從而保證程序計(jì)算性能的同時(shí)最大程度的降低系 統(tǒng)能耗,而已有的在傳統(tǒng)的多核及眾核環(huán)境下確定最佳線程數(shù)的方法不能較好的適應(yīng)新型 異構(gòu)眾核系統(tǒng)。
[0006] 由于存在以上問題,目前還沒有一種能夠根據(jù)異構(gòu)眾核系統(tǒng)架構(gòu)的特征,結(jié)合應(yīng) 用程序在運(yùn)行過程中階段性變化的特性,實(shí)時(shí)對(duì)并行應(yīng)用程序的線程數(shù)進(jìn)行動(dòng)態(tài)調(diào)整以較 低的開銷在提高程序的計(jì)算性能同時(shí)降低系統(tǒng)能耗的有效方法。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)中的問題,提供一種異構(gòu)眾核系統(tǒng)下的用于 異構(gòu)眾核系統(tǒng)下的應(yīng)用程序線程數(shù)動(dòng)態(tài)調(diào)整方法,該線程數(shù)動(dòng)態(tài)調(diào)整方法以最優(yōu)線程數(shù)動(dòng) 態(tài)預(yù)測(cè)模型為基礎(chǔ),可以在保證應(yīng)用程序理想計(jì)算性能的同時(shí)盡量降低系統(tǒng)的整體能耗。
[0008] 為了達(dá)到上述目的,本發(fā)明采用的技術(shù)方案包括如下步驟:
[0009] 1)異構(gòu)系統(tǒng)主機(jī)端主進(jìn)程將程序循環(huán)部分代碼分派到異構(gòu)系統(tǒng)的協(xié)處理器上運(yùn) 行,通過系統(tǒng)硬件性能記數(shù)器獲取程序在不同的線程數(shù)運(yùn)行情況下的IPSdP IPSn的值,其 中IPS1為單個(gè)線程運(yùn)行時(shí)程序每秒鐘所處理的指令數(shù),IPS "為η個(gè)線程運(yùn)行時(shí)程序每秒鐘 所處理的指令數(shù);
[0010] 2)將收集到的狀態(tài)信息IPS#不同線程數(shù)情況下的IPS遁返回到CPU主機(jī)端;
[0011] 3) CPU主機(jī)端根據(jù)以下公式計(jì)算多線程運(yùn)行時(shí)相對(duì)于單個(gè)線程運(yùn)行時(shí)的相對(duì)周轉(zhuǎn) 時(shí)間fn:
[0012]
【主權(quán)項(xiàng)】
1. 一種用于異構(gòu)眾核系統(tǒng)下的應(yīng)用程序線程數(shù)動(dòng)態(tài)調(diào)整方法,其特征在于,包括如下 步驟: 1) 異構(gòu)系統(tǒng)主機(jī)端主進(jìn)程將程序循環(huán)部分代碼分派到異構(gòu)系統(tǒng)的協(xié)處理器上運(yùn)行,通 過系統(tǒng)硬件性能記數(shù)器獲取程序在不同的線程數(shù)運(yùn)行情況下的IPSdP IPSn的值,其中IPS1 為單個(gè)線程運(yùn)行時(shí)程序每秒鐘所處理的指令數(shù),IPSnS η個(gè)線程運(yùn)行時(shí)程序每秒鐘所處理 的指令數(shù); 2) 將收集到的狀態(tài)信息IPSJP不同線程數(shù)情況下的IPS ^直返回到CPU主機(jī)端; 3. CPU主機(jī)端根據(jù)以下公式計(jì)算多線程運(yùn)行時(shí)相對(duì)于單個(gè)線程運(yùn)行時(shí)的相對(duì)周轉(zhuǎn)時(shí)間 fr-
公式(1)中TTdP TT1分別表示多線程運(yùn)行時(shí)程序的執(zhí)行時(shí)間和單線程運(yùn)行時(shí)的程序 執(zhí)行時(shí)間,SIP為程序總的指令數(shù); 3) 根據(jù)公式(1)計(jì)算得到多組(fn,η)值,利用最小二乘法,通過求解以下方程組:
計(jì)算出最優(yōu)線程數(shù)預(yù)測(cè)模型中的系數(shù)α,β的值,其中α表示所處理任務(wù)中的串行比 例系數(shù)、β表示并行任務(wù)比例系統(tǒng)、γ表示額外開銷對(duì)性能的影響因子; 4) 根據(jù)最優(yōu)線程數(shù)預(yù)測(cè)模型:
計(jì)算最優(yōu)線程數(shù)預(yù)測(cè)值η; 5) 將步驟3)中計(jì)算出的α和β的值代入公式(2)計(jì)算出最優(yōu)線程數(shù)預(yù)測(cè)值η,將應(yīng) 用程序的線程數(shù)設(shè)為最優(yōu)線程數(shù)η后重新在協(xié)處理器端運(yùn)行應(yīng)用程序;同時(shí)以最優(yōu)線程數(shù) 為標(biāo)準(zhǔn)將空閑的處理核及處理核內(nèi)部的硬件線程關(guān)閉或置于非活動(dòng)狀態(tài); 6) 程序在協(xié)處理器端運(yùn)行的過程中,在一定的時(shí)間間隔內(nèi)對(duì)程序的運(yùn)行狀態(tài)信息采集 一次,并對(duì)程序的運(yùn)行狀態(tài)進(jìn)行檢測(cè);如果檢測(cè)到程序發(fā)生階段性變化,則轉(zhuǎn)到步驟2);如 果程序在協(xié)處理器端運(yùn)行過程中沒有檢測(cè)到階段性變化,則繼續(xù)運(yùn)行程序,直到程序運(yùn)行 結(jié)束; 7) 將協(xié)處理器端的運(yùn)行結(jié)果返回給主機(jī)端,主機(jī)端繼續(xù)執(zhí)行整個(gè)應(yīng)用程序的后繼部 分,遇到有循環(huán)部分則繼續(xù)分派到協(xié)處理器端執(zhí)行,即轉(zhuǎn)到步驟1); 8) 不斷的迭代直到整個(gè)應(yīng)用程序執(zhí)行完成,從而實(shí)現(xiàn)了在應(yīng)用程序運(yùn)行的過程中動(dòng)態(tài) 的對(duì)線程數(shù)進(jìn)行調(diào)整。
2. 根據(jù)權(quán)利要求1所述的用于異構(gòu)眾核系統(tǒng)下的應(yīng)用程序線程數(shù)動(dòng)態(tài)調(diào)整方法,其特 征在于:所述步驟4)中的最優(yōu)線程數(shù)預(yù)測(cè)模型根據(jù)以下多線程運(yùn)行時(shí)相對(duì)于單線程運(yùn)行 時(shí)的周轉(zhuǎn)時(shí)間計(jì)算公式推導(dǎo)后得到: 1) 經(jīng)過對(duì)Amdahl定律擴(kuò)展變換后得公式(3):
由公式⑴和公式⑶等價(jià)變化后得到公式⑷:
2) 通過利用極值定理求解使公式(4)中相對(duì)周轉(zhuǎn)時(shí)間最小的值n,即可以得到最優(yōu)線 程數(shù)預(yù)測(cè)模型。
3. 根據(jù)權(quán)利要求1所述的用于異構(gòu)眾核系統(tǒng)下的應(yīng)用程序線程數(shù)動(dòng)態(tài)調(diào)整方法,其特 征在于:所述步驟6)中,對(duì)程序的運(yùn)行狀態(tài)進(jìn)行檢測(cè)是根據(jù)采集到的線程上下文切換率、 線程迀移率、cache缺失率、CPU利用率以及帶寬利用率這五個(gè)指標(biāo)判斷程序的運(yùn)行狀態(tài)是 否發(fā)生了階段性的變化。
4. 根據(jù)權(quán)利要求1基于預(yù)測(cè)模型的異構(gòu)眾核系統(tǒng)應(yīng)用程序線程數(shù)動(dòng)態(tài)調(diào)整方法,其特 征在于:所述步驟6)中的狀態(tài)信息采樣間隔為100ms。
【專利摘要】本發(fā)明公開了一種用于異構(gòu)眾核系統(tǒng)下的應(yīng)用程序線程數(shù)動(dòng)態(tài)調(diào)整方法,該方法以異構(gòu)眾核硬件架構(gòu)特征和程序運(yùn)行時(shí)動(dòng)態(tài)階段性變化的特性為基礎(chǔ),通過采集反映程序性能變化的系統(tǒng)級(jí)性能計(jì)數(shù)器的狀態(tài)信息,利用預(yù)測(cè)模型實(shí)時(shí)估計(jì)出最優(yōu)的線程數(shù),以此為指導(dǎo)動(dòng)態(tài)的對(duì)應(yīng)用程序的線程數(shù)進(jìn)行調(diào)整。為保證合理的利用異構(gòu)眾核系統(tǒng)的計(jì)算資源來提高程序計(jì)算性能的同時(shí)降低系統(tǒng)能耗提供了一個(gè)有效的解決方法。
【IPC分類】G06F9-50
【公開號(hào)】CN104657219
【申請(qǐng)?zhí)枴緾N201510090555
【發(fā)明人】董小社, 巨濤, 朱正東, 李亮, 白秀秀, 吳樹森, 魏曉林
【申請(qǐng)人】西安交通大學(xué)
【公開日】2015年5月27日
【申請(qǐng)日】2015年2月27日