一種基于機器學習的推測多線程劃分方法
【技術領域】
[0001] 本發(fā)明屬于計算機技術領域,涉及一種推測多線程技術,特別涉及一種基于機器 學習的推測多線程劃分方法。
【背景技術】
[0002] 隨著指令級并行遇到越來越多的瓶頸和片上多處理器的迅速發(fā)展,如何更加有效 的利用核資源成為當前研究熱點,推測多線程作為一種線程級并行技術得到迅速發(fā)展。特 別是針對使用基于指針的數據結構如圖和樹等進行處理的非規(guī)則程序,其存在大量的只有 在執(zhí)行時才能確定的模糊數據依賴關系,而線程級推測并行在允許存在控制和數據依賴的 情況下,通過并行編譯器將非規(guī)則串行程序分解為多個線程單元,在執(zhí)行時將其依次分別 分配給空閑的處理器核單元來并行執(zhí)行,而程序并行執(zhí)行的正確性則由底層的硬件根據相 應的執(zhí)行模型來保證。線程級推測技術擺脫了傳統(tǒng)并行化方法不能有效消解模糊數據依賴 關系的局限,從而在并行化非規(guī)則程序方面展現(xiàn)出好的應用前景。
[0003] 在線程級推測執(zhí)行過程中,串行程序被劃分為多個推測線程并行執(zhí)行,每個線程 分別執(zhí)行程序的不同部分,并嚴格按照串行語義順序執(zhí)行。推測多線程程序的執(zhí)行時,有 且僅有一個線程為確定線程,該線程可以提交其執(zhí)行結果,而其他線程均為推測線程,線程 間以前驅后繼的形式保持串行程序的語義。每個推測線程通過一對激發(fā)指令來標識,通過 引入預計算片段(Pre-computationSlice,P-slice)預測推測線程的live-ins變量(活 躍變量,被線程體使用但其值并非由該線程定義值)的值。一對激發(fā)指令由線程激發(fā)點 (SpawningPoint,SP)和準控制無關點(ControlQuasiIndependentPoint,CQIP),即新 線程的起始點構成,當程序執(zhí)行到SP點時,若有空閑核資源,則分配線程到該處理器執(zhí)行; 當確定線程執(zhí)行到CQIP點時,將驗證其直接后繼線程在P-slice產生的live-ins數據,若 驗證正確,則確定線程提交其執(zhí)行結果;若驗證失敗,則撤銷此后繼推測線程及其所有推測 子線程,然后跳過P-slice片段,將該后繼線程作為確定線程來執(zhí)行。
[0004] 在推測多線程中如何合理地分解非規(guī)則串行程序對于提高加速比有很大的影響, 傳統(tǒng)的線程劃分方法主要應用啟發(fā)式規(guī)則,通過對線程粒度、數據依賴距離等加以選擇控 制來優(yōu)化程序的分解過程。其局限性在于不同的程序通常具有不同的結構特征,而基于啟 發(fā)式規(guī)則的方法以一種單一的優(yōu)化方案來對所有程序進行優(yōu)化,因此不能保證所有的非規(guī) 則程序均能獲得最優(yōu)的劃分。
【發(fā)明內容】
[0005] 本發(fā)明的目的在于克服上述現(xiàn)有應用啟發(fā)式規(guī)則以一種單一的優(yōu)化方案來對所 有程序進行優(yōu)化的局限性,提供一種基于機器學習的推測多線程劃分方法,該方法能夠依 據程序特征來優(yōu)化最優(yōu)劃分方案,對不同非規(guī)則程序具有更好的適應性。
[0006] 為達到上述目的,本發(fā)明采用以下技術方案:
[0007] -種基于機器學習的推測多線程劃分方法,包括以下步驟:
[0008] 1)從非規(guī)則程序集中提取程序特征,并將提取的程序特征注釋到程序的控制流圖 CFG上,同時以數組結構來存儲程序關鍵路徑上的基本塊,得到以帶注釋的圖聯(lián)合數組的方 式表達的程序集;
[0009] 2)基于SUIF編譯器構造程序控制流圖CFG,并用程序剖析信息和結構化分析方法 將構造的程序控制流圖依次轉化為加權控制流圖WCFG和超級塊控制流圖SCFG,然后對程 序集分別進行循環(huán)部分和非循環(huán)部分的線程劃分,得到由程序特征和最優(yōu)劃分方案構成的 訓練樣本集;
[0010] 3)提取待劃分非規(guī)則程序的特征,利用基于圖的相似性比較算法計算待劃分的非 規(guī)則程序特征與訓練樣本集的程序特征的相似性,得到最相似的樣本程序,然后對最相似 的樣本程序的劃分閾值進行加權計算,并將計算結果作為最優(yōu)劃分閾值應用到待劃分非規(guī) 則程序中完成推測多線程劃分。
[0011] 所述步驟1)中依據影響程序加速比的因素從非規(guī)則程序集中提取程序特征,并 使用圖G和數組A聯(lián)合的數據結構來存儲程序特征;其中影響程序加速比的因素包括線程 粒度、負載均衡、數據依賴以及控制依賴;提取的程序特征包括動態(tài)指令數、循環(huán)概率、分支 概率、數據依賴數和數據依賴距離;圖G是帶注釋的控制流圖,圖G中的節(jié)點的屬性為動態(tài) 指令數,邊的屬性為由循環(huán)分支概率、數據依賴數、數據依賴距離組成的三元組;數組A中 的兀素4;表不關鍵路徑上的基本塊。
[0012] 所述步驟2)中在進行循環(huán)部分的線程劃分時,根據剖析器分析得到的迭代次數、 循環(huán)體大小以及循環(huán)體之間的數據依賴數來決定循環(huán)部分的劃分,只有當激發(fā)下一次迭代 是盈利的,才將每個迭代指定為一個候選線程;并且在劃分循環(huán)部分時,依據線程粒度和數 據依賴數將候選線程的激發(fā)點SP插入到循環(huán)體內,將準控制無關點CQIP即候選線程的起 始點插入到循環(huán)分支指令前。
[0013] 判斷激發(fā)下一次迭代是盈利的標準為:循環(huán)體的線程粒度ThreadSizee[3, 32], 且迭代之間的數據依賴數DDCe[3, 9]。
[0014] 所述步驟2)中在進行非循環(huán)部分的線程劃分時,將當前候選線程初始化為空,以 起始點作為當前線程劃分的參考點,獲得從起始點到最近一個后向支配節(jié)點的最可能路 徑,僅當最可能路徑上所有基本塊的動態(tài)指令數滿足經驗值設定的線程粒度閾值范圍條 件,并且與后繼待劃分部分的最優(yōu)依賴數小于經驗值設定的閾值時,則獲得由最可能路徑 上的節(jié)點構成的候選線程;若大于線程粒度上限,則將被進一步劃分;若小于線程粒度下 限,則當前起始點的最近后向支配節(jié)點不會激發(fā)新的線程,將最可能路徑上的節(jié)點加入到 當前候選線程;每一步遞歸將當前參考點的最近后向支配節(jié)點作為當前候選線程的起始 點,直到當前非循環(huán)部分的結束節(jié)點結束為止。
[0015] 所述步驟2)中分別針對循環(huán)部分和非循環(huán)部分進行線程劃分,得到程序的劃分 方案,然后對程序特征及其相應的最優(yōu)劃分方案進行聯(lián)合表達,得到訓練樣本集;其中劃分 方案表示為線程粒度上限、線程粒度下限、數據依賴數、激發(fā)距離上限和激發(fā)距離下限的五 維閾值組合,訓練樣本T表示為(kV··,#),其中,表示第i個程序的程 序特征,表示第i個程序對應的最優(yōu)劃分,N表示程序總個數。
[0016] 所述步驟3)中待劃分的非規(guī)則程序特征與訓練樣本集的程序特征的相似性比較 方法為:分別提取待劃分的非規(guī)則程序和訓練樣本集的程序在起始點和結束點之間的所有 路徑,比較二者所有路徑的相似性,加權累加后得到圖的相似性,具體計算公式如式(1)所 示:
[0018] 其中Κ-ΙG2)為圖G1和圖G2的相似性,wall^為圖G1的程序執(zhí)行路徑,walk丨 為圖G2 的程序執(zhí)行路徑,Kwalk(walki,walk)為walkJPwalk.j的相似性,Kwalk(walkG1,walkG2) 為圖G1和圖G2的關鍵路徑的相似性,p為權值參數。
[0019] 所述步驟3)中對最相似的樣本程序的劃分方案五維閾值進行加權計算,獲得待 劃分非規(guī)則程序的最優(yōu)劃分閾值,計算公式如式(8)所示:
[0020]
[0021] 其中TH,表示第j個待求閾值,j= 1~5,e為歐拉數,th表示距離待劃分過程 最近的第1個過程的第j個閾值,也^表示距離待劃分過程最近的第i個過程的第j個閾 值,參數c表示選取的最相似樣本數;五維閾值為線程粒度上限、線程粒度下限、數據依賴 數、激發(fā)距離上限和激發(fā)距離下限。
[0022] 相對于現(xiàn)有技術,本發(fā)明具有以下有益效果:
[0023] 本發(fā)明提供的基于機器學習的推測多線程劃分方法,克服了現(xiàn)有應用啟發(fā)式規(guī)則 以一種單一的優(yōu)化方案來對所有程序進行優(yōu)化的局限性。該方法通過對程序特征進行分析 及表示,并分別對循環(huán)部分和非循環(huán)部分執(zhí)行不同的線程劃分策略以獲得由程序特征及其 最優(yōu)化分方案構成的訓練樣本集,從而通過將待劃分的非規(guī)則程序特征與訓練樣本集的程 序特征進行比較,應用最相似的樣本程序的劃分方案對待劃分的非規(guī)則程序進行推測多線 程劃分。本發(fā)明依據程序特征來比較待劃分的非規(guī)則程序與訓練樣本集的程序的相似性, 將最相似樣本的劃分方案應用到待劃的非規(guī)則分程序中,能夠依據程序特征來優(yōu)化最優(yōu)劃 分方案,對不同非規(guī)則程序具有更好的適應性。本發(fā)明還具有以下優(yōu)點:
[0024] 1)通過使用本發(fā)明提供的基于機器學習的推測多線程劃分方法,能夠避免像現(xiàn)有 的基于啟發(fā)式規(guī)則的方法那樣,以一種單一的優(yōu)化方案來對所有非規(guī)則程序進行線程劃分 的局限性,本發(fā)明的基于機器學習的推測多線程劃分方法依據程序特征決定優(yōu)化的劃分方 案,對不同非規(guī)則程序具有更好的適應性。
[0025] 2)本發(fā)明提供的基于機器學習的推測多線程劃分方法能夠對基于動態(tài)數據結構 的非規(guī)則程序進行并行化處理,獲得較好的加速