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