亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向FT-M7002的高斯濾波算法優(yōu)化實(shí)現(xiàn)*

        2021-05-18 09:38:30王夢(mèng)園柴曉楠商建東
        關(guān)鍵詞:優(yōu)化

        陳 云,王夢(mèng)園,柴曉楠,商建東

        (1.鄭州大學(xué)信息工程學(xué)院,河南 鄭州 450001;2.河南省超級(jí)計(jì)算中心(鄭州大學(xué)),河南 鄭州 450052)

        1 引言

        DSP(Digital Signal Processor)起源于20世紀(jì)70年代,針對(duì)數(shù)字信號(hào)處理中存在的大量累加累乘運(yùn)算設(shè)置乘加器MAC(Multiplication Adder Cycle)部件,結(jié)構(gòu)比較簡(jiǎn)單。隨著社會(huì)的不斷進(jìn)步,DSP的應(yīng)用領(lǐng)域也變得更加廣泛,為滿(mǎn)足大型稠密線性方程組求解、雷達(dá)信號(hào)處理、高清視頻和數(shù)字圖像處理等計(jì)算密集型應(yīng)用的高性能計(jì)算需求,數(shù)字信號(hào)處理器的體系結(jié)構(gòu)出現(xiàn)顯著變化,出現(xiàn)了高性能數(shù)字信號(hào)處理器。目前應(yīng)用較多的高性能DSP體系結(jié)構(gòu)主要有片上多核以及核內(nèi)集成支持了單指令多數(shù)據(jù)SIMD(Single Instruction Multiple Data)、超長(zhǎng)指令字VLIW(Very Long Instruction Word)技術(shù)的部件, 比如TI的TMS320C6678處理器,片上集成8個(gè)DSP核心,單核浮點(diǎn)運(yùn)算能力可達(dá)20 GFlop/s[1,2]。近幾年我國(guó)高性能數(shù)字信號(hào)處理器的研究也取得了一定的成就,國(guó)防科技大學(xué)自主研發(fā)的飛騰FT(FeiTeng)系列多核處理器[3]、向量處理器相繼出現(xiàn)。但是,硬件的快速發(fā)展也會(huì)帶來(lái)一些問(wèn)題,如缺乏配套的軟件應(yīng)用,只有適配相應(yīng)的軟件應(yīng)用才能充分發(fā)揮高性能DSP的特殊硬件架構(gòu)優(yōu)勢(shì),實(shí)現(xiàn)國(guó)產(chǎn)數(shù)字信號(hào)處理器在圖像處理、雷達(dá)信號(hào)處理等領(lǐng)域的實(shí)時(shí)性與高效性。因此,基于快速發(fā)展的我國(guó)高性能數(shù)字信號(hào)處理器,開(kāi)發(fā)相應(yīng)的高性能軟件應(yīng)用是我們需要考慮并解決的問(wèn)題。

        在圖像處理領(lǐng)域,一般待處理圖像中往往會(huì)存在一定程度的噪聲干擾,惡化了圖像的質(zhì)量。高斯平滑濾波作為圖像預(yù)處理的重要組成部分具有優(yōu)良的噪聲平滑性能和邊緣保留能力[4,5],是保證后續(xù)特征提取與識(shí)別正確進(jìn)行的基礎(chǔ)。現(xiàn)有的高斯濾波算法實(shí)現(xiàn)并不能充分利用FT平臺(tái)的計(jì)算性能,會(huì)影響到使用該算法的多種大型圖像處理應(yīng)用,因此面向FT系列處理器實(shí)現(xiàn)高效的高斯濾波算法具有重要的意義。

        目前有很多學(xué)者針對(duì)硬件特性對(duì)高斯濾波算法進(jìn)行相應(yīng)的優(yōu)化,并取得了一定成果。文獻(xiàn)[6]針對(duì)TMS320C6x系列處理器提出了一種單次遍歷實(shí)現(xiàn)2次卷積的高斯平滑濾波DSP優(yōu)化方法;文獻(xiàn)[7]針對(duì)TMS320C6416處理器的內(nèi)部資源,提出了基于該處理器的空間低通濾波程序的設(shè)計(jì)方案;文獻(xiàn)[8]基于CPU的SSE指令集,完成了高斯濾波器的SIMD優(yōu)化遞歸IIR(Infinite Impulse Response)實(shí)現(xiàn),并在OpenMP(Open Multi- Processing)的幫助下實(shí)現(xiàn)了單指令多數(shù)據(jù)擴(kuò)展流SSE(Streaming SIMD Extensions)版本的并行化;文獻(xiàn)[9]總結(jié)了高斯濾波算法原理和CUDA(Compute Unified Device Architecture)并行計(jì)算體系,提出了適合于CUDA的并行高斯濾波算法。但是,由于不同處理器體系結(jié)構(gòu)的差異性,上述并行優(yōu)化算法并不適用于FT系列高性能數(shù)字信號(hào)處理平臺(tái)。

        本文面向國(guó)防科技大學(xué)自主研發(fā)的FT-M7002高性能處理器的特殊硬件架構(gòu),設(shè)計(jì)高斯濾波并行算法。主要內(nèi)容包含以下幾個(gè)方面:(1)分析高斯濾波算法計(jì)算特點(diǎn)與FT-M7002體系結(jié)構(gòu);(2)分析高斯濾波算法加速瓶頸,設(shè)計(jì)相應(yīng)的優(yōu)化方案;(3)通過(guò)手工向量化、控制流消除和循環(huán)展開(kāi)等優(yōu)化手段充分利用數(shù)據(jù)級(jí)與指令級(jí)并行性;(4)針對(duì)FT-MT2內(nèi)核中的DMA(Direct Memory Access)硬件和向量存儲(chǔ)器結(jié)構(gòu)特點(diǎn),進(jìn)行了“乒-乓”緩存、DMA數(shù)組轉(zhuǎn)置等優(yōu)化。

        2 高斯濾波算法

        2.1 濾波

        高斯濾波廣泛應(yīng)用于減弱圖像中的高斯噪聲,其計(jì)算過(guò)程就是對(duì)一幅圖像進(jìn)行加權(quán)平均的過(guò)程,每一個(gè)結(jié)果像素點(diǎn)的值都由相應(yīng)輸入圖像像素值與濾波核矩陣進(jìn)行相乘并累加后得到。令I(lǐng)是大小為m*n的輸入圖像矩陣,G(u,v)為高斯函數(shù),O為輸出結(jié)果矩陣,則濾波過(guò)程定義如式(1)所示:

        (1)

        針對(duì)本文高斯濾波,G(u,v)定義如式(2)所示:

        (2)

        其中,u0和v0是均值,代表中心點(diǎn)坐標(biāo),一般取值為0;δ2是方差,代表高斯曲線的寬度[10,11]。

        濾波就是對(duì)輸入圖像進(jìn)行模糊的過(guò)程,可以理解成每一個(gè)像素點(diǎn)的值都用其周邊像素點(diǎn)的值的加權(quán)平均值代替。中間像素點(diǎn)的值用周?chē)袼攸c(diǎn)的值的平均值代替,中間像素點(diǎn)的值取周?chē)袼攸c(diǎn)的值的均值代替,會(huì)使中間像素點(diǎn)失去細(xì)節(jié),圖像上就會(huì)產(chǎn)生模糊效果。但是,在計(jì)算過(guò)程中存在周?chē)袼貦?quán)重分配的問(wèn)題,如果使用簡(jiǎn)單的平均顯然是不合理的,因?yàn)閳D像都是連續(xù)的,越靠近中間點(diǎn)的像素與中間點(diǎn)的相關(guān)性越強(qiáng)。因此,加權(quán)平均的計(jì)算方式更合理,距離中心點(diǎn)越近的像素點(diǎn)權(quán)重越大,距離中心點(diǎn)越遠(yuǎn)的像素點(diǎn)權(quán)重越小。由于高斯分布在形狀上是一種鐘形曲線,因此高斯分布是一種可取的權(quán)重分配模式。

        2.2 高斯濾波算法的實(shí)現(xiàn)方法分析

        在目前常用的圖像處理庫(kù)中,高斯濾波一般有2種實(shí)現(xiàn)方式,一種是借助快速傅里葉變換FFT(Fast Fourier Transform)實(shí)現(xiàn),一種是使用離散化高斯窗口在原圖像上進(jìn)行滑動(dòng)卷積?;诳焖俑道锶~變換的高斯濾波實(shí)現(xiàn)如圖1所示,分別將輸入圖像矩陣和濾波核矩陣進(jìn)行二維FFT計(jì)算,根據(jù)時(shí)域計(jì)算與頻域計(jì)算的對(duì)應(yīng)關(guān)系,可將時(shí)域中的卷積計(jì)算轉(zhuǎn)換成頻域中的復(fù)乘運(yùn)算,最后通過(guò)二維逆傅里葉變換得到最終的結(jié)果矩陣。該方法的優(yōu)點(diǎn)是計(jì)算量與卷積核的大小無(wú)關(guān),因此針對(duì)卷積核尺寸較大的卷積網(wǎng)絡(luò),F(xiàn)FT方法相比直接卷積方法在降低計(jì)算量方面具有明顯的優(yōu)勢(shì),其不足之處就是要付出增加存儲(chǔ)開(kāi)銷(xiāo)的代價(jià)[11]。但是,一般濾波采用的卷積核尺寸都比較小,因此可以選擇使用離散化高斯窗口在原圖像上進(jìn)行滑動(dòng)卷積的方式實(shí)現(xiàn)高斯濾波。

        Figure 1 Gaussian filtering implementation based on Fourier transform圖1 基于傅里葉變換的高斯濾波實(shí)現(xiàn)

        通過(guò)離散化高斯窗口在原圖像上進(jìn)行滑動(dòng)卷積時(shí),先通過(guò)二維高斯函數(shù)生成二維高斯核,移動(dòng)高斯核,將該高斯核與輸入圖像的相應(yīng)位置像素點(diǎn)相乘累加得到相應(yīng)位置的濾波結(jié)果。圖2給出了使用3*3高斯核進(jìn)行滑動(dòng)卷積的示意圖,在計(jì)算像素點(diǎn)I(1,1)濾波結(jié)果時(shí),用高斯濾波核G覆蓋以像素點(diǎn)I(1,1)為中心點(diǎn)的3*3圖像區(qū)域,高斯核G與圖像區(qū)域內(nèi)相對(duì)應(yīng)的像素點(diǎn)數(shù)據(jù)相乘并累加,便可得到I(1,1)像素點(diǎn)的高斯濾波處理結(jié)果O(1,1)。計(jì)算I(1,2)像素點(diǎn)時(shí),將高斯核G向右移一個(gè)像素的位置并重復(fù)上面的計(jì)算過(guò)程。

        Figure 2 Schematic diagram of 3*3 Gaussian kernel sliding convolution圖2 3*3高斯核滑動(dòng)卷積示意圖

        根據(jù)高斯函數(shù)的性質(zhì),二維高斯函數(shù)可以寫(xiě)成2個(gè)一維高斯函數(shù)相乘的形式,因此可以采用可分離濾波器來(lái)實(shí)現(xiàn)高斯濾波的加速計(jì)算。所謂的可分離濾波器,就是把多維卷積轉(zhuǎn)換成多個(gè)一維卷積,二維的高斯濾波就是指先對(duì)行做一維卷積,再對(duì)列做一維卷積。

        定義一維高斯函數(shù)為G(u),則:

        (3)

        根據(jù)式(2)中二維高斯函數(shù)的定義,可得:

        (4)

        根據(jù)式(4),對(duì)式(1)中的卷積計(jì)算進(jìn)行改寫(xiě):

        (5)

        式(5)說(shuō)明了高斯濾波的可分離特性,輸入圖像矩陣與二維高斯濾波核卷積等價(jià)于先對(duì)輸入矩陣在水平方向與一維行高斯核進(jìn)行卷積,再將卷積結(jié)果在垂直方向與一維列高斯核進(jìn)行卷積。相對(duì)于二維滑動(dòng)卷積該實(shí)現(xiàn)方法可以明顯降低算法復(fù)雜度,在數(shù)據(jù)訪問(wèn)中,分離濾波可以更好地實(shí)現(xiàn)數(shù)據(jù)的連續(xù)訪存,提高數(shù)據(jù)局部性。因此,本文將基于FT系列處理器在分離濾波的基礎(chǔ)上實(shí)現(xiàn)高斯濾波的并行計(jì)算。

        3 FT高性能DSP處理器

        FT-M7002是國(guó)防科技大學(xué)自主研發(fā)的一款40 nm工藝的高性能DSP處理器芯片,該芯片包含1個(gè)RISC CPU核和2個(gè)FT-MT2 DSP核。單個(gè)計(jì)算核擁有32 KB的一級(jí)數(shù)據(jù)緩存和512 KB的陣列存儲(chǔ)器AM(Array Memory)空間,核外擁有32 GB的大容量DDR存儲(chǔ)空間[12,13],在圖像處理等需要進(jìn)行大量數(shù)據(jù)運(yùn)算的場(chǎng)合下能很好地發(fā)揮其優(yōu)勢(shì),或嵌入到其他系統(tǒng)中作為信號(hào)協(xié)處理模塊。本文主要針對(duì)單個(gè)DSP核進(jìn)行算法實(shí)現(xiàn),因此主要關(guān)注單個(gè)核內(nèi)結(jié)構(gòu)。

        FT-MT2內(nèi)核基于VLIW結(jié)構(gòu),具體結(jié)構(gòu)如圖3所示,SPU(Scalar Processing Unit)表示標(biāo)量處理部件,VPU(Vector Processing Unit)表示向量處理部件,SVR(Scalar Vector Register)表示標(biāo)向量共享寄存器,SPE(Scalar Processing Element)表示標(biāo)量處理單元,SM(Scalar Memory)表示標(biāo)量存儲(chǔ)器。在該內(nèi)核結(jié)構(gòu)中,SPU和VPU為相互獨(dú)立又相互關(guān)聯(lián)的處理部件,SPU負(fù)責(zé)控制和邏輯計(jì)算,VPU主要面向密集型計(jì)算,SPU和VPU可以通過(guò)SVR進(jìn)行數(shù)據(jù)交互,并且通過(guò)廣播操作支持標(biāo)量寄存器到向量寄存器的廣播操作。

        向量處理部件(VPU)由16個(gè)同構(gòu)向量處理單元VPE(Vector Processing Element)和混洗/歸約部件構(gòu)成[14],VPE內(nèi)部集成4個(gè)運(yùn)算部件用于支持標(biāo)量定點(diǎn)和浮點(diǎn)運(yùn)算。AM作為向量數(shù)據(jù)存儲(chǔ)器,為VPU提供向量數(shù)據(jù),同時(shí)AM可通過(guò)DMA與核外存儲(chǔ)空間進(jìn)行數(shù)據(jù)交互。也就是說(shuō)該VPU可以同時(shí)對(duì)16路32位數(shù)據(jù)進(jìn)行向量運(yùn)算,并且支持混洗/規(guī)約操作,針對(duì)數(shù)據(jù)密集型運(yùn)算能大量減少數(shù)據(jù)訪存次數(shù),提高運(yùn)算效率。

        Figure 3 FT-MT2 core structure圖3 FT-MT2內(nèi)核結(jié)構(gòu)

        4 面向FT-M7002的高斯濾波算法優(yōu)化實(shí)現(xiàn)

        在分析了FT-M7002體系結(jié)構(gòu)之后,本文結(jié)合該向量處理器內(nèi)核特點(diǎn)與高斯濾波算法性能瓶頸,針對(duì)高斯濾波中密集數(shù)據(jù)訪問(wèn)設(shè)計(jì)了優(yōu)化實(shí)現(xiàn),能夠明顯減少訪存次數(shù),最后為進(jìn)一步提升算法性能設(shè)計(jì)了相應(yīng)的數(shù)據(jù)傳輸優(yōu)化。

        4.1 高斯濾波在FT平臺(tái)上的優(yōu)化實(shí)現(xiàn)

        與二維高斯核滑動(dòng)卷積計(jì)算高斯濾波相比,分離濾波器能夠減少計(jì)算量,提高訪存的局部性,但是當(dāng)輸入圖像較大時(shí),內(nèi)存訪問(wèn)量依然很大,影響算法性能。因此,本文結(jié)合FT-M7002體系結(jié)構(gòu)特點(diǎn),設(shè)計(jì)一種基于分離濾波器的高斯濾波優(yōu)化實(shí)現(xiàn)過(guò)程,通過(guò)充分利用FT-MT2內(nèi)核中的VPU減少內(nèi)存訪問(wèn)次數(shù),在保證正確性的基礎(chǔ)上提高高斯濾波算法性能。

        高斯濾波算法主要由生成高斯卷積核、邊界填充、行濾波、列濾波4部分構(gòu)成,其中行濾波和列濾波部分存在大量密集數(shù)據(jù)訪問(wèn),因此本文主要針對(duì)這2部分進(jìn)行優(yōu)化實(shí)現(xiàn)。本文對(duì)于列濾波的訪存不連續(xù)進(jìn)行相應(yīng)的DMA數(shù)據(jù)轉(zhuǎn)置優(yōu)化,此外針對(duì)算法中DMA傳輸耗時(shí)進(jìn)行了相應(yīng)的優(yōu)化設(shè)計(jì)。

        根據(jù)圖3中FT-M7002內(nèi)核結(jié)構(gòu)可知,VPE從AM中讀取數(shù)據(jù)進(jìn)行運(yùn)算,比如vec_ld向量指令,從AM中連續(xù)加載16個(gè)32位數(shù)據(jù)放在VPE0~VPE15中,而SM主要為標(biāo)量操作提供數(shù)據(jù)支持。在高斯濾波中,一般來(lái)說(shuō)高斯核矩陣的規(guī)模都比較小,而且根據(jù)算法的需要,高斯核數(shù)據(jù)需要標(biāo)量讀取,因此將高斯核數(shù)據(jù)置于SM中,輸入矩陣置于AM或DDR中。針對(duì)行列濾波部分,圖4給出了3*3高斯核與輸入圖像矩陣進(jìn)行濾波操作示意圖,其中,I表示輸入圖像矩陣,cn表示輸入圖像通道數(shù),G表示高斯濾波核矩陣。通過(guò)FT-M7002向量指令分別從AM按行加載16個(gè)輸入矩陣數(shù)據(jù),從SM中廣播對(duì)應(yīng)高斯核數(shù)據(jù)到VPE中進(jìn)行向量乘加運(yùn)算,可以看到該方法可以明顯減少訪存次數(shù),且充分復(fù)用已取數(shù)據(jù)。

        Figure 4 Schematic diagram of 3*3 Gaussian kernel line filtering optimization圖4 3*3高斯核行濾波優(yōu)化實(shí)現(xiàn)示意圖

        4.2 向量并行優(yōu)化

        基于可分離濾波器的高斯濾波主要由生成高斯卷積核、邊界填充、行濾波和列濾波4部分構(gòu)成,經(jīng)過(guò)分析高斯濾波算法主要循環(huán)層都在行列濾波部分,因此本文主要對(duì)行列濾波部分進(jìn)行并行性?xún)?yōu)化。結(jié)合FT-M7002體系結(jié)構(gòu)特點(diǎn),為充分利用核內(nèi)VPU,減少訪存操作,本文采用FT-M7002向量指令集完成行濾波操作,可以有效地并行開(kāi)發(fā)程序,提高數(shù)據(jù)集并行性。下面給出了行列濾波中核心段優(yōu)化代碼,相對(duì)于串行程序,該優(yōu)化代碼一次循環(huán)可以處理16個(gè)數(shù)據(jù),明顯減少內(nèi)層循環(huán)次數(shù)。其中,cn代表輸入圖像通道數(shù),當(dāng)輸入圖像尺寸不是16的倍數(shù)時(shí)需要增加尾循環(huán)。當(dāng)濾波核較小時(shí)可將其全部廣播到VPE中完成與輸入矩陣的乘加操作,當(dāng)濾波核較大時(shí),需要增加一層循環(huán)來(lái)控制廣播到VPE中的卷積核,會(huì)增加整個(gè)算法的時(shí)間,由于高斯濾波常用3*3,5*5高斯核,因此將不同尺寸高斯核分開(kāi)可提升較小高斯核計(jì)算性能。

        before

        fori=0:1:row

        forj=0:1:col*cn

        S0=0;

        g=j;

        fork=0:1:ksize

        S0 +=G[k]*I[i][g];

        g+=cn;

        endfor

        O[i][j]=S0;

        endfor

        endfor

        input:輸入矩陣I。

        output:結(jié)果矩陣O。

        after

        ifksizeis 3 or 5 or 7, for exampleksizeis 3

        vectorG(1)=vec_svbcast(G(1)); /*Broadcast Gaussian core to VPE*/

        vectorG(2)=vec_svbcast(G(2)); /*Broadcast Gaussian core to VPE*/

        vectorG(3)=vec_svbcast(G(3)); /*Broadcast Gaussian core to VPE*/

        fori=0:1:row

        M7002_vector int *I_cn= (M7002_vector int *)0x040000000; /*Define pointer to AM*/

        M7002_vector int *O_cn= (M7002_vector int *)0x040040000;

        M7002_datatrans_cv(I,I_cn,(col+ksize) * 4); /*DMA transfer input matrixIto AM*/

        forj1=0:16:col*cn-16 //parallel for data

        vectorI1=vec_ld(j1,I_cn);

        vectorI2=vec_ld(j1+cn,I_cn);

        vectorI3=vec_ld(j1+2cn,I_cn);

        vectorO1=vec_mul(vectorG(1),vectorI1);

        vectorO2=vec_mul(vectorG(2),vectorI2);

        vectorO3=vec_mul(vectorG(3),vectorI3);

        vectorO=vec_add(vectorO1,vec_add(vectorO2,vectorO3));

        vec_st(vectorO,j1,O_cn);

        endfor

        M7002_datatrans_cv(O_cn,O,j1);

        forj2=j1:1:col*cn/*ifcol%16 !=0*/

        O(i,j2)=G(1)*I(i,j2)+G(2)*I(i,j2+cn)*G(3)*I(i,j2+2cn);

        endfor

        endfor

        AM為VPU提供向量數(shù)據(jù)訪問(wèn)時(shí),可同時(shí)支持2個(gè)向量數(shù)據(jù)的load/store操作以及標(biāo)量單元和DMA的向量數(shù)據(jù)訪問(wèn),且VPE有4條可并行執(zhí)行的流水線。為充分利用FT-M7002的以上優(yōu)勢(shì),本文采用循環(huán)展開(kāi)發(fā)掘高斯濾波向量算法的指令級(jí)并行性。若對(duì)上述行濾波部分進(jìn)行2次循環(huán)展開(kāi),則1次循環(huán)可以處理64個(gè)數(shù)據(jù),對(duì)于輸入尺寸較小的圖像無(wú)法達(dá)到預(yù)期優(yōu)化效果。因此,本文進(jìn)行1次循環(huán)展開(kāi),1次循環(huán)處理32個(gè)數(shù)據(jù),并對(duì)剩余數(shù)據(jù)設(shè)置尾循環(huán)處理,充分發(fā)揮高斯濾波算法的指令級(jí)并行性。

        4.3 DMA傳輸優(yōu)化

        由于AM存儲(chǔ)空間有限,當(dāng)輸入矩陣較大時(shí)AM一次不能加載整個(gè)卷積矩陣,此時(shí)輸入數(shù)據(jù)需要存放在核外共享空間DDR中并通過(guò)DMA傳輸?shù)紸M,DMA傳輸?shù)臅r(shí)間會(huì)影響整個(gè)算法的性能,且列濾波過(guò)程中存在數(shù)據(jù)的不連續(xù)訪問(wèn),導(dǎo)致無(wú)法進(jìn)行向量讀寫(xiě)。為了使DMA傳輸與FT-MT2內(nèi)核計(jì)算并行,從而隱藏DMA傳輸時(shí)間;為了使列濾波計(jì)算部分能夠連續(xù)讀取,從而使該部分能夠向量化實(shí)現(xiàn),本節(jié)主要實(shí)現(xiàn)了DMA傳輸優(yōu)化。

        (1)為提高行濾波計(jì)算的速度,用“乒-乓”的方式進(jìn)行DMA數(shù)據(jù)傳輸,可將FT-MT2內(nèi)核計(jì)算與DMA數(shù)據(jù)傳輸并行實(shí)現(xiàn)。此時(shí)將AM空間按地址劃分為相等的2部分,分別為Buffer0和Buffer1,先將數(shù)據(jù)從DDR中通過(guò)DMA傳輸?shù)紹uffer0,由于Buffer0中需要保留一部分空間來(lái)存放計(jì)算結(jié)果,因此傳輸?shù)臄?shù)據(jù)大小應(yīng)該為Buffer0空間的一半。然后從Buffer0開(kāi)始計(jì)算,Buffer0計(jì)算的同時(shí),Buffer1進(jìn)行數(shù)據(jù)傳輸,當(dāng)Buffer1開(kāi)始計(jì)算時(shí),Buffer0輸出上一次的計(jì)算結(jié)果并啟動(dòng)新數(shù)據(jù)傳輸,采用“乒-乓”的數(shù)據(jù)傳輸方式可以將計(jì)算時(shí)間和傳輸時(shí)間重疊起來(lái),提高算法的執(zhí)行效率。

        (2)該算法實(shí)現(xiàn)中列濾波過(guò)程存在不連續(xù)訪存,無(wú)法通過(guò)向量指令進(jìn)行連續(xù)存取,因此需要對(duì)行濾波結(jié)果進(jìn)行轉(zhuǎn)置變換,以實(shí)現(xiàn)列濾波的連續(xù)讀取。FT-M7002中的DMA傳輸模塊可以由設(shè)計(jì)人員自行配置傳輸方式,比如可以根據(jù)設(shè)置的幀索引值對(duì)相鄰2個(gè)幀的首數(shù)據(jù)單元進(jìn)行地址跳變的讀或?qū)?,因此可以通過(guò)適當(dāng)配置DMA的索引值,實(shí)現(xiàn)矩陣的轉(zhuǎn)置。如使用DMA將DDR中的行濾波結(jié)果矩陣O1中的第1行按列存儲(chǔ)在AM的O2中,DMA配置中目的幀索引值配置為O2每行首元素的地址差,則DMA會(huì)將O1[0][1]根據(jù)索引值間隔搬移到O2[1][0]中,O1[0][2]搬移到O2[2][0]中,依此將矩陣O1中第1行轉(zhuǎn)置到矩陣O2中第1列,然后完成剩余行的轉(zhuǎn)置。

        5 實(shí)驗(yàn)

        本節(jié)介紹在FT-M7002平臺(tái)上高斯濾波算法優(yōu)化實(shí)現(xiàn)相對(duì)于高斯濾波串行算法的性能提升,以3*3和5*5的高斯核為例,分析不同尺寸輸入圖像對(duì)算法加速比的影響,同時(shí)與TMS320C6678中高斯濾波算法性能進(jìn)行對(duì)比,分析2類(lèi)處理器的單核計(jì)算能力。

        5.1 實(shí)驗(yàn)環(huán)境與內(nèi)容

        在飛騰平臺(tái)的FT-M7002處理器上實(shí)現(xiàn)高斯濾波算法優(yōu)化,調(diào)用定時(shí)器的計(jì)時(shí)函數(shù)記錄該算法執(zhí)行時(shí)間,使用TI平臺(tái)的高性能數(shù)字信號(hào)處理器TMS320C6678進(jìn)行對(duì)比分析,具體實(shí)驗(yàn)環(huán)境如表1所示。

        Table 1 Experimental platform parameters表1 實(shí)驗(yàn)平臺(tái)參數(shù)

        面向飛騰平臺(tái)的高斯濾波優(yōu)化算法能夠在具體應(yīng)用中使用的基礎(chǔ)是濾波結(jié)果的正確性,同時(shí)在保證正確性的基礎(chǔ)上提高算法執(zhí)行效率是本文優(yōu)化的目的。因此,本次實(shí)驗(yàn)的內(nèi)容主要有2部分,分別是正確性驗(yàn)證和性能提升驗(yàn)證。

        正確性驗(yàn)證:在FT平臺(tái)上編寫(xiě)程序,調(diào)用前面實(shí)現(xiàn)的高斯濾波優(yōu)化算法,使用FT-M7002編譯器編譯程序?yàn)榭蓤?zhí)行文件,加載可執(zhí)行文件到FT-M7002處理器中運(yùn)行并保存運(yùn)行結(jié)果,與Intel開(kāi)發(fā)的OpenCV圖像庫(kù)中高斯濾波結(jié)果進(jìn)行對(duì)比。

        性能提升驗(yàn)證:性能提升驗(yàn)證包含2部分,分別是在FT-M7002中相對(duì)于串行高斯濾波算法的加速比,以及相對(duì)于TI平臺(tái)的計(jì)算性能。

        5.2 實(shí)驗(yàn)結(jié)果與分析

        (1)正確性分析。

        以3*3和5*5的高斯核為例,在FT平臺(tái)上運(yùn)行高斯濾波優(yōu)化算法并打印結(jié)果矩陣,與Intel開(kāi)發(fā)的OpenCV圖像庫(kù)中高斯濾波結(jié)果進(jìn)行對(duì)比。將2個(gè)結(jié)果相減取絕對(duì)值,以萬(wàn)分之一為標(biāo)準(zhǔn),精確度小于萬(wàn)分之一的認(rèn)為結(jié)果正確。結(jié)果如表2所示,對(duì)于不同尺寸的輸入圖像,本文算法均能取得正確的處理結(jié)果。

        Table 2 Results of correctness analysis表2 結(jié)果正確性分析

        (2)加速比分析。

        選取高斯濾波常用3*3和5*5高斯核,分別運(yùn)行高斯濾波串行算法與高斯濾波優(yōu)化算法并記錄運(yùn)行時(shí)間。在FT-M7002處理器上的測(cè)試結(jié)果如圖5所示,橫坐標(biāo)表示濾波矩陣規(guī)模,縱坐標(biāo)表示本文算法相對(duì)于串行高斯濾波算法的加速比??梢钥闯鰧?duì)于不同大小的輸入圖像,優(yōu)化后高斯濾波算法能取得1.3~1.41倍的加速比,由于DMA傳輸耗時(shí)以及算法中生成高斯濾波核、邊界填充等模塊耗時(shí)的影響,該算法性能提升沒(méi)有達(dá)到理論值。

        Figure 5 Speedup of optimized Gaussian filtering algorithm圖5 優(yōu)化后高斯濾波算法加速比

        從趨勢(shì)上來(lái)看,在濾波核規(guī)模一定的情況下,算法加速比隨著濾波矩陣規(guī)模的增加先增加,后趨于穩(wěn)定。主要原因在于,本文算法將讀入數(shù)據(jù)都放在DDR存儲(chǔ)空間中,由于數(shù)據(jù)傳輸耗時(shí)導(dǎo)致加速效果達(dá)不到理論值,但是隨著輸入數(shù)據(jù)的增大,DMA傳輸耗時(shí)所占比重變小,加速效果也有所提升。對(duì)于不同高斯核,可以看出,高斯核規(guī)模越大加速效果越明顯,主要原因是,高斯核越大,每次循環(huán)中計(jì)算的數(shù)據(jù)越多,因此優(yōu)化后的算法能更好地提升循環(huán)內(nèi)數(shù)據(jù)的并行性。

        在TMS320C6678中運(yùn)行高斯濾波算法并在FT-M7002中運(yùn)行本文優(yōu)化算法,分別使用TI與FT平臺(tái)的計(jì)時(shí)函數(shù)記錄運(yùn)行時(shí)間。在FT-M7002中運(yùn)行本文優(yōu)化算法時(shí)需要先開(kāi)啟Cache選項(xiàng),測(cè)試結(jié)果如圖6所示,結(jié)果表明,對(duì)于不同尺寸濾波圖像,F(xiàn)T-M7002向量處理器相對(duì)于TI多核處理器取得了1.15~1.71倍的加速比。可以看出在濾波核規(guī)模一定的情況下,相對(duì)于TI平臺(tái),F(xiàn)T平臺(tái)處理不同尺寸圖像的性能加速基本相同,但是在圖像尺寸一定的情況下,5*5高斯核的FT平臺(tái)相對(duì)于TI平臺(tái)的性能加速明顯高于3*3高斯核的。

        相對(duì)于TI處理器,F(xiàn)T處理器有更長(zhǎng)的向量寄存器,因此單核運(yùn)算中,針對(duì)計(jì)算密集型程序FT平臺(tái)相對(duì)于TI平臺(tái)有一定的計(jì)算優(yōu)勢(shì)。

        Figure 6 Speedup comparison of optimized Gaussian filtering algorithm with Gaussian filtering algorithm on TI6678圖6 優(yōu)化后高斯濾波算法相對(duì)于TI6678中高斯濾波算法加速比

        6 結(jié)束語(yǔ)

        針對(duì)國(guó)產(chǎn)高性能DSP的快速發(fā)展過(guò)程中缺乏相應(yīng)軟件應(yīng)用的問(wèn)題,本文在深入理解高斯濾波算法的基礎(chǔ)上,對(duì)高斯濾波算法進(jìn)行了針對(duì)FT-M7002 DSP的體系結(jié)構(gòu)特點(diǎn)的優(yōu)化實(shí)現(xiàn)。為了充分利用該平臺(tái)的核內(nèi)資源,本文使用編譯器內(nèi)嵌指令進(jìn)行手工向量化改寫(xiě),并使用控制流消除、循環(huán)展開(kāi)等方法挖掘指令級(jí)并行性。同時(shí),通過(guò)使用“乒-乓”緩存的方式實(shí)現(xiàn)了DMA數(shù)據(jù)傳輸與向量計(jì)算的并行。為了避免計(jì)算階段出現(xiàn)向量訪存不連續(xù),在列濾波計(jì)算階段對(duì)數(shù)組進(jìn)行轉(zhuǎn)置存放。本文在多種濾波核大小及圖像矩陣規(guī)模下進(jìn)行了性能測(cè)試,結(jié)果表明:相對(duì)于沒(méi)有進(jìn)行優(yōu)化的串行實(shí)現(xiàn),優(yōu)化后閾值分割算法獲得了1.3~1.41倍的加速比。同時(shí),相較于dsplib庫(kù)中高斯濾波算法在TMS320C6678平臺(tái)上的運(yùn)行性能,獲得了1.15~1.71倍的加速效果,驗(yàn)證了本文優(yōu)化實(shí)現(xiàn)的有效性以及FT DSP核的計(jì)算性能優(yōu)勢(shì)。然而,該優(yōu)化實(shí)現(xiàn)目前只針對(duì)32位輸入數(shù)據(jù)類(lèi)型,下一步將面向FT DSP核繼續(xù)完善高斯濾波算法,使其支持更多數(shù)據(jù)類(lèi)型。

        猜你喜歡
        優(yōu)化
        超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
        PEMFC流道的多目標(biāo)優(yōu)化
        能源工程(2022年1期)2022-03-29 01:06:28
        民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
        關(guān)于優(yōu)化消防安全告知承諾的一些思考
        一道優(yōu)化題的幾何解法
        由“形”啟“數(shù)”優(yōu)化運(yùn)算——以2021年解析幾何高考題為例
        圍繞“地、業(yè)、人”優(yōu)化產(chǎn)業(yè)扶貧
        事業(yè)單位中固定資產(chǎn)會(huì)計(jì)處理的優(yōu)化
        4K HDR性能大幅度優(yōu)化 JVC DLA-X8 18 BC
        幾種常見(jiàn)的負(fù)載均衡算法的優(yōu)化
        電子制作(2017年20期)2017-04-26 06:57:45
        亚洲AV无码成人品爱| 中文字幕av中文字无码亚| 韩国三级中文字幕hd| 国产精品-区区久久久狼| AV中文字幕在线视| 亚洲国产日韩一区二区三区四区 | 极品熟妇大蝴蝶20p| 久久亚洲av成人无码软件| 日本一区二区三区激视频| 欧美激情视频一区二区三区免费 | 亚洲一区二区三区精品久久av| 日本少妇高潮喷水视频| 日本在线一区二区三区视频观看| 中国人在线观看免费的视频播放| 亚洲人成色7777在线观看不卡| 国际无码精品| 亚洲一区二区国产精品视频| 国产精品一区二区黄色| 久久久久无码精品国产app| 色综合久久丁香婷婷| av在线男人的免费天堂| 国内自拍第一区二区三区| 高清少妇二区三区视频在线观看| 亚洲av无码国产综合专区| 国产看黄网站又黄又爽又色| 亚洲成a人片在线观看中| 嫩呦国产一区二区三区av| 孕妇特级毛片ww无码内射| 国产丝袜在线精品丝袜不卡| 国产偷拍自拍在线观看| 九九综合va免费看| 妓院一钑片免看黄大片| 中文字幕有码在线视频| 日本久久精品福利视频| 极品少妇被猛的白浆直喷白浆| 在线精品国内视频秒播| av高清视频在线麻豆免费观看| 国产av一区二区三区无码野战| 无码一区二区波多野结衣播放搜索 | 二区视频在线免费观看| 美女把尿囗扒开让男人添|