專(zhuān)利名稱(chēng):基于OpenMP的小波和小波包多核并行計(jì)算方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是一種并行技術(shù)方法,具體的說(shuō)是一種基于OpenMP并行環(huán)境,改善小波與小波包變換運(yùn)算耗時(shí)的單機(jī)多核并行計(jì)算方法。
背景技術(shù):
20世紀(jì)70年代開(kāi)始,處理器的發(fā)展突飛猛進(jìn),許多知名廠(chǎng)家例如htel、AMD、IBM、 摩托羅拉等等都紛紛推出一代又一代處理器,它們的性能也隨著不斷增多集成晶體管數(shù)量和提高主頻而變得越來(lái)越強(qiáng)大,1965年,htel CEO戈登摩爾預(yù)見(jiàn)了處理器的發(fā)展趨勢(shì),提出了著名的摩爾定律,幾十年以來(lái),摩爾定律一直引導(dǎo)著計(jì)算機(jī)行業(yè)以及半導(dǎo)體行業(yè)的前進(jìn),同時(shí),處理器的發(fā)展也不斷印證摩爾定律的魅力。直到21世紀(jì),摩爾定律的局限性開(kāi)始遭受行業(yè)內(nèi)的爭(zhēng)議,這是由于處理器的性能能夠不斷得到提高的原因,主要基于兩個(gè)方面一是半導(dǎo)體工藝的逐漸進(jìn)步;二是處理器體系結(jié)構(gòu)的不斷發(fā)展,它們相輔相成,互相刺激著促進(jìn)彼此的發(fā)展,但由于工藝技術(shù)的限制,這個(gè)規(guī)律很難再維持下去,半導(dǎo)體工藝已經(jīng)達(dá)到了物理極限,處理器的頻率也就很難再有所提高,如此,各處理器廠(chǎng)商轉(zhuǎn)而向單個(gè)芯片上去集成多個(gè)處理器內(nèi)核,即所謂的多核處理器誕生了。早在單核處理器的時(shí)代,應(yīng)用程序已經(jīng)能夠支持多線(xiàn)程技術(shù),但是不同的是,單核內(nèi)的多線(xiàn)程運(yùn)行是串行的,即具有并發(fā)性,多個(gè)線(xiàn)程是交替執(zhí)行,在同一時(shí)刻只能有一個(gè)線(xiàn)程執(zhí)行,而多核體系是通過(guò)增加計(jì)算機(jī)中物理處理器的數(shù)量,它能夠有效地利用線(xiàn)程級(jí),實(shí)現(xiàn)并行性,因此說(shuō)多核處理器系統(tǒng)支持真正意義上的并行執(zhí)行,表現(xiàn)出多個(gè)線(xiàn)程或者進(jìn)程能夠在多個(gè)處理器內(nèi)核上同時(shí)執(zhí)行。多核處理器誕生后,并行計(jì)算得到的關(guān)注越來(lái)越多,所謂的并行計(jì)算是指,由運(yùn)行在多個(gè)部件上的分任務(wù)合作來(lái)求解一個(gè)規(guī)模很大的問(wèn)題的一種計(jì)算方法,它可以降低單個(gè)問(wèn)題的求解時(shí)間、增加問(wèn)題的求解規(guī)模、提高問(wèn)題的求解精度、具有更高的容錯(cuò)性、可用性及系統(tǒng)吞吐率等。未來(lái)5年,英特爾和微軟公司將投入2000萬(wàn)美元,與美國(guó)伊利諾伊大學(xué)厄巴納-尚佩恩分校以及加利福尼亞大學(xué)伯克利分校合作,建立并行計(jì)算機(jī)研究中心。微軟研究中心行政副總裁托尼·海伊說(shuō)“我們現(xiàn)在已經(jīng)進(jìn)入了計(jì)算機(jī)行業(yè)的劇烈變革中?!边@將對(duì)超級(jí)電腦和服務(wù)器軟件研發(fā)造成深遠(yuǎn)的影響。現(xiàn)在,并行計(jì)算已廣泛地應(yīng)用于國(guó)民經(jīng)濟(jì)、 國(guó)防建設(shè)和科技發(fā)展中具有深遠(yuǎn)影響的重大課題里,被認(rèn)為是科學(xué)家和工程師用來(lái)解決各種領(lǐng)域問(wèn)題的標(biāo)準(zhǔn)方法,例如在銀河系的演變過(guò)程、氣候模擬、飛行器設(shè)計(jì)、分子動(dòng)力學(xué)等領(lǐng)域都引進(jìn)了并行計(jì)算,多核架構(gòu)計(jì)算機(jī)及并行計(jì)算技術(shù)的快速發(fā)展為建模仿真應(yīng)用中的多核計(jì)算打下了堅(jiān)實(shí)的基礎(chǔ)。這其中最突出的一點(diǎn),是并行算法可以獲得與串行算法相同的實(shí)驗(yàn)結(jié)果并且與實(shí)測(cè)結(jié)果相吻合,從而使計(jì)算時(shí)間成倍降低,為各種科學(xué)研究開(kāi)發(fā)“實(shí)時(shí)”計(jì)算方法提供了可行的途徑。小波變換算法依據(jù)其在時(shí)頻域同時(shí)具有良好局部化的性質(zhì),能夠根據(jù)信號(hào)不同的頻率成分,在時(shí)域和空間域自動(dòng)調(diào)節(jié)取樣疏密的這一特點(diǎn),在諸多方面都有其顯著優(yōu)勢(shì),例如在電力設(shè)備狀態(tài)監(jiān)視和故障診斷、電力系統(tǒng)諧波分析、電力系統(tǒng)暫態(tài)穩(wěn)定、電力系統(tǒng)動(dòng)態(tài)安全分析、神經(jīng)網(wǎng)絡(luò)和專(zhuān)家系統(tǒng)、抗電磁干擾、輸電線(xiàn)路故障定位、電力系統(tǒng)短期負(fù)荷預(yù)測(cè)、 高壓直流輸電系統(tǒng)等等。但是傳統(tǒng)小波變換采用卷積運(yùn)算方法,過(guò)程復(fù)雜,運(yùn)算量大,實(shí)時(shí)性差,然而它在諸多應(yīng)用領(lǐng)域又對(duì)實(shí)時(shí)準(zhǔn)確性要求嚴(yán)格,例如電力設(shè)備狀態(tài)監(jiān)視和故障診斷就是分解和處理電力系統(tǒng)基本設(shè)備在運(yùn)行中產(chǎn)生的各種電磁、機(jī)械等物理信號(hào),要求能實(shí)時(shí)地判別其狀態(tài),以期在故障初期或故障時(shí)發(fā)出警報(bào);在高壓直流輸電系統(tǒng)中,對(duì)整流器、逆變器觸發(fā)脈沖的控制要求能迅速、準(zhǔn)確地實(shí)現(xiàn);在電力系統(tǒng)暫態(tài)穩(wěn)定性中,同樣也要求穩(wěn)定性預(yù)測(cè)的實(shí)時(shí)性和準(zhǔn)確性。因此小波變換只有與并行處理技術(shù)相結(jié)合,才可能在實(shí)際應(yīng)用領(lǐng)域充分發(fā)揮作用。經(jīng)過(guò)幾十年的發(fā)展,通過(guò)提高時(shí)鐘頻率、提高處理器內(nèi)部并行度以及使用多個(gè)處理器,超級(jí)計(jì)算機(jī)的性能提高了 10億倍,目前的超級(jí)計(jì)算機(jī)是一個(gè)擁有成千上萬(wàn)個(gè)處理器的并行計(jì)算機(jī)系統(tǒng)。并行計(jì)算目前研究主要基于兩個(gè)方面一是并行計(jì)算機(jī)的系統(tǒng)結(jié)構(gòu)研究;二是并行計(jì)算方法與軟件實(shí)現(xiàn)的研究。在硬件方面,部分并行計(jì)算機(jī)雖然不能被稱(chēng)作超級(jí)計(jì)算機(jī), 但具有中等規(guī)模的并行計(jì)算機(jī)仍然可以用比單處理器系統(tǒng)快得多的速度來(lái)解決問(wèn)題。商業(yè)化的并行計(jì)算機(jī)的價(jià)格通常在幾十萬(wàn)美元到幾百萬(wàn)美元之間。許多研究機(jī)構(gòu)和大學(xué)正在利用商用的現(xiàn)成部件來(lái)構(gòu)建并行計(jì)算機(jī)。盡管這些系統(tǒng)沒(méi)有像商業(yè)并行計(jì)算機(jī)一樣在計(jì)算性能和處理器間的通信方面實(shí)現(xiàn)很好的平衡,但是這些系統(tǒng)的成本比較便宜。目前并行計(jì)算的硬件系統(tǒng)有以下幾種方式共享存儲(chǔ)對(duì)稱(chēng)處理機(jī)系統(tǒng)(SMP)、大規(guī)模并行計(jì)算機(jī)系統(tǒng)(MPP)、機(jī)群系統(tǒng)(Cluster)、SMP/DSM機(jī)群、微機(jī)/工作站機(jī)群。在軟件發(fā)展中,并行的軟件開(kāi)發(fā)研究遠(yuǎn)遠(yuǎn)落后于并行系統(tǒng)體系結(jié)構(gòu)的發(fā)展,與串行軟件的數(shù)量相比比較少。并行編程環(huán)境幾乎沒(méi)有什么大的改進(jìn)。目前主要有兩個(gè)標(biāo)準(zhǔn)MPI和OpenMP。MPI 支持消息傳遞方式的并行編程,允許不共享內(nèi)存的多個(gè)處理器合作進(jìn)行并行計(jì)算。OpenMP 是一套編譯指導(dǎo)語(yǔ)句,幫助編譯器利用SMP系統(tǒng)內(nèi)多個(gè)處理器的多線(xiàn)程代碼。MPI和OpenMP 還可以結(jié)合起來(lái),用于SMP集群系統(tǒng)的編程。另外以往在UNIX系統(tǒng)中使用的POSIXthreads 標(biāo)準(zhǔn)也可以利用多線(xiàn)程技術(shù)實(shí)現(xiàn)并行計(jì)算,總之并行編程仍處于蓬勃發(fā)展的時(shí)期。從20世紀(jì)開(kāi)始,國(guó)內(nèi)外學(xué)者開(kāi)始關(guān)注小波并行化算法的研究,利用各種并行計(jì)算開(kāi)發(fā)平臺(tái),對(duì)各種小波變換的可并行性進(jìn)行分析與實(shí)現(xiàn),0. M. Nielsen和M. Hegland提出了新的并行小波算法,并稱(chēng)其為communication-efficient FWT。該算法與處理器數(shù)目無(wú)關(guān),具有較好的可擴(kuò)展性,實(shí)現(xiàn)途徑是通過(guò)避免使用分布矩陣的轉(zhuǎn)置來(lái)減少各處理機(jī)之間的通訊開(kāi)銷(xiāo)以求達(dá)到較高的運(yùn)行速率Judith Μ. Ford, Ke Chen和Neville J. R)rd提出了并行小波算法PFWT。該算法能自適應(yīng)于任意數(shù)目的處理機(jī)中;張艷,孫世新,劉錦德設(shè)計(jì)了一種網(wǎng)格結(jié)構(gòu)上圖像小波變換的并行算法,其運(yùn)算特點(diǎn)是負(fù)載平衡,且通信只在少數(shù)幾個(gè)處理機(jī)間進(jìn)行;王攀峰,杜云飛等提出了一種新的基于雙樹(shù)復(fù)小波變換的并行融合算法 (PACWT)。算法基本克服了單機(jī)處理在計(jì)算能力和存儲(chǔ)空間上的限制;郝燕玲,劉營(yíng)針對(duì)離散小波變換硬件資源占用率高的問(wèn)題,提出了一種應(yīng)用于JPEG20000的離散小波變換并行超大規(guī)模集成(VLSI)結(jié)構(gòu)。研究表明該結(jié)構(gòu)能大大提高硬件資源利用率;邵政將三維小波壓縮方法在多機(jī)網(wǎng)絡(luò)上利用MPI編程環(huán)境實(shí)現(xiàn)圖像壓縮,相較串行計(jì)算計(jì)算時(shí)間大大改善。文獻(xiàn)[34]在機(jī)群環(huán)境下利用MPI環(huán)境對(duì)2DWT進(jìn)行并行化。楊浩欽同樣利用MPI環(huán)境對(duì)小波并行化,用于地震數(shù)據(jù)的壓縮編碼。其表現(xiàn)主要集中在以下幾個(gè)方面(1)大部分研究應(yīng)用單一,主要表現(xiàn)在選取二維小波來(lái)對(duì)圖像處理問(wèn)題的計(jì)算時(shí)間進(jìn)行改善。針對(duì)二維小波的變換特性,設(shè)計(jì)并行小波方法。(2)實(shí)現(xiàn)平臺(tái)以往大部分文獻(xiàn)的研究平臺(tái)都是多機(jī)處理器,但隨著多核計(jì)算機(jī)的發(fā)展,相對(duì)于多機(jī)處理器,單機(jī)多核處理器造價(jià)低,通信消耗少,更加方便。(3)并行方法由于實(shí)現(xiàn)平臺(tái)的不同,采用的方法為針對(duì)分布式存儲(chǔ)器的并行編程環(huán)境。本發(fā)明的目的在于提供一種基于OpenMP的并行小波與小波包并行方案,該種算法可以避免多機(jī)結(jié)構(gòu)由于維修、通信等等帶來(lái)的冗余開(kāi)銷(xiāo),同時(shí)在適應(yīng)當(dāng)今多核處理器的應(yīng)用前景下,能夠大大提高小波與小波包變化的計(jì)算速度,增加它們的實(shí)用性。本發(fā)明實(shí)現(xiàn)其發(fā)明目的所采用的技術(shù)方案是,一種基于OpenMP的小波和小波包多核并行計(jì)算方法,其步驟為a、小波和小波包變化軟件熱點(diǎn)分析首先基于C語(yǔ)言編寫(xiě)串行程序,采用Intel ParallelAmplifier來(lái)對(duì)小波與小波包串行程序做一個(gè)熱點(diǎn)(Hotspots)分析,小波與小波包分解與重構(gòu)是最耗時(shí)的函數(shù);b、小波和小波包變化潛在并行性分析分析卷積過(guò)程卷積計(jì)算結(jié)果與原始數(shù)據(jù)序列直接相關(guān),也就是說(shuō),在不同位置上的待分解數(shù)據(jù)與濾波器的卷積后得到的是不同的卷積結(jié)果。而不同位置上的待分解數(shù)據(jù)在做卷積過(guò)程時(shí)并沒(méi)有直接相關(guān)聯(lián);分析數(shù)據(jù)回存過(guò)程數(shù)據(jù)序列之間亦沒(méi)有相關(guān)性,這一過(guò)程同樣可以進(jìn)行并行執(zhí)行。分解系數(shù)重構(gòu)過(guò)程一方面各個(gè)系數(shù)之間的卷積運(yùn)算互不影響,另一方面,低頻重構(gòu)濾波器與近似系數(shù)和高頻重構(gòu)濾波器與細(xì)節(jié)系數(shù)的卷積過(guò)程互不影響。這一過(guò)程亦可以進(jìn)行并行執(zhí)行。小波包特殊性還表現(xiàn)在近似系數(shù)與細(xì)節(jié)系數(shù)執(zhí)行任務(wù)分離。由于小波包在分解的第二層后,近似系數(shù)與細(xì)節(jié)系數(shù)再做進(jìn)一步運(yùn)算時(shí),它們之間已經(jīng)沒(méi)有關(guān)系,兩部分計(jì)算可以考慮同時(shí)進(jìn)行。C、使用OpenMP并行實(shí)現(xiàn)使用《pragma omp for編譯指導(dǎo)指令插入串行程序循環(huán)體之前,編譯器首先識(shí)別 for循環(huán)的循環(huán)次數(shù)(次數(shù)必須是確定值),默認(rèn)情況下,使用靜態(tài)調(diào)度的線(xiàn)程調(diào)度算法,根據(jù)處理器個(gè)數(shù)將for循環(huán)的循環(huán)次數(shù)平均分配到不同處理器上同時(shí)執(zhí)行。使用OpenMP對(duì)小波包并行時(shí)有兩種并行方案,第一是利用0mp_Set_neSted (i)來(lái)設(shè)置嵌套使能狀態(tài)(i = 0,表示嵌套未使能,i = 1表示嵌套使能),實(shí)現(xiàn)小波包嵌套并行, 另一種按常規(guī)方法分析,即非嵌套并行。d、程序調(diào)試按照以上a c步對(duì)編寫(xiě)小波與小波包并行程序,在5種數(shù)據(jù)量下, 于單機(jī)雙核計(jì)算平臺(tái)上進(jìn)行實(shí)驗(yàn)。分別比較單層分解、多層分解并行及串行計(jì)算結(jié)果,實(shí)驗(yàn)加速比隨著數(shù)據(jù)量的增加而逐漸接近2,并行效果明顯。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是1、本發(fā)明提出的基于OpenMP的多核并行小波并行算法,可避免的受到系統(tǒng)維護(hù)及網(wǎng)絡(luò)傳輸環(huán)節(jié)所帶來(lái)的不利影響,優(yōu)化以往小波并行的效果。2、本發(fā)明對(duì)串行程序分析時(shí)結(jié)合htel并行分析軟件的優(yōu)越性,利用Intel ParallelAmplifier對(duì)小波與小波包變換串行程序分析,得出卷積函數(shù)、回存函數(shù)是變換過(guò)程中最耗時(shí)的部分,這種方法能夠方便更直接的分析出小波與小波包串行程序的潛在并行性,為并行程序開(kāi)發(fā)提供便利。3、本發(fā)明在在對(duì)小波包做并行處理時(shí),針對(duì)小波包嵌套循環(huán)的特殊情況提出嵌套的并行處理,這種方法在隨著處理器核數(shù)的增加情況下會(huì)更顯著的增加并行效果??傊景l(fā)明的方法在當(dāng)今硬件環(huán)境下有很好的實(shí)現(xiàn)優(yōu)勢(shì),應(yīng)用更容易推廣,同時(shí)顯著改善小波與小波包的計(jì)算時(shí)間。實(shí)驗(yàn)結(jié)果也證明本發(fā)明方法的并行效果明顯。
圖1、2、3是小波變化程序熱點(diǎn)及熱點(diǎn)函數(shù)圖。圖4、5、6、7是小波包變化程序熱點(diǎn)及熱點(diǎn)函數(shù)圖。圖8是單層(S1)與多層(S2)并行小波加速比圖。圖9是嵌套與非嵌套并行小波包加速比圖。圖10系數(shù)重構(gòu)分解示意圖。圖11數(shù)據(jù)分組示意圖。圖12濾波器系數(shù)以4為例奇數(shù)位數(shù)據(jù)計(jì)算變換原理圖。圖13濾波器系數(shù)以4為例偶數(shù)位數(shù)據(jù)計(jì)算變換原理圖。圖14濾波器系數(shù)為4線(xiàn)程調(diào)度算法示意圖。圖15線(xiàn)程流程圖。圖16嵌套循環(huán)并行執(zhí)行線(xiàn)程運(yùn)行圖。圖17非嵌套循環(huán)并行執(zhí)行線(xiàn)程運(yùn)行狀態(tài)圖。圖18、19分別是本發(fā)明實(shí)現(xiàn)的在5種數(shù)據(jù)量下,小波單層并行、多層并行時(shí)間結(jié)^ ο圖20是小波變換串行計(jì)算時(shí)間與并行計(jì)算時(shí)間的對(duì)比。圖21、22分別是本發(fā)明實(shí)現(xiàn)的在5種數(shù)據(jù)量下,小波包多層嵌套與非嵌套并行時(shí)間結(jié)果。圖23是小波包串行計(jì)算時(shí)間與嵌套并行、非嵌套并行的計(jì)算時(shí)間對(duì)比。下面結(jié)合附圖和具體的實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。本發(fā)明的一種基于OpenMP的小波和小波包多核并行計(jì)算方法方法,其具體實(shí)施步驟是a、小波和小波包變化軟件熱點(diǎn)分析采用htel Parallel Amplifier來(lái)對(duì)采集到的數(shù)據(jù)做一個(gè)熱點(diǎn)(Hotspots)分析,通過(guò)分析,可以幫助了解應(yīng)用程序的哪一部分耗時(shí), 并顯示它們的函數(shù)名字,同時(shí)將問(wèn)題放大到原程序代碼中。有些熱點(diǎn)是可以去掉的程序瓶頸,而有些熱點(diǎn)是無(wú)法避免的,這是由于其函數(shù)性質(zhì),必須需要很長(zhǎng)的時(shí)間來(lái)執(zhí)行。
(1)在 Microsoft Visual Studio 2008 上編寫(xiě)小波串行程序;(2)從 Amplifier 工具條上選擇 Where is my program spending time running ?,點(diǎn)擊運(yùn)行。得到圖1,顯示的是小波變換程序的熱點(diǎn)函數(shù)部分,雙擊熱點(diǎn)可以發(fā)現(xiàn)fun函數(shù)以前的部分都是程序中無(wú)可避免的熱點(diǎn)函數(shù),fun函數(shù)是信號(hào)生成函數(shù)。fun函數(shù)以后的函數(shù)如圖2、3中所示函數(shù)wrompl和wdompl對(duì)應(yīng)的是程序中小波分解與重構(gòu)部分??梢?jiàn),要提高小波變換的運(yùn)算速度,可著重并行化小波變換卷積運(yùn)算部分。與分析小波算法過(guò)程相同。首先編寫(xiě)小波包串行程序,再對(duì)其進(jìn)行熱點(diǎn)分析,分析結(jié)果如下圖4、5、6所示。從圖4中可以看出,小波包程序中wr與wd函數(shù)已經(jīng)成為最耗時(shí)的函數(shù),相較于小波變換代碼來(lái)說(shuō),由于小波包的算法復(fù)雜度有了進(jìn)一步的提升,雖然其計(jì)算精度與性能比小波變換要好,但是時(shí)間的消耗更多也成為其實(shí)際應(yīng)用的更大阻力。b、小波變化潛在并行性分析基本的小波變換執(zhí)行流程分為以下四步(1)對(duì)輸入的原始數(shù)據(jù)進(jìn)行延拓處理。由于存在卷積運(yùn)算,因此必須要考慮數(shù)據(jù)的延拓問(wèn)題,為了不增加運(yùn)算代價(jià),本發(fā)明將數(shù)據(jù)延拓的過(guò)程與數(shù)據(jù)分解過(guò)程合二為一。(2)延拓后的數(shù)據(jù)為待分解數(shù)據(jù),分解過(guò)程如下面公式所示,其執(zhí)行的核心就是濾波器與待分解數(shù)據(jù)的卷積計(jì)算。濾波器有低頻和高頻濾波器,分別與待分解數(shù)據(jù)做卷積。而從卷積計(jì)算的原理可以了解到,卷積計(jì)算結(jié)果與原始數(shù)據(jù)序列直接相關(guān),也就是說(shuō),在不同位置上的待分解數(shù)據(jù)與濾波器的卷積后得到的是不同的卷積結(jié)果。而不同位置上的待分解數(shù)據(jù)在做卷積過(guò)程時(shí)并沒(méi)有直接相關(guān)聯(lián)。因此,可以初步判斷,這一分解過(guò)程可以進(jìn)行并行分配。
權(quán)利要求
1. 一種基于OpenMP的小波和小波包多核并行計(jì)算方法,其步驟為a、小波和小波包變化軟件熱點(diǎn)分析在單機(jī)多核系統(tǒng)上,使用htelParallel Amplifier來(lái)分析小波與小波包串行程序的性能,首先基于C語(yǔ)言編寫(xiě)串行程序,采用 Intel ParalIelAmplifier來(lái)對(duì)采集到的數(shù)據(jù)做一個(gè)熱點(diǎn)分析,通過(guò)分析,確定應(yīng)用程序的哪一部分耗時(shí),并顯示它們的函數(shù)名字,同時(shí)將問(wèn)題放大到原程序代碼中;b、小波變化潛在并行性分析小波Mallat算法原理用以下公式表示CO ;+1 (k) = Σ Ci1 (n)h0 (η - 2k) = a} (k) * Jr0 (2k)W=-CO COdJ+l (k) = Yj a} (H)H1 (n - 2k) = a} (k) * H1 (2k)W=-CO分析小波變換串行過(guò)程的熱點(diǎn)部分,其核心是濾波器與待分解數(shù)據(jù)的卷積計(jì)算,低頻濾波器和高頻濾波器分別與待分解數(shù)據(jù)做卷積;分解結(jié)果回存將分解結(jié)果回存至原序列中以節(jié)省分配空間;分解系數(shù)重構(gòu)近似系數(shù)與細(xì)節(jié)系數(shù)分別與低頻重構(gòu)濾波器和高頻重構(gòu)濾波器的卷積后之和的過(guò)程;C、小波包變化潛在并行性分析小波包Mallat算法;d、小波并行方案卷積和二抽取同時(shí)進(jìn)行,小波分解串行程序的核心部分是一個(gè)for 循環(huán),OpenMP使用《pragma omp for編譯指導(dǎo)指令插入串行程序循環(huán)體之前,編譯器首先識(shí)別for循環(huán)的確定的循環(huán)次數(shù),默認(rèn)情況下,使用靜態(tài)調(diào)度的線(xiàn)程調(diào)度算法,根據(jù)處理器個(gè)數(shù)將for循環(huán)的循環(huán)次數(shù)平均分配到不同處理器上同時(shí)執(zhí)行;根據(jù)處理器的個(gè)數(shù)P將待分析數(shù)據(jù)分為P組,每組數(shù)據(jù)由一個(gè)線(xiàn)程執(zhí)行;線(xiàn)程步驟如下(1)程序主線(xiàn)程對(duì)原始數(shù)據(jù)進(jìn)行加載;(2)遇到可并行的區(qū)域,程序中表示小波分解卷積部分,在此部分插入編譯指導(dǎo)指令, 根據(jù)循環(huán)次數(shù),主線(xiàn)程派生出新的子線(xiàn)程,分析并行區(qū)域;(3)主線(xiàn)程與子線(xiàn)程并行執(zhí)行不同次的循環(huán)過(guò)程,結(jié)束后,子線(xiàn)程與主線(xiàn)程合并,主線(xiàn)程繼續(xù)執(zhí)行,子線(xiàn)程掛起,這一步驟隱含一個(gè)線(xiàn)程等待的同步操作;(4)主線(xiàn)程遇到數(shù)據(jù)讀寫(xiě)循環(huán)時(shí),繼續(xù)派生新的子線(xiàn)程,并行執(zhí)行此步驟,完成后子線(xiàn)程掛起,主線(xiàn)程詢(xún)問(wèn)是否完成分解,若沒(méi)有,轉(zhuǎn)到步驟O),否則退出程序;e、小波包并行方案小波包卷積過(guò)程是一個(gè)嵌套循環(huán)過(guò)程,嵌套循環(huán)的含義是把小波包分解層次與計(jì)算低頻、高頻系數(shù)的次數(shù)相聯(lián)系;分解η層(η>1)時(shí),外層循環(huán)需進(jìn)行2η-1次;外層分解至第 j(j = 0,1,2... 2n-l-l)次時(shí),內(nèi)層循環(huán)則從jXN/2n-l開(kāi)始至N/2n-lX (j+Ι)次結(jié)束;使用OpenMP對(duì)小波包并行時(shí)有兩種并行方案,第一是利用0mp_set_nested (i)來(lái)設(shè)置嵌套使能狀態(tài),實(shí)現(xiàn)小波包嵌套并行,另一種按常規(guī)方法分析,即非嵌套并行(1)嵌套并行小波包分解過(guò)程利用嵌套使能并行執(zhí)行嵌套循環(huán)時(shí),當(dāng)主線(xiàn)程遇到外層循環(huán),派生出一組線(xiàn)程,這些線(xiàn)程同時(shí)繼續(xù)向內(nèi)層循環(huán)執(zhí)行下一層并行,這時(shí)派生出的線(xiàn)程與原來(lái)的主線(xiàn)程成為針對(duì)內(nèi)層循環(huán)的“主線(xiàn)程”,并繼續(xù)按照之前的方式派生新的線(xiàn)程,從而并行執(zhí)行內(nèi)層循環(huán),當(dāng)內(nèi)層循環(huán)執(zhí)行結(jié)束時(shí),這些線(xiàn)程逐級(jí)掛起,最終回到最初的主線(xiàn)程上; (2)非嵌套方案對(duì)于嵌套循環(huán)的程序,選擇只對(duì)一層循環(huán)做并行,選擇只對(duì)內(nèi)層循環(huán)過(guò)程做并行處理。
全文摘要
本發(fā)明公開(kāi)了一種基于OpenMP的小波和小波包多核并行計(jì)算方法,首先利用IntelParallel Amplifier找出小波與小波包串行應(yīng)用程序的熱點(diǎn)部分,即耗時(shí)最為嚴(yán)重的代碼段。通過(guò)分析熱點(diǎn)的潛在并行性,對(duì)卷積計(jì)算與數(shù)據(jù)回存的過(guò)程分別提出并行策略。接著,在OpenMP環(huán)境下,利用OpenMP編譯指導(dǎo)語(yǔ)句,對(duì)小波與小波包循環(huán)體實(shí)現(xiàn)并行分解。另外在對(duì)小波包并行化中提出嵌套與非嵌套并行方式,并比較并行計(jì)算與串行計(jì)算的結(jié)果。本發(fā)明算法可以避免多機(jī)結(jié)構(gòu)由于維修、通信等等帶來(lái)的冗余開(kāi)銷(xiāo),同時(shí)在適應(yīng)當(dāng)今多核處理器的應(yīng)用前景下,能夠大大提高小波與小波包變化的計(jì)算速度,增加它們的實(shí)用性。
文檔編號(hào)G06F9/46GK102222019SQ20111013074
公開(kāi)日2011年10月19日 申請(qǐng)日期2011年5月19日 優(yōu)先權(quán)日2011年5月19日
發(fā)明者劉志剛, 魯曉帆 申請(qǐng)人:西南交通大學(xué)