一種基于Kahn進(jìn)程網(wǎng)絡(luò)的程序并行框架提取技術(shù)的制作方法
【專利摘要】本發(fā)明公開了一種基于Kahn進(jìn)程網(wǎng)絡(luò)的程序并行框架提取技術(shù),其特征在于:基于局部化控制和分散內(nèi)存的思想,從3個(gè)步驟應(yīng)用程序轉(zhuǎn)化成為進(jìn)程網(wǎng)絡(luò)完成程序并行框架提?。翰襟E1、預(yù)處理;步驟2、消費(fèi)者進(jìn)程重構(gòu);步驟3、生產(chǎn)者進(jìn)程重構(gòu)。本發(fā)明針對(duì)嵌入式系統(tǒng)中一類典型的計(jì)算密集程序——靜態(tài)仿射嵌套循環(huán)程序,提出一種并行性發(fā)現(xiàn)技術(shù),并且將其表示為Kahn進(jìn)程網(wǎng)絡(luò)。
【專利說明】-種基于Kahn進(jìn)程網(wǎng)絡(luò)的程序并行框架提取技術(shù)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于一種基于K址n進(jìn)程網(wǎng)絡(luò)的程序并行框架提取技術(shù)。
【背景技術(shù)】
[0002] 多核或者多處理架構(gòu)已經(jīng)成為當(dāng)前各類信息系統(tǒng)的主要技術(shù)。從高性能計(jì)算到嵌 入式系統(tǒng),多核(包括異構(gòu)多核)處理器可W有效地滿足計(jì)算性能要求,降低能耗。但是, 多核計(jì)算機(jī)系統(tǒng)的內(nèi)在的并行性利用通常需要并行的程序設(shè)計(jì)?,F(xiàn)有的并行程序設(shè)計(jì)基于 特定的并行庫(kù),編程人員手工分析程序的可并行性,給出并行化策略和方法?,F(xiàn)有的并行庫(kù) 包括MPI、化enMP、化da等,該些并行庫(kù)通常支持高性能的計(jì)算環(huán)境,自身的開銷也較大,無 法滿足嵌入式環(huán)境多核并行編程的需求。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明要解決的技術(shù)問題是克服上述缺陷,提供一種基于K址n進(jìn)程網(wǎng)絡(luò)的程序 并行框架提取技術(shù),針對(duì)嵌入式系統(tǒng)中一類典型的計(jì)算密集程序一一靜態(tài)仿射嵌套循環(huán)程 序,提出一種并行性發(fā)現(xiàn)技術(shù),并且將其表示為K址n進(jìn)程網(wǎng)絡(luò)。
[0004] 為解決上述問題,本發(fā)明所采用的技術(shù)方案是:
[0005] 一種基于K址n進(jìn)程網(wǎng)絡(luò)的程序并行框架提取技術(shù),其特征在于:基于局部化控制 和分散內(nèi)存的思想,從3個(gè)步驟應(yīng)用程序轉(zhuǎn)化成為進(jìn)程網(wǎng)絡(luò)完成程序并行框架提?。?br>
[0006] 步驟1、預(yù)處理:預(yù)處理過程首先將每條賦值語(yǔ)句的所有執(zhí)行壓縮成為一個(gè)進(jìn)程, 從而形成一個(gè)初始的進(jìn)程網(wǎng)絡(luò);
[0007] 步驟2、消費(fèi)者進(jìn)程重構(gòu):消費(fèi)者進(jìn)程重構(gòu)是根據(jù)K址n進(jìn)程網(wǎng)絡(luò)之間的通信是 FIFO的基本要求,將生產(chǎn)者進(jìn)程共同具有寫操作的內(nèi)存數(shù)組分解為獨(dú)立的內(nèi)存區(qū)域,然后 調(diào)整、或者新增新的消費(fèi)者進(jìn)程的一個(gè)過程;
[000引步驟3、生產(chǎn)者進(jìn)程重構(gòu);生產(chǎn)者進(jìn)程重構(gòu)是指將多個(gè)消費(fèi)者進(jìn)程訪問的內(nèi)存數(shù) 組替換為獨(dú)立的內(nèi)存數(shù)組,然后調(diào)整生產(chǎn)者進(jìn)程結(jié)構(gòu)的過程。
[0009] 作為一種優(yōu)化的技術(shù)方案,所述步驟2中,消費(fèi)者進(jìn)程重構(gòu)過程將考慮每個(gè)進(jìn)程 的數(shù)據(jù)消耗,并且給出獨(dú)立的內(nèi)存數(shù)組,使得生產(chǎn)者進(jìn)程可W存儲(chǔ)數(shù)據(jù);對(duì)于每個(gè)數(shù)組,確 保只有一個(gè)生產(chǎn)者進(jìn)程;
[0010] 具體的實(shí)現(xiàn)過程如下:
[0011] 1)、識(shí)別對(duì)相同內(nèi)存數(shù)據(jù)具有寫操作的生產(chǎn)者進(jìn)程組;設(shè)Sf是對(duì)內(nèi)存數(shù)組r寫入 數(shù)據(jù)的所有生產(chǎn)者進(jìn)程的集合,町是所有從內(nèi)存數(shù)組r讀數(shù)據(jù)的消費(fèi)者進(jìn)程集合;
[0012] 2)、拆分內(nèi)存數(shù)組;對(duì)于每個(gè)進(jìn)程IVG S t,利用獨(dú)立的內(nèi)存數(shù)組替代r來支持 其寫操作;
[0013] 3)、建立起消費(fèi)進(jìn)程和生產(chǎn)進(jìn)程的有效鏈接;為了確保程序的邏輯正確性,消費(fèi)進(jìn) 程q G C,.也必須從新的內(nèi)存r,中讀取數(shù)據(jù);將r i與每個(gè)r的消費(fèi)者連接;但是該樣的鏈接 中,存在許多無效鏈接;為了消除無效鏈接,執(zhí)行IV與消費(fèi)進(jìn)程間的數(shù)據(jù)依賴分析,對(duì)于沒 有數(shù)據(jù)依賴的鏈接,則刪除之,留下確實(shí)有數(shù)據(jù)依賴的鏈接;
[0014] 4)、確定r,的范圍;根據(jù)數(shù)據(jù)依賴分析,建立起一個(gè)仿射依賴函數(shù),該函數(shù)在輸入 端口域上有效;一般地說,假如每個(gè)輸入端口域可W利用一個(gè)k維的綜合參數(shù)化多面體表 示,即/PD = C(N )〇. %對(duì)于每個(gè)生產(chǎn)者對(duì)P/C,它可W由一個(gè)唯一的多面體C(N)和一個(gè) 仿射依賴函數(shù)f表示;一個(gè)仿射依賴函數(shù)f表示為一個(gè)積分矩陣M和一個(gè)偏移向量0: f (X) =Mx+0 ;通過該依賴函數(shù),可W確定對(duì)于每個(gè)生產(chǎn)者/消費(fèi)者對(duì)在內(nèi)存上的輸入范圍;
[0015] 5)、重構(gòu)消費(fèi)者進(jìn)程;根據(jù)每個(gè)r;及其輸入端口域的范圍,為消費(fèi)者進(jìn)程巧eQ 聲稱一個(gè)新進(jìn)程(',,其循環(huán)上下界根據(jù)輸入端口的范圍確定。
[0016] 作為一種優(yōu)化的技術(shù)方案,所述步驟3中,步驟如下:
[0017] 1)、對(duì)于每一內(nèi)存數(shù)組,識(shí)別出相應(yīng)的消費(fèi)者進(jìn)程集合,設(shè)町是讀取內(nèi)存數(shù)組r的 所有消費(fèi)者進(jìn)程的集合;
[0018] 2)、為每個(gè)消費(fèi)者進(jìn)程G設(shè)立獨(dú)立的內(nèi)存數(shù)組ri來替代隊(duì)r的訪問;
[0019] 3)、確定每個(gè)的輸入域;由于消費(fèi)者進(jìn)程重構(gòu)過程已經(jīng)完成,對(duì)于每個(gè)內(nèi)存數(shù)組 r僅有一個(gè)進(jìn)程F輸入數(shù)據(jù);那么就僅需確定P t在每個(gè)r i上的輸出;其輸出為
[0020] OPD = /( Q N ) n '') = {p\p= fix), X e (C( N ) n *) j .
[002U 4)、確定生產(chǎn)者c滿足r,的輸入域y ;該需要根據(jù)生產(chǎn)者和消費(fèi)者之間的逆向數(shù) 據(jù)流分析,求解數(shù)據(jù)流函數(shù)獲得;
[0022] 5)、根據(jù)每個(gè)獨(dú)立的內(nèi)存數(shù)組的輸入范圍重構(gòu)生產(chǎn)者代碼。
[0023] 由于采用了上述技術(shù)方案,與現(xiàn)有技術(shù)相比,本發(fā)明設(shè)計(jì)了 一種技術(shù)從串行程序 中提取并行性的技術(shù),支持自動(dòng)化的程序并行化。由于不同類型的串行程序特征不同,并行 化的效果也不盡相同。本發(fā)明針對(duì)嵌入式系統(tǒng)中一類典型的計(jì)算密集程序一一靜態(tài)仿射嵌 套循環(huán)程序,提出一種并行性發(fā)現(xiàn)技術(shù),并且將其表示為Kahn進(jìn)程網(wǎng)絡(luò)。
【具體實(shí)施方式】 [0024] 實(shí)施例;
[0025] 一種基于K址n進(jìn)程網(wǎng)絡(luò)的程序并行框架提取技術(shù),基于局部化控制和分散內(nèi)存 的思想,從3個(gè)步驟應(yīng)用程序轉(zhuǎn)化成為進(jìn)程網(wǎng)絡(luò)完成程序并行框架提?。?br>
[0026] 步驟1、預(yù)處理:預(yù)處理過程首先將每條賦值語(yǔ)句的所有執(zhí)行壓縮成為一個(gè)進(jìn)程, 從而形成一個(gè)初始的進(jìn)程網(wǎng)絡(luò)。
[0027] 步驟2、消費(fèi)者進(jìn)程重構(gòu):消費(fèi)者進(jìn)程重構(gòu)是根據(jù)K址n進(jìn)程網(wǎng)絡(luò)之間的通信是 FIFO的基本要求,將生產(chǎn)者進(jìn)程共同具有寫操作的內(nèi)存數(shù)組分解為獨(dú)立的內(nèi)存區(qū)域,然后 調(diào)整、或者新增新的消費(fèi)者進(jìn)程的一個(gè)過程。
[002引步驟3、生產(chǎn)者進(jìn)程重構(gòu);生產(chǎn)者進(jìn)程重構(gòu)是指將多個(gè)消費(fèi)者進(jìn)程訪問的內(nèi)存數(shù) 組替換為獨(dú)立的內(nèi)存數(shù)組,然后調(diào)整生產(chǎn)者進(jìn)程結(jié)構(gòu)的過程。
[0029] 所述步驟2中,消費(fèi)者進(jìn)程重構(gòu)過程將考慮每個(gè)進(jìn)程的數(shù)據(jù)消耗,并且給出獨(dú)立 的內(nèi)存數(shù)組,使得生產(chǎn)者進(jìn)程可W存儲(chǔ)數(shù)據(jù);對(duì)于每個(gè)數(shù)組,確保只有一個(gè)生產(chǎn)者進(jìn)程;
[0030] 具體的實(shí)現(xiàn)過程如下:
[0031] 1)、識(shí)別對(duì)相同內(nèi)存數(shù)據(jù)具有寫操作的生產(chǎn)者進(jìn)程組;設(shè)Sf是對(duì)內(nèi)存數(shù)組r寫入 數(shù)據(jù)的所有生產(chǎn)者進(jìn)程的集合,町是所有從內(nèi)存數(shù)組r讀數(shù)據(jù)的消費(fèi)者進(jìn)程集合。
[0032] 2)、拆分內(nèi)存數(shù)組;對(duì)于每個(gè)進(jìn)程IVG Sf,利用獨(dú)立的內(nèi)存數(shù)組替代r來支持 其寫操作。
[0033] 3)、建立起消費(fèi)進(jìn)程和生產(chǎn)進(jìn)程的有效鏈接;為了確保程序的邏輯正確性,消費(fèi)進(jìn) 程q e C,.也必須從新的內(nèi)存中讀取數(shù)據(jù);將r i與每個(gè)r的消費(fèi)者連接;但是該樣的鏈接 中,存在許多無效鏈接;為了消除無效鏈接,執(zhí)行IV與消費(fèi)進(jìn)程間的數(shù)據(jù)依賴分析,對(duì)于沒 有數(shù)據(jù)依賴的鏈接,則刪除之,留下確實(shí)有數(shù)據(jù)依賴的鏈接。
[0034] 4)、確定的范圍;根據(jù)數(shù)據(jù)依賴分析,建立起一個(gè)仿射依賴函數(shù),該函數(shù)在輸入 端口域上有效;一般地說,假如每個(gè)輸入端口域可W利用一個(gè)k維的綜合參數(shù)化多面體表 示,即//>D = C(N )〇□%對(duì)于每個(gè)生產(chǎn)者對(duì)P/C,它可W由一個(gè)唯一的多面體C(N)和一個(gè) 仿射依賴函數(shù)f表示;一個(gè)仿射依賴函數(shù)f表示為一個(gè)積分矩陣M和一個(gè)偏移向量0: f (X) =Mx+0 ;通過該依賴函數(shù),可W確定對(duì)于每個(gè)生產(chǎn)者/消費(fèi)者對(duì)在內(nèi)存上的輸入范圍。
[0035] 5)、重構(gòu)消費(fèi)者進(jìn)程;根據(jù)每個(gè)r,及其輸入端口域的范圍,為消費(fèi)者進(jìn)程巧eCr 聲稱一個(gè)新進(jìn)程.巧,其循環(huán)上下界根據(jù)輸入端口的范圍確定。
[0036] 所述步驟3中,步驟如下:
[0037] 1)、對(duì)于每一內(nèi)存數(shù)組,識(shí)別出相應(yīng)的消費(fèi)者進(jìn)程集合,設(shè)D,是讀取內(nèi)存數(shù)組r的 所有消費(fèi)者進(jìn)程的集合。
[003引 2)、為每個(gè)消費(fèi)者進(jìn)程G設(shè)立獨(dú)立的內(nèi)存數(shù)組來替代隊(duì)r的訪問。
[0039] 3)、確定每個(gè)的輸入域;由于消費(fèi)者進(jìn)程重構(gòu)過程已經(jīng)完成,對(duì)于每個(gè)內(nèi)存數(shù)組 r僅有一個(gè)進(jìn)程F輸入數(shù)據(jù);那么就僅需確定P t在每個(gè)r i上的輸出;其輸出為
[0040]
【權(quán)利要求】
1. 一種基于Kahn進(jìn)程網(wǎng)絡(luò)的程序并行框架提取技術(shù),其特征在于:基于局部化控制和 分散內(nèi)存的思想,從3個(gè)步驟應(yīng)用程序轉(zhuǎn)化成為進(jìn)程網(wǎng)絡(luò)完成程序并行框架提取: 步驟1、預(yù)處理:預(yù)處理過程首先將每條賦值語(yǔ)句的所有執(zhí)行壓縮成為一個(gè)進(jìn)程,從而 形成一個(gè)初始的進(jìn)程網(wǎng)絡(luò); 步驟2、消費(fèi)者進(jìn)程重構(gòu):消費(fèi)者進(jìn)程重構(gòu)是根據(jù)Kahn進(jìn)程網(wǎng)絡(luò)之間的通信是FIFO的 基本要求,將生產(chǎn)者進(jìn)程共同具有寫操作的內(nèi)存數(shù)組分解為獨(dú)立的內(nèi)存區(qū)域,然后調(diào)整、或 者新增新的消費(fèi)者進(jìn)程的一個(gè)過程; 步驟3、生產(chǎn)者進(jìn)程重構(gòu):生產(chǎn)者進(jìn)程重構(gòu)是指將多個(gè)消費(fèi)者進(jìn)程訪問的內(nèi)存數(shù)組替 換為獨(dú)立的內(nèi)存數(shù)組,然后調(diào)整生產(chǎn)者進(jìn)程結(jié)構(gòu)的過程。
2. 根據(jù)權(quán)利要求1所述的基于Kahn進(jìn)程網(wǎng)絡(luò)的程序并行框架提取技術(shù),其特征在于: 所述步驟2中,消費(fèi)者進(jìn)程重構(gòu)過程將考慮每個(gè)進(jìn)程的數(shù)據(jù)消耗,并且給出獨(dú)立的內(nèi)存數(shù) 組,使得生產(chǎn)者進(jìn)程可以存儲(chǔ)數(shù)據(jù);對(duì)于每個(gè)數(shù)組,確保只有一個(gè)生產(chǎn)者進(jìn)程; 具體的實(shí)現(xiàn)過程如下: 1) 、識(shí)別對(duì)相同內(nèi)存數(shù)據(jù)具有寫操作的生產(chǎn)者進(jìn)程組;設(shè)&是對(duì)內(nèi)存數(shù)組r寫入數(shù)據(jù) 的所有生產(chǎn)者進(jìn)程的集合,W是所有從內(nèi)存數(shù)組r讀數(shù)據(jù)的消費(fèi)者進(jìn)程集合; 2) 、拆分內(nèi)存數(shù)組;對(duì)于每個(gè)進(jìn)程/fe^,利用獨(dú)立的內(nèi)存數(shù)組ri替代r來支持其寫 操作; 3) 、建立起消費(fèi)進(jìn)程和生產(chǎn)進(jìn)程的有效鏈接;為了確保程序的邏輯正確性,消費(fèi)進(jìn)程 C)eC,也必須從新的內(nèi)存A中讀取數(shù)據(jù);將ri與每個(gè)r的消費(fèi)者連接;但是這樣的鏈接 中,存在許多無效鏈接;為了消除無效鏈接,執(zhí)行與消費(fèi)進(jìn)程間的數(shù)據(jù)依賴分析,對(duì)于沒 有數(shù)據(jù)依賴的鏈接,則刪除之,留下確實(shí)有數(shù)據(jù)依賴的鏈接; 4) 、確定1^的范圍;根據(jù)數(shù)據(jù)依賴分析,建立起一個(gè)仿射依賴函數(shù),該函數(shù)在輸入端口 域上有效;一般地說,假如每個(gè)輸入端口域可以利用一個(gè)k維的綜合參數(shù)化多面體表示,即 //>D=C(N)n'對(duì)于每個(gè)生產(chǎn)者對(duì)p/C,它可以由一個(gè)唯一的多面體C(N)和一個(gè)仿射 依賴函數(shù)f表不;一個(gè)仿射依賴函數(shù)f表不為一個(gè)積分矩陣M和一個(gè)偏移向量0:f(X)=Mx+0 ;通過該依賴函數(shù),可以確定對(duì)于每個(gè)生產(chǎn)者/消費(fèi)者對(duì)在內(nèi)存巧上的輸入范圍; 5) 、重構(gòu)消費(fèi)者進(jìn)程;根據(jù)每個(gè)ri及其輸入端口域的范圍,為消費(fèi)者進(jìn)程C;eC,.聲稱 一個(gè)新進(jìn)程(',,其循環(huán)上下界根據(jù)輸入端口的范圍確定。
3. 根據(jù)權(quán)利要求2所述的基于Kahn進(jìn)程網(wǎng)絡(luò)的程序并行框架提取技術(shù),其特征在于: 所述步驟3中,步驟如下: 1) 、對(duì)于每一內(nèi)存數(shù)組,識(shí)別出相應(yīng)的消費(fèi)者進(jìn)程集合,設(shè)1\是讀取內(nèi)存數(shù)組r的所有 消費(fèi)者進(jìn)程的集合; 2) 、為每個(gè)消費(fèi)者進(jìn)程CT設(shè)立獨(dú)立的內(nèi)存數(shù)組&來替代隊(duì)r的訪問; 3) 、確定每個(gè)&的輸入域;由于消費(fèi)者進(jìn)程重構(gòu)過程已經(jīng)完成,對(duì)于每個(gè)內(nèi)存數(shù)組r僅 有一個(gè)進(jìn)程F輸入數(shù)據(jù);那么就僅需確定P在每個(gè)ri上的輸出;其輸出為 OPD =/(QN ) nk)^\p\p = ,f\x\xe (QN )nDfr)}. 9 4)、確定生產(chǎn)者G滿足巧的輸入域y;這需要根據(jù)生產(chǎn)者和消費(fèi)者之間的逆向數(shù)據(jù)流 分析,求解數(shù)據(jù)流函數(shù)獲得; 5)、根據(jù)每個(gè)獨(dú)立的內(nèi)存數(shù)組的輸入范圍重構(gòu)生產(chǎn)者代碼。
【文檔編號(hào)】G06F9/38GK104503734SQ201410855804
【公開日】2015年4月8日 申請(qǐng)日期:2014年12月31日 優(yōu)先權(quán)日:2014年12月31日
【發(fā)明者】李尚杰, 程勝, 周志軍, 魏明, 卓保特 申請(qǐng)人:北京神舟航天軟件技術(shù)有限公司