可重構(gòu)計算循環(huán)映射優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,具體涉及一種可重構(gòu)計算循環(huán)映射優(yōu)化方法。
【背景技術(shù)】
[0002] 可重構(gòu)處理器是一類十分有發(fā)展?jié)摿Φ牟⑿杏嬎慵軜?gòu),它融合了通用處理器 (GPP)的靈活性和專用集成電路(ASIC)的高速性。從理論上,相對于通用處理器,可重構(gòu)處 理器可以取得10倍以上的性能提升。然而,只有將應(yīng)用程序中的操作合理地調(diào)度并配置到 可重構(gòu)處理器的計算陣列上,才能保證可重構(gòu)處理器正確、高效地完成任務(wù)。
[0003] 對于現(xiàn)實中的應(yīng)用程序來說,循環(huán)的執(zhí)行往往占據(jù)了大部分運行時間。循環(huán)的特 點是不改變運算的結(jié)構(gòu),只改變運算的數(shù)據(jù)。對于可重構(gòu)處理器上的計算陣列來說,一套配 置重復(fù)執(zhí)行,可以有效地降低配置的代價。循環(huán)的多次重復(fù)計算恰好符合可重構(gòu)計算陣列 的特點。對循環(huán)的執(zhí)行進(jìn)行優(yōu)化,效果明顯,也有很多規(guī)律可以利用。因此,我們要提高可重 構(gòu)處理器的性能,重點應(yīng)該放在對循環(huán)的處理上。
[0004] 對于單層循環(huán)而言,使用模調(diào)度策略的軟件流水是一類常用的加速循環(huán)執(zhí)行的方 法。這種方法把循環(huán)的一次迭代內(nèi)的算子(即應(yīng)用程序中的最小執(zhí)行單元)重新排列并且固 定其位置,然后規(guī)定每次迭代啟動后等待一個固定時間間隔(initial interval,II)再啟 動下一個迭代。這樣得到的迭代與迭代之間有規(guī)律地重疊形成的最小重復(fù)單元,也就是重 組后的循環(huán)體,稱為流水核心(kernel)。然后只要對kernel中的算子進(jìn)行布局布線 (placement and routing,P&R),把每個算子映射到時域擴(kuò)展后的可重構(gòu)計算陣列上,安排 算子在計算陣列上執(zhí)行的位置,并且決定各個數(shù)據(jù)傳輸?shù)穆窂剑M(jìn)而生成配置信息。有了配 置信息,就可以引導(dǎo)可重構(gòu)計算陣列每II個控制步執(zhí)行一輪kernel內(nèi)的所有操作。一般II 越小越好,因為越小的II代表著迭代之間更大程度的重疊執(zhí)行,也就意味著單層循環(huán)執(zhí)行 的總時間更短。但是受到數(shù)據(jù)依賴和計算資源數(shù)量的限制,II總是有一個下界。大多數(shù)方法 會從II的下界開始嘗試P&R,每當(dāng)P&R失敗,也就是無法形成合法映射,就逐步增大II繼續(xù)嘗 試,直到成功。這樣得到的最終配置信息就是最優(yōu)的或者近似最優(yōu)的。
[0005] 在處理多層嵌套循環(huán)的場合,我們也可以按照單層循環(huán)的方式去處理,尋求最內(nèi) 層迭代的最大并行。但是很多情況下,這么做并不能取得最好的效果。因為最小的最內(nèi)層II 只能代表最內(nèi)層循環(huán)的迭代進(jìn)行了最大限度地重疊,并不能代表整體取得了最大的并行 度,也就無法充分利用硬件資源,因此達(dá)不到更好的性能。這就要求我們把挖掘并行度的視 野從最內(nèi)層擴(kuò)展到外層,但是這比處理單層循環(huán)困難很多,因為諸如循環(huán)的變形、II的決定 等,都在維度上發(fā)生了擴(kuò)展,使得影響性能的因素更加復(fù)雜,搜索空間更加龐大,就必須要 有更優(yōu)的建模和搜索方式。
[0006] 如果要處理的多層循環(huán)是非完美的,也就是并非所有語句都出現(xiàn)在最內(nèi)層的情 況,映射及配置生成更是一個棘手的問題。雖然可以通過循環(huán)分離(fission)把部分非完美 循環(huán)分裂成多個完美循環(huán)來處理,但是遇到不同語句間有來回依賴的情況,循環(huán)分離就不 合法了。如果我們?nèi)匀幌M诰蚨鄬硬⑿行?,除了要面對多個II如何確定的問題以外,如何 壓縮過大的配置信息也是一個難點,因為非完美循環(huán)內(nèi)部組成的復(fù)雜性會導(dǎo)致當(dāng)內(nèi)層迭代 次數(shù)較大時形成的kernel行數(shù)十分龐大。
[0007] 從已有的文獻(xiàn)來看,目前主流的方法大都是進(jìn)行單層流水,對于非完美的多層嵌 套循環(huán),最多也僅僅做到了隱藏單獨語句、合并兩次內(nèi)層流水的排空和裝載階段的程度,并 沒有積極地重疊外層迭代。尤其是對于含有并列子循環(huán)的非完美嵌套循環(huán),沒有現(xiàn)成的方 法能夠有效地挖掘外層并行性。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明旨在至少解決上述技術(shù)問題之一。
[0009]為此,本發(fā)明的一個目的在于提出一種可重構(gòu)計算循環(huán)映射優(yōu)化方法。
[0010] 為了實現(xiàn)上述目的,本發(fā)明的實施例公開了一種可重構(gòu)計算循環(huán)映射優(yōu)化方法, 包括以下步驟:S1:建立內(nèi)外層循環(huán)模型,根據(jù)所述內(nèi)外層循環(huán)模型確定最優(yōu)內(nèi)層迭代時間 間隔和最優(yōu)外層迭代時間間隔;S2:根據(jù)所述最優(yōu)內(nèi)層迭代時間間隔得到內(nèi)層流水,以及根 據(jù)所述最優(yōu)外層迭代時間間隔得到外層流水核心;S3:將所述外層流水核心分割為第一預(yù) 設(shè)數(shù)量的段落,抽取每個段落的重復(fù)單元,將每個所述重復(fù)單元壓縮為第二預(yù)設(shè)數(shù)量的拷 貝;S4:對每個重復(fù)單元,根據(jù)REGMap算法,構(gòu)建原始兼容圖,對所述原始兼容圖進(jìn)行壓縮, 在壓縮后的兼容圖中搜索大小等同于需要生成配置信息的算子數(shù)量的最大團(tuán)。
[0011] 根據(jù)本發(fā)明實施例的可重構(gòu)計算循環(huán)映射優(yōu)化方法,通過多層軟流水和核心壓縮 的優(yōu)化方法,來降低非完美多層嵌套循環(huán)在可重構(gòu)計算陣列上的計算時間和配置信息量, 從而提高了可重構(gòu)處理器的性能;算法復(fù)雜度是多項式時間,滿足實際的編譯要求。
[0012] 另外,根據(jù)本發(fā)明上述實施例的可重構(gòu)計算循環(huán)映射優(yōu)化方法,還可以具有如下 附加的技術(shù)特征:
[0013] 進(jìn)一步地,步驟S1進(jìn)一步包括:
[0014] S101:建立所述內(nèi)外層循環(huán)模型:
[0015] min L〇= I: {Ldx}+I: {Ilix ? (TCix-l)}+II〇 ? (TC〇-l)
[0016] s.t.IIix>RecMIIix
[0017] IURecMII。
[0019] IIix,II0eN+
[0020] x = l,2, ? ? ?,m
[0021] 其中,ILx表示第x個內(nèi)層循環(huán),L。表示總延時,Ldx表示I Lx的DFG的延時,Wdx表示ILx 的DFG的寬度,11 ix表示的內(nèi)層迭代時間間隔,11。表示外層迭代時間間隔,TCix表示ILX的 內(nèi)層TC,TC。表示外層TCJpe表示可用的計算單元數(shù)量,m表示內(nèi)層循環(huán)的個數(shù),RecMIIix表示 ILX在依賴約束下的最優(yōu)迭代時間間隔,RecMII。表示外層在依賴約束下的最優(yōu)迭代時間間 隔;S102:內(nèi)層流水的寬度Wi、外層流水的寬度W。與各個II之間有如下關(guān)系:
[0025] ff〇 < Npe
[0026] 固定內(nèi)層流水的寬度I,然后讓最內(nèi)層迭代時間間隔取最小,使得外層II。的下限 也最小,最終使得L。也能取到最小值。
[0027]進(jìn)一步地,步驟S2進(jìn)一步包括:S201:使用單層流水的方式,根據(jù)所述最優(yōu)內(nèi)層迭 代時間間隔,對內(nèi)層各個部分分別進(jìn)行流水調(diào)度,得到各個內(nèi)層流水核心;S202:將各個內(nèi) 層流水線首尾相接,得到一整條完整的內(nèi)層流水;S203:根據(jù)所述最優(yōu)外層迭代時間間隔得 到所述外層流水核心。
[0028]進(jìn)一步地,步驟S3進(jìn)一步包括:S301:把所述外層流水核心分割成所述第一預(yù)設(shè)數(shù) 量的段落,每個段落有不同的內(nèi)層流水核心重復(fù)一定次數(shù)構(gòu)成;S302:從每個段落中任意截 取行數(shù)相當(dāng)于內(nèi)層流水核心的行數(shù)的公倍數(shù)的部分,其中,如果是裝入和排空階段,需要補 全算子;如果段的行數(shù)小于所述公倍數(shù),把整段全部截取;S303:將每個所述重復(fù)單元進(jìn)一 步壓縮為所述重復(fù)單元的元素,在配置信息中包含述重復(fù)單元的元素的數(shù)量。
[0029] 本發(fā)明的附加方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變 得明顯,或通過本發(fā)明的實踐了解到。
【附圖說明】
[0030] 本發(fā)明的上述和/或附加的方面和優(yōu)點從結(jié)合下面附圖對實施例的描述中將變得 明顯和容易理解,其中:
[0031 ]圖1是本發(fā)明一個實施例的可重構(gòu)計算循環(huán)映射優(yōu)化方法的流程圖;
[0032] 圖2是本發(fā)明一個實施例的可重構(gòu)計算循環(huán)映射優(yōu)化方法中原是兼容圖進(jìn)行壓縮 的不意圖;
[0033] 圖3(A)和圖3(B)是本發(fā)明一個實施例的可重構(gòu)計算循環(huán)映射優(yōu)化方法的一個示 例的示意圖。
【具體實施方式】
[0034] 下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終 相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附