亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于SIMD擴展部件的嵌套循環(huán)向量并行的實現(xiàn)方法及其裝置與流程

文檔序號:11285742閱讀:383來源:國知局
基于SIMD擴展部件的嵌套循環(huán)向量并行的實現(xiàn)方法及其裝置與流程

本發(fā)明屬于高性能計算并行化處理技術(shù)領(lǐng)域,特別涉及一種基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)方法及其裝置。



背景技術(shù):

人類對計算能力無休止的需求,使得并行計算技術(shù)越來越受到人們的重視,總體上并行硬件技術(shù)的發(fā)展要遠(yuǎn)遠(yuǎn)快于并行軟件技術(shù)的發(fā)展。simd擴展部件為提升程序性能提供了硬件支持,為充分發(fā)揮simd擴展的性能,需要充分發(fā)掘程序中的并行性,開發(fā)具有良好可擴展性的向量化程序。

雖然simd擴展部件和向量機都屬于單指令多數(shù)據(jù)流并行模式,但兩者的體系結(jié)構(gòu)在設(shè)計原則和硬件實現(xiàn)上有較大差異。具體表現(xiàn)為:1、simd擴展部件受限于功能部件集成數(shù)量和數(shù)據(jù)總線的寬度,其向量長度遠(yuǎn)遠(yuǎn)小于向量機,它能同時處理的數(shù)據(jù)個數(shù)是有限的。而向量機只要操作允許,向量長度可以不受限制。2、simd擴展部件的所有操作大都是在向量寄存器上執(zhí)行的,通過向量裝載指令將內(nèi)存中的向量數(shù)據(jù)存放到向量寄存器,然后執(zhí)行向量操作,再將向量結(jié)果寫到內(nèi)存中。而向量機可以直接在向量數(shù)據(jù)上進行運算。3、simd部件與標(biāo)量執(zhí)行部件共用一個指令緩存和指令隊列,simd指令之間是串行的。而向量機具有獨立的指令部件,可向多個執(zhí)行單元發(fā)射不同的向量指令。以上差異的第一條使得向量機一般采用向量全長的數(shù)據(jù)加工方式,一次向量操作將要從頭到尾執(zhí)行全部數(shù)據(jù)的運算,稱之為全局并行;而simd擴展部件一般采用分段的數(shù)據(jù)加工方式,每次向量操作只執(zhí)行一小段數(shù)據(jù)的運算,稱之為局部并行。圖1描述循環(huán)迭代執(zhí)行時全局并行與局部并行時的區(qū)別。

kennedy等人最初提出了針對多層循環(huán)的向量代碼生成方法codegen,實際上是面向向量機的全局并行性的一種向量化方法。這種方法并不能直接應(yīng)用于當(dāng)前主流的simd短向量擴展部件。因此,當(dāng)前優(yōu)化編譯器中實際采用的向量化方法都在傳統(tǒng)方法的基礎(chǔ)上考慮了simd的局部并行特性,同時為了簡化算法,一般僅實現(xiàn)了最內(nèi)層循環(huán)的向量化(或次外層循環(huán)的向量化)。上述的方法分別實現(xiàn)了“嵌套循環(huán)的全局并行”和“單層循環(huán)的局部并行”的發(fā)掘。但目前并沒有一個好的方法來發(fā)掘高性能計算并行處理中的“嵌套循環(huán)局部并行性”。



技術(shù)實現(xiàn)要素:

針對現(xiàn)有技術(shù)中的不足,本發(fā)明提供一種基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)方法及其裝置,針對simd擴展部件特征,通過分段技術(shù)對嵌套循環(huán)局部并行性發(fā)掘,實現(xiàn)整個循環(huán)嵌套的simd并行化,有效保證高性能計算線程間負(fù)載均衡,實現(xiàn)性能優(yōu)化。

按照本發(fā)明所提供的設(shè)計方案,一種基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)方法,包含:通過設(shè)定破環(huán)測試參數(shù)對待并行化程序區(qū)域進行依賴環(huán)破除測試,將simd擴展部件對應(yīng)于待并行化程序區(qū)域中循環(huán)的局部并行,通過循環(huán)分段發(fā)掘待并行化程序區(qū)域中單層循環(huán)局部并行性;將循環(huán)分段依次應(yīng)用在循環(huán)嵌套的每一層循環(huán),對待并行化程序區(qū)域中整個循環(huán)嵌套進行simd并行化處理。

上述的,通過設(shè)定破環(huán)測試參數(shù)對待并行化程序區(qū)域進行依賴環(huán)破除測試中,破壞測試參數(shù)包含循環(huán)層及分段長度,設(shè)定分段長度vf,通過分段長度vf對待并行化程序區(qū)域中存在的依賴環(huán)進行破環(huán)標(biāo)記。

上述的,將循環(huán)分段依次應(yīng)用在循環(huán)嵌套的每一層循環(huán),對待并行化程序區(qū)域中整個循環(huán)嵌套進行simd并行化處理中:通過循環(huán)分段從外層到內(nèi)層依次應(yīng)用于整個循環(huán)嵌套,包含如下內(nèi)容:

a)通過依賴環(huán)破除測試,若當(dāng)前循環(huán)層lcur存在可破除依賴環(huán),則對當(dāng)前循環(huán)層lcur進行循環(huán)分段,變換為lcur1和lcur2兩層循環(huán);

b)對分段后的內(nèi)層循環(huán)lcur2進行單層循環(huán)simd并行化,將當(dāng)前循環(huán)層lcur設(shè)置為下一層循環(huán),轉(zhuǎn)向步驟a進行循環(huán)迭代,直到下一層循環(huán)為空。

上述的,實現(xiàn)方法具體過程如下:

步驟1、對待并行化程序區(qū)域進行依賴分析,獲取所有語句之間的依賴圖;

步驟2、在依賴圖中求解得到強連通區(qū)域集合,強連通區(qū)域集合包含多個強連通區(qū)域;

步驟3、將每個強連通區(qū)域看作單個節(jié)點,獲得依賴凝聚圖;

步驟4、對依賴凝聚圖中的節(jié)點進行拓?fù)渑判?,得到?jié)點集合序列;

步驟5、通過尋找語句集合獲取依賴環(huán)集合,并判定依賴環(huán)集合是否為空集,若為空集則跳轉(zhuǎn)至步驟7執(zhí)行,否則,進入步驟6;

步驟6、對循環(huán)層進行循環(huán)分段,并標(biāo)記循環(huán)分段后的可向量化語句,更新依賴圖、依賴凝聚圖及依賴凝聚圖的拓?fù)渑判?,得到新的?jié)點集合序列;

步驟7、遍歷節(jié)點集合序列中的每個節(jié)點,判斷節(jié)點集合序列是否為依賴環(huán),若是,則刪除待分段循環(huán)層上的依賴,并遞歸實現(xiàn)循環(huán)分段的嵌套循環(huán)向量化;否則,針對相應(yīng)節(jié)點生成向量語句。

更進一步,步驟2中,在依賴圖中求解得到強連通區(qū)域集合:通過tarjan算法求解最大強連通區(qū)域集合{scc1,scc2,…,sccm}。

優(yōu)選地,步驟3中依賴凝聚圖:通過凝聚每個強連通區(qū)域為單節(jié)點,獲取依賴凝聚圖,其中,依賴凝聚圖為有向無環(huán)圖。

優(yōu)選地,步驟4中,將依賴凝聚圖中的m個節(jié)點進行拓?fù)渑判颍玫降墓?jié)點集合序列表示為:

πs{π1,π2,…,πm}。

優(yōu)選地,步驟5中,通過尋找語句集合獲取依賴環(huán)集合,尋找滿足如下條件的語句:1)語句屬于設(shè)定的并行循環(huán)最小嵌套層;2)且語句存在于強連通區(qū)域中,得到語句集合,記為sk{sk1,sk2,…,ske},將相關(guān)的依賴環(huán)集合記為πk{πk1,πk2,…,πkf}。

一種基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)裝置,包含依賴環(huán)破除測試模塊及循環(huán)分段模塊,其中,

依賴環(huán)破除測試模塊,用于通過設(shè)定破環(huán)測試參數(shù)對待并行化程序區(qū)域進行依賴環(huán)破除測試,并將測試結(jié)果反饋至循環(huán)分段模塊;

循環(huán)分段模塊,用于將simd擴展部件對應(yīng)于待并行化程序區(qū)域中循環(huán)的局部并行,并根據(jù)依賴環(huán)破除測試模塊反饋通過循環(huán)分段發(fā)掘待并行化程序區(qū)域中單層循環(huán)局部并行性;將循環(huán)分段依次應(yīng)用在循環(huán)嵌套的每一層循環(huán),對待并行化程序區(qū)域中整個循環(huán)嵌套進行simd并行化處理。

一種基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)裝置,包含:依賴分析模塊、依賴環(huán)獲取模塊、節(jié)點凝聚模塊、拓?fù)渑判蚰K、依賴環(huán)測試模塊、循環(huán)分段模塊及節(jié)點遍歷模塊,其中,

依賴分析模塊,用于對待并行化程序區(qū)域進行依賴分析,獲取所有語句之間的依賴圖;

依賴環(huán)獲取模塊,用于在依賴圖中求解得到強連通區(qū)域集合,強連通區(qū)域集合包含多個強連通區(qū)域;

節(jié)點凝聚模塊,用于將每個強連通區(qū)域看作單個節(jié)點,獲得依賴凝聚圖;

拓?fù)渑判蚰K,用于對依賴凝聚圖中的節(jié)點進行拓?fù)渑判?,得到?jié)點集合序列;

依賴環(huán)測試模塊,用于通過尋找語句集合獲取依賴環(huán)集合,并判定依賴環(huán)集合是否為空集,若為空集反饋至節(jié)點遍歷模塊,否則,反饋至循環(huán)分段模塊;

循環(huán)分段模塊,用于對循環(huán)層進行循環(huán)分段,并標(biāo)記循環(huán)分段后的可向量化語句,更新依賴圖、依賴凝聚圖及依賴凝聚圖的拓?fù)渑判?,得到新的?jié)點集合序列;

節(jié)點遍歷模塊,用于遍歷節(jié)點集合序列中的每個節(jié)點,判斷節(jié)點集合序列是否為依賴環(huán),若是,則刪除待分段循環(huán)層上的依賴,并遞歸實現(xiàn)循環(huán)分段的嵌套循環(huán)向量化;否則,針對相應(yīng)節(jié)點生成向量語句。

本發(fā)明的有益效果:

本發(fā)明將simd短向量擴展部件與向量機區(qū)分開來,將simd短向量擴展部件對應(yīng)于循環(huán)的局部并行;通過采用循環(huán)分段依次應(yīng)用于循環(huán)嵌套的每一層循環(huán)實現(xiàn)整個循環(huán)嵌套的simd并行化,并通過依賴環(huán)破除測試,減少不必要的循環(huán)分段造成的性能損耗,充分發(fā)掘單層循環(huán)的局部并行性,實現(xiàn)整個循環(huán)嵌套的simd并行化,本發(fā)明可用于實現(xiàn)程序自動simd并行化,產(chǎn)生高效且健壯的并行代碼,對充分發(fā)揮計算機系統(tǒng)的硬件優(yōu)勢,提高計算機系統(tǒng)的性能具有重要意義。

附圖說明:

圖1為循環(huán)迭代全局并行與局部并行示意圖;

圖2為本發(fā)明的方法流程示意圖;

圖3為實施例實現(xiàn)過程示意圖;

圖4為實施例中無環(huán)循環(huán)和有環(huán)循環(huán)對比示意圖;

圖5為實施例中循環(huán)分段消除依賴環(huán)示意圖;

圖6為本發(fā)明的裝置示意圖之一;

圖7為本發(fā)明的裝置示意圖之二。

具體實施方式:

下面結(jié)合附圖和技術(shù)方案對本發(fā)明作進一步清楚、完整的說明,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

實施例,參見圖2所示,一種基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)方法,包含:通過設(shè)定破環(huán)測試參數(shù)對待并行化程序區(qū)域進行依賴環(huán)破除測試,將simd擴展部件對應(yīng)于待并行化程序區(qū)域中循環(huán)的局部并行,通過循環(huán)分段發(fā)掘待并行化程序區(qū)域中單層循環(huán)局部并行性;將循環(huán)分段依次應(yīng)用在循環(huán)嵌套的每一層循環(huán),對待并行化程序區(qū)域中整個循環(huán)嵌套進行simd并行化處理。

本實施例中,面向循環(huán)嵌套,針對simd短向量擴展部件,充分發(fā)掘多層循環(huán)同時并行化,大大提升simd短向量擴展部件的執(zhí)行效率。

為了減少不必要的循環(huán)分段帶來的性能損耗,在真正實施循環(huán)分段之前首先進行依賴環(huán)破除測試,只有當(dāng)循環(huán)分段對simd并行是“有利”的,循環(huán)分段打破某個或某些依賴環(huán)時,進行循環(huán)分段,另一個實施例中,通過設(shè)定破環(huán)測試參數(shù)對待并行化程序區(qū)域進行依賴環(huán)破除測試中,破壞測試參數(shù)包含循環(huán)層及分段長度,設(shè)定分段長度vf,通過分段長度vf對待并行化程序區(qū)域中存在的依賴環(huán)進行破環(huán)標(biāo)記。

又一實施例中,將循環(huán)分段依次應(yīng)用在循環(huán)嵌套的每一層循環(huán),對待并行化程序區(qū)域中整個循環(huán)嵌套進行simd并行化處理中:通過循環(huán)分段從外層到內(nèi)層依次應(yīng)用于整個循環(huán)嵌套,包含如下內(nèi)容:

a)通過依賴環(huán)破除測試,若當(dāng)前循環(huán)層lcur存在可破除依賴環(huán),則對當(dāng)前循環(huán)層lcur進行循環(huán)分段,變換為lcur1和lcur2兩層循環(huán);

b)對分段后的內(nèi)層循環(huán)lcur2進行單層循環(huán)simd并行化,將當(dāng)前循環(huán)層lcur設(shè)置為下一層循環(huán),轉(zhuǎn)向步驟a進行循環(huán)迭代,直到下一層循環(huán)為空。

將循環(huán)分段技術(shù)從外層到內(nèi)層依次應(yīng)用于循環(huán)嵌套,實現(xiàn)循環(huán)嵌套中盡可能多的語句的simd并行化。

再一實施例中,參見圖3所示,基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)方法,具體步驟如下:

步驟1、對待并行化程序區(qū)域進行依賴分析,獲取所有語句之間的依賴圖;

步驟2、在依賴圖中求解得到強連通區(qū)域集合,強連通區(qū)域集合包含多個強連通區(qū)域;

步驟3、將每個強連通區(qū)域看作單個節(jié)點,獲得依賴凝聚圖;

步驟4、對依賴凝聚圖中的節(jié)點進行拓?fù)渑判?,得到?jié)點集合序列;

步驟5、通過尋找語句集合獲取依賴環(huán)集合,并判定依賴環(huán)集合是否為空集,若為空集則跳轉(zhuǎn)至步驟7執(zhí)行,否則,進入步驟6;

步驟6、對循環(huán)層進行循環(huán)分段,并標(biāo)記循環(huán)分段后的可向量化語句,更新依賴圖、依賴凝聚圖及依賴凝聚圖的拓?fù)渑判颍玫叫碌墓?jié)點集合序列;

步驟7、遍歷節(jié)點集合序列中的每個節(jié)點,判斷節(jié)點集合序列是否為依賴環(huán),若是,則刪除待分段循環(huán)層上的依賴,并遞歸實現(xiàn)循環(huán)分段的嵌套循環(huán)向量化;否則,針對相應(yīng)節(jié)點生成向量語句。

更進一步,另一個實施例中,在依賴圖中求解得到強連通區(qū)域集合,通過tarjan算法求解最大強連通區(qū)域集合{scc1,scc2,…,sccm}。

另一實施例中,依賴凝聚圖:通過凝聚每個強連通區(qū)域為單節(jié)點,獲取依賴凝聚圖,其中,依賴凝聚圖為有向無環(huán)圖。

又一實施例中,將依賴凝聚圖中的m個節(jié)點進行拓?fù)渑判?,得到的?jié)點集合序列表示為:πs{π1,π2,…,πm}。

在其他實施例中,通過尋找語句集合獲取依賴環(huán)集合,尋找滿足如下條件的語句:1)語句屬于設(shè)定的并行循環(huán)最小嵌套層;2)且語句存在于強連通區(qū)域中,得到語句集合,記為sk{sk1,sk2,…,ske},將相關(guān)的依賴環(huán)集合記為πk{πk1,πk2,…,πkf}。

依賴環(huán)破除測試:其目的是減少不必要的循環(huán)分段帶來的性能損耗。破環(huán)測試相關(guān)的參數(shù)為:循環(huán)層和分段長度。為了便于產(chǎn)生向量化代碼,分段長度定為vf。編譯器中,依賴環(huán)是以強連通圖的形式存在的,若強連通圖是可拆分的,那么依賴環(huán)可破。破環(huán)測試算法偽代碼可設(shè)計如下:

基于codegen的改進算法simdcodegen,即基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)算法,可設(shè)計為如下所示:

該算法可實現(xiàn)針對simd短向量部件的嵌套循環(huán)向量代碼生成,在codegen的基礎(chǔ)上增加了破環(huán)測試和循環(huán)分段,增強了算法對嵌套循環(huán)的simd并行發(fā)掘能力。

循環(huán)分段是對迭代的循環(huán)變換。循環(huán)分段將單層循環(huán)變換為兩層嵌套循環(huán),外層循環(huán)把原循環(huán)迭代空間劃分為不同的段,每個段中執(zhí)行原循環(huán)的多次迭代,與內(nèi)層循環(huán)對應(yīng)。循環(huán)分段總是合法的,段長可根據(jù)需要選取。如果原循環(huán)可并行化的,則分段后依然可并行化。將循環(huán)分段用于發(fā)掘simd并行性,實質(zhì)上是通過循環(huán)分段技術(shù)來消除循環(huán)中的某些依賴,進而達(dá)到消除依賴環(huán)的目的。循環(huán)分段消除依賴環(huán)基于這樣的事實:程序中的依賴環(huán)必然存在循環(huán)攜帶依賴,該依賴的依賴距離記為distance,那么如果循環(huán)迭代空間長度小于等于distance,那么該依賴實際上是不存在的。循環(huán)分段就是通過縮小段內(nèi)迭代空間來消除依賴距離較大的循環(huán)攜帶依賴。針對simd短向量并行部件,每次可并行執(zhí)行的迭代次數(shù)為vf(vectorfactor,向量因子),考慮以vf為單位段長進行循環(huán)分段,那么段內(nèi)所有依賴距離大于vf的依賴將被消除。

以圖4(2)所示的循環(huán)來為例說明循環(huán)分段的作用。假定vf=4,分段后的結(jié)果如圖5(1)所示,方框內(nèi)的代碼為內(nèi)層(段內(nèi))循環(huán),索引下界為i,上界為i+3,此處min(i+3,100)用來保證分段后循環(huán)的計算范圍不會超出源循環(huán)。對于內(nèi)層循環(huán),迭代次數(shù)小于等于4,語句s2到s1的距離為4的循環(huán)攜帶依賴可消除,因此依賴環(huán)可破除,最終可得到如圖5(2)所示的向量化結(jié)果。

對應(yīng)于上述的基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)方法的實施例,如圖6所示,提供一種基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)裝置,包含依賴環(huán)破除測試模塊101及循環(huán)分段模塊102,其中,

依賴環(huán)破除測試模塊101,用于通過設(shè)定破環(huán)測試參數(shù)對待并行化程序區(qū)域進行依賴環(huán)破除測試,并將測試結(jié)果反饋至循環(huán)分段模塊;

循環(huán)分段模塊102,用于將simd擴展部件對應(yīng)于待并行化程序區(qū)域中循環(huán)的局部并行,并根據(jù)依賴環(huán)破除測試模塊反饋通過循環(huán)分段發(fā)掘待并行化程序區(qū)域中單層循環(huán)局部并行性;將循環(huán)分段依次應(yīng)用在循環(huán)嵌套的每一層循環(huán),對待并行化程序區(qū)域中整個循環(huán)嵌套進行simd并行化處理。

對應(yīng)于上述的基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)方法的另一實施例,如圖7所示,一種基于simd擴展部件的嵌套循環(huán)向量并行的實現(xiàn)裝置,包含:依賴分析模塊201、依賴環(huán)獲取模塊202、節(jié)點凝聚模塊203、拓?fù)渑判蚰K204、依賴環(huán)測試模塊205、循環(huán)分段模塊206及節(jié)點遍歷模塊207,其中,

依賴分析模塊201,用于對待并行化程序區(qū)域進行依賴分析,獲取所有語句之間的依賴圖;

依賴環(huán)獲取模塊202,用于在依賴圖中求解得到強連通區(qū)域集合,強連通區(qū)域集合包含多個強連通區(qū)域;

節(jié)點凝聚模塊203,用于將每個強連通區(qū)域看作單個節(jié)點,獲得依賴凝聚圖;

拓?fù)渑判蚰K204,用于對依賴凝聚圖中的節(jié)點進行拓?fù)渑判?,得到?jié)點集合序列;

依賴環(huán)測試模塊205,用于通過尋找語句集合獲取依賴環(huán)集合,并判定依賴環(huán)集合是否為空集,若為空集反饋至節(jié)點遍歷模塊,否則,反饋至循環(huán)分段模塊;

循環(huán)分段模塊206,用于對循環(huán)層進行循環(huán)分段,并標(biāo)記循環(huán)分段后的可向量化語句,更新依賴圖、依賴凝聚圖及依賴凝聚圖的拓?fù)渑判颍玫叫碌墓?jié)點集合序列;

節(jié)點遍歷模塊207,用于遍歷節(jié)點集合序列中的每個節(jié)點,判斷節(jié)點集合序列是否為依賴環(huán),若是,則刪除待分段循環(huán)層上的依賴,并遞歸實現(xiàn)循環(huán)分段的嵌套循環(huán)向量化;否則,針對相應(yīng)節(jié)點生成向量語句。

本發(fā)明的實施例中,采用循環(huán)分段技術(shù)來實現(xiàn)單層循環(huán)局部并行性的發(fā)掘。循環(huán)分段技術(shù)將單層循環(huán)變換為兩層嵌套循環(huán),外層循環(huán)把原循環(huán)迭代空間劃分為不同的段,每個段中執(zhí)行原循環(huán)的多次迭代,與內(nèi)層循環(huán)對應(yīng),內(nèi)層循環(huán)迭代空間的變化使得依賴發(fā)生改變。將循環(huán)分段用于發(fā)掘simd并行性,實質(zhì)上是循環(huán)分段就是通過縮小段內(nèi)迭代空間來消除依賴距離較大的循環(huán)攜帶依賴,進而達(dá)到消除依賴環(huán)的目的,而依賴環(huán)是阻礙simd并行化的主要因素。循環(huán)分段后,如果內(nèi)層循環(huán)中存在可并行的語句,那么執(zhí)行對應(yīng)的simd語句替換和重排序。根據(jù)依賴圖獲得拓?fù)湫蛄?,使得simd語句的排序符合上述序列,同時還要調(diào)整循環(huán)頭,使其適應(yīng)于新生成的simd語句。為了減少不必要的循環(huán)分段帶來的性能損耗,在真正實施循環(huán)分段之前首先要進行依賴環(huán)破除測試。只有當(dāng)循環(huán)分段對于simd并行是“有利的”,即循環(huán)分段可以打破某個或某些依賴環(huán)時,才進行循環(huán)分段。破環(huán)測試相關(guān)的參數(shù)為:循環(huán)層和分段長度。為了便于產(chǎn)生simd代碼,分段長度定為vf,編譯器中,依賴環(huán)是以強連通圖的形式存在的,若循環(huán)分段使得某些強連通圖可拆分,那么就將依賴環(huán)標(biāo)記為可破除,針對該層循環(huán)實施循環(huán)分段,減少不必要的循環(huán)分段造成的性能損耗,充分發(fā)掘單層循環(huán)的局部并行性,實現(xiàn)整個循環(huán)嵌套的simd并行化,充分發(fā)揮simd短向量擴展部件的并行性,實現(xiàn)高性能計算線程間負(fù)載均衡,執(zhí)行效率高,實現(xiàn)性能優(yōu)化,對高性能計算具有重要意義。

本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。

本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他科編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本申請將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1