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

        ?

        面向YHFT-M7002平臺(tái)圖像中值濾波算法的優(yōu)化實(shí)現(xiàn)

        2023-10-09 01:46:50王夢(mèng)園柴曉楠商建東
        關(guān)鍵詞:指令優(yōu)化

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

        (鄭州大學(xué)電子與信息工程學(xué)院 河南 鄭州 450000)

        (河南省超級(jí)計(jì)算中心 河南 鄭州 450000)

        0 引 言

        隨著大規(guī)模集成電路和信息技術(shù)的發(fā)展,圖形圖像處理技術(shù)應(yīng)運(yùn)而生并得到了廣泛的應(yīng)用,OpenCV(Open Source Computer Vision Library)就是隨之產(chǎn)生的圖形圖像處理庫之一。由于OpenCV中包含很多有關(guān)圖像處理方面的通用算法且為不同的平臺(tái)提供了豐富的底層支持,已經(jīng)成為計(jì)算機(jī)視覺領(lǐng)域最強(qiáng)大的開源工具之一。其中的中值濾波(Median Filter)作為一種通用的非線性信號(hào)處理算法,能夠在保護(hù)圖像邊緣的基礎(chǔ)上抑制消除一些孤立的噪聲點(diǎn),并且在濾除疊加白噪聲等方面的運(yùn)算速度較快性能極好,在圖像去噪領(lǐng)域應(yīng)用非常廣泛。

        在圖形圖像處理領(lǐng)域,如何盡量提升處理的實(shí)時(shí)性一直是一個(gè)重要的問題,由于DSP的高性能、低功耗等特點(diǎn)可以滿足圖像處理實(shí)時(shí)性以及密集型計(jì)算的需求,目前的應(yīng)用愈加廣泛。雖然國(guó)產(chǎn)DSP研究起步較晚但近年來隨著國(guó)產(chǎn)化需求愈發(fā)強(qiáng)烈,國(guó)產(chǎn)的高性能處理器發(fā)展也邁入了新的階段,其中比較有代表性的是國(guó)防科技大學(xué)研制的高性能處理器FT-M7002,其內(nèi)核針對(duì)運(yùn)算密集型算法進(jìn)行了高度優(yōu)化[1-2],在信號(hào)處理等需要進(jìn)行大量數(shù)據(jù)運(yùn)算的場(chǎng)合下能很好地發(fā)揮優(yōu)勢(shì)。

        目前國(guó)內(nèi)外針對(duì)在硬件平臺(tái)上的中值濾波優(yōu)化研究較少,大部分研究成果集中在對(duì)中值濾波自身算法的優(yōu)化層面[3-17]。例如文獻(xiàn)[6]提出了一種快速中值濾波算法,對(duì)傳統(tǒng)算法重復(fù)的數(shù)據(jù)訪存重新進(jìn)行了設(shè)計(jì),但沒有結(jié)合硬件進(jìn)行進(jìn)一步優(yōu)化。文獻(xiàn)[8]提出了一種改進(jìn)的中值濾波器針對(duì)降噪和改進(jìn)細(xì)節(jié)進(jìn)行了改進(jìn),提升了算法復(fù)雜度,但沒有改進(jìn)算法的計(jì)算量。

        本文面向FT-M7002平臺(tái),在完成OpenCV2.4.9移植的基礎(chǔ)上,提出針對(duì)該平臺(tái)特性的中值濾波算法向量化優(yōu)化實(shí)現(xiàn)。首先分析FT-M7002體系結(jié)構(gòu)特點(diǎn)與中值濾波算法實(shí)現(xiàn)方式,并通過對(duì)opencv中中值濾波程序進(jìn)行熱點(diǎn)測(cè)試來分析程序的性能瓶頸并進(jìn)行針對(duì)性優(yōu)化。主要實(shí)現(xiàn)步驟有:(1) 將需要處理的數(shù)據(jù)排布成適合向量化操作的順序;(2) 針對(duì)算法中密集型數(shù)據(jù)訪存,使用手工向量化、循環(huán)展開等優(yōu)化手段以充分利用數(shù)據(jù)級(jí)與指令級(jí)并行性;(3) 針對(duì)DMA傳輸產(chǎn)生的數(shù)據(jù)傳輸開銷,采用乒乓緩存是數(shù)據(jù)傳輸與數(shù)據(jù)計(jì)算同時(shí)進(jìn)行;(4) 針對(duì)實(shí)時(shí)性與高效性設(shè)計(jì)對(duì)比實(shí)驗(yàn),對(duì)改進(jìn)之后的算法性能進(jìn)行詳細(xì)的測(cè)試。

        1 YHFT-M7002體系結(jié)構(gòu)

        1.1 FT-M7002總體結(jié)構(gòu)

        YHFT-Matrix是國(guó)內(nèi)自主研發(fā)的面向圖像處理、無線通信和視頻的高性能DSP。其總體結(jié)構(gòu)如圖1所示,板卡包含2個(gè)FT-MT2 DSP核、1個(gè)RISC CPU核、2個(gè)IO節(jié)點(diǎn)、全局Cache、核間同步、1個(gè)MCU及PCIE、SRIO、GMAC等IO設(shè)備。內(nèi)核和核外設(shè)備連接為環(huán)形[2]。

        圖1 FT-M7002總體結(jié)構(gòu)

        1.2 FT-MT2內(nèi)核結(jié)構(gòu)

        FT-MT2內(nèi)核為VLIW(超長(zhǎng)指令字)結(jié)構(gòu),包括一個(gè)五流出標(biāo)量處理單元和一個(gè)六流出向量處理單元。標(biāo)量處理單元SPU包括指令流控部件、SPE、SM。SPE主要用來接收標(biāo)量運(yùn)算類的指令,將指令譯碼后在對(duì)應(yīng)的功能單元執(zhí)行操作。SM主要實(shí)現(xiàn)標(biāo)量數(shù)據(jù)的訪存。向量處理單元VPU由16個(gè)同構(gòu)的VPE以及混洗/歸約部件組成,負(fù)責(zé)對(duì)數(shù)據(jù)密集以及運(yùn)算量大的任務(wù)進(jìn)行并行處理。VPE支持歸約操作以及混洗操作。圖2為向量存儲(chǔ)體結(jié)構(gòu),由16個(gè)Bank組成,統(tǒng)一編址交叉存放可以進(jìn)行數(shù)據(jù)共享,且與向量處理單元的VPE0-VPE15對(duì)應(yīng),可以為VPE提供帶寬為512位的向量數(shù)據(jù)讀寫訪問[18-19]。

        圖2 向量存儲(chǔ)體結(jié)構(gòu)

        2 中值濾波算法原理及實(shí)現(xiàn)方法分析

        2.1 中值濾波算法原理

        中值濾波的計(jì)算方式類似于卷積計(jì)算,中值濾波原理:對(duì)一維數(shù)字序列Xk,定義濾波窗口的長(zhǎng)度為L(zhǎng),L=2N+1,N為正整數(shù)。為了保證使輸出信號(hào)長(zhǎng)度不變,在濾波前需要對(duì)濾波數(shù)據(jù)進(jìn)行邊界填充,在輸入信號(hào)邊界分別填充N個(gè)信號(hào),具體的填充方式視情況而定[20],然后在信號(hào)序列XK-N,XK-N+1,…,XK,…,XK+N中滑動(dòng)窗口,之后對(duì)窗口中的這些值進(jìn)行排序操作之后,位于K處的序列樣本值即為中值濾波的輸出,用公式表示為:

        YK=med{XK-N,XK-N+1,…,XK-1,XK+1,…XK+N}

        (1)

        式中:{XK,YK|1≤K≤L};med(·)表示取XK序列的中值。

        對(duì)于對(duì)二維圖像信號(hào)Xij,其中值濾波算法流程和一維序列類似,二維中值濾波輸出值為:

        Yij=medXij=med{Xi+r,j+s:r,s∈A}

        (2)

        式中:A為截取圖像數(shù)據(jù)的二維窗口。圖3為濾波窗口為正方形大小為3×3時(shí)的中值濾波過程以及結(jié)果。

        (a) 濾波過程 (b) 濾波結(jié)果

        2.2 中值濾波具體實(shí)現(xiàn)方法分析

        Opencv的中值濾波算法實(shí)現(xiàn)為了達(dá)到不同濾波核大小的情況下最好的性能,根據(jù)濾波核的大小選用了不同的實(shí)現(xiàn)方法,當(dāng)中值濾波采用的濾波核大小比較小(Ksize≤5)時(shí),由于每次迭代需要比較計(jì)算的數(shù)據(jù)量比較小,所以可以直接采用傳統(tǒng)的直接排序方法計(jì)算中值,以3×3的濾波核為例進(jìn)行說明,其基本思路是先對(duì)數(shù)據(jù)進(jìn)行排序(算法中的行向有序),然后再在三組有序的數(shù)據(jù)中找到數(shù)據(jù)合并后的中位數(shù),首先需要取出有序序列中最小值中的最大值、最大值中的最小值、中間列向的中值,三個(gè)數(shù)進(jìn)行比較之后的中值就是輸出結(jié)果。

        圖4為濾波核大小為3×3時(shí)快速算法流程,其中p0-p8為3×3濾波核的9個(gè)數(shù)據(jù),數(shù)字代表比較操作的執(zhí)行順序,3×3的數(shù)據(jù)中經(jīng)過比較操作之后p4位置的數(shù)據(jù)就是輸出值。

        圖4 濾波核為3×3時(shí)快速濾波算法流程

        ksize>5時(shí),opencv使用的算法是利用直方圖的快速算法,在中值濾波的窗口n×m移動(dòng)一列時(shí),其實(shí)質(zhì)是減去了左邊一列m個(gè)像素值并增加了最右邊的一列m個(gè)像素值,其中間的mn-2n個(gè)像素值保持不動(dòng),如圖5所示,所以只需要考慮變化的兩列像素值對(duì)窗口中值的影響(將mn個(gè)像素的灰度直方圖存儲(chǔ)在窗口中,并在窗口移動(dòng)時(shí)對(duì)其進(jìn)行更新)這樣可以避免對(duì)大量沒有變動(dòng)的像素值進(jìn)行比較,從而解決傳統(tǒng)濾波算法重復(fù)計(jì)算的問題。

        (a) 濾波核向右滑動(dòng)時(shí) 變化的像素 (b) 濾波核向下滑動(dòng)時(shí) 變化的像素

        3 面向FT-M7002平臺(tái)的中值濾波算法優(yōu)化實(shí)現(xiàn)

        在對(duì)FT-M7002的體系結(jié)構(gòu)以及向量部件特點(diǎn)等進(jìn)行分析之后,針對(duì)中值濾波算法設(shè)計(jì)FT平臺(tái)上的一般實(shí)現(xiàn)方法,并對(duì)此算法的數(shù)據(jù)密集運(yùn)算部分進(jìn)行了數(shù)據(jù)級(jí)和指令級(jí)層面的優(yōu)化,進(jìn)一步提升了此算法的性能。

        3.1 向量化優(yōu)化

        SIMD(Single Instruction Multiple Data)單指令多數(shù)據(jù)運(yùn)算可以幫助CPU實(shí)現(xiàn)數(shù)據(jù)并行,提高運(yùn)算效率。FT-M7002板卡中的AM向量模塊由16個(gè)向量存儲(chǔ)體組成,每個(gè)存儲(chǔ)體都包含16個(gè)VPE,并且VPE對(duì)應(yīng)的VLIW執(zhí)行包中的向量指令可以同時(shí)調(diào)用16個(gè)VPE中的數(shù)據(jù)進(jìn)行操作。所以在讀取完圖片數(shù)據(jù)之后,可以利用DMA傳輸模塊將數(shù)據(jù)傳輸?shù)紸M空間,使得一次操作運(yùn)算可以對(duì)16個(gè)VPE中的數(shù)據(jù)同時(shí)進(jìn)行,可以達(dá)到提升運(yùn)行效率的效果[2]。

        3.1.1總體實(shí)現(xiàn)流程

        以圖6為例說明基于向量處理器的中值濾波的實(shí)現(xiàn)方法.設(shè)濾波核大小為3×3,首先使用DMA將已經(jīng)轉(zhuǎn)化成的矩陣數(shù)據(jù)從DDR中傳輸?shù)紸M空間;向量寄存器從AM空間中加載矩陣中第一行和第二行的數(shù)據(jù)調(diào)用已經(jīng)寫好的向量接口進(jìn)行比較,將結(jié)果存放在對(duì)應(yīng)的位置;繼續(xù)加載相應(yīng)的數(shù)據(jù)進(jìn)行上述操作,直至完成所有的比較操作之后,將結(jié)果傳輸回標(biāo)量空間。標(biāo)量算法的核心在于核內(nèi)9個(gè)像素值的比較排序,一共需要19次比較排序,若在FT平臺(tái)使用向量寄存器完成比較操作則可以同時(shí)進(jìn)行16次對(duì)像素的比較,理論上可以產(chǎn)生16倍左右的加速效果。

        圖6 FT平臺(tái)上中值濾波算法示意圖

        3.1.2數(shù)據(jù)搬移

        由于FT-M7002在使用向量指令進(jìn)行數(shù)據(jù)的向量操作的時(shí)候,需要從AM空間進(jìn)行數(shù)據(jù)的訪存,但是AM的存儲(chǔ)空間比較小,數(shù)據(jù)量比較大時(shí)AM空間不能完全存放,所以為了提升性能并且滿足向量操作的需要,在中值濾波的計(jì)算過程之前利用DMA將存儲(chǔ)在DDR的數(shù)據(jù)搬移到AM地址中進(jìn)行計(jì)算,向量計(jì)算完成之后再使用DMA將數(shù)據(jù)重新傳送回標(biāo)量空間的地址中進(jìn)行后續(xù)操作。

        直接存儲(chǔ)器訪問(Direct Memory Access,DMA)是一種在系統(tǒng)內(nèi)部轉(zhuǎn)移數(shù)據(jù)的獨(dú)特外設(shè),可以獨(dú)立于CPU進(jìn)行數(shù)據(jù)的傳輸交換[21]。在實(shí)際應(yīng)用過程中由于核內(nèi)存儲(chǔ)器的空間大小的限制,需要將數(shù)據(jù)存儲(chǔ)在DDR中,再使用DMA根據(jù)訪問地址向AM或者SM空間發(fā)起讀寫操作,每次啟動(dòng)DMA可完成一個(gè)二維數(shù)據(jù)塊的傳輸。通過使用DMA傳輸可以將輸入圖片矩陣連續(xù)地存放在AM存儲(chǔ)空間中,從而可以直接利用7002向量指令存取數(shù)據(jù),保證了數(shù)據(jù)的局部性,減少不必要的訪存操作。

        3.1.3FT-M7002向量指令集改寫

        中值濾波算法向量化優(yōu)化的重點(diǎn)在于標(biāo)量比較指令的向量化改寫,以float類型為例,因?yàn)镕T-M7002的vec_lt(小于)、vec_fcmpg(大于)比較指令返回的值是int型的0或1,不能直接得到比較后對(duì)應(yīng)的數(shù)據(jù),所以還需要利用類型轉(zhuǎn)換指令vec_fxts和乘法指令vec_muli進(jìn)行組合來取到比較大小之后的數(shù)值,以小于指令為例,要取a、b中較小的值首先需要使用vec_lt指令分別比較(ab)、(ba),兩個(gè)返回的結(jié)果值利用vec_fxts進(jìn)行轉(zhuǎn)換之后分別與a、b相乘,再使用vec_eq判斷兩個(gè)值是否相等,返回的值與b相乘之后把得到的三個(gè)值進(jìn)行加法操作,就可以得到較小的值。大于指令也是類似的原理,為減少代碼的冗余將上述指令集合封裝成兩個(gè)比較大小的通用函數(shù)接口,進(jìn)行向量化改寫時(shí)可以直接調(diào)用這兩個(gè)向量接口來完成比較指令的替換。部分代碼示例如下:

        vector float(vec_minf)(vector float a,vector float b)

        {

        vector signed int t=vec_lt(a,b);

        vectoe float t1=vec_fxts(t);

        vecroe float r2=vec_muli(t1,a);

        vector signed int t3=vec_lt(b,a);

        vectoe float t4=vec_fxts(t3);

        vector float t5=vec_muli(t4,b);

        vector signed int t6=vec_eq(b,a);

        vector float t7=vec_fxts(t6);

        vector float t8=vec_muli(t7,b);

        vector float dst=vec_add(t2,t5);

        dst=vec_add(t8,dst);

        return dst;

        }

        3.2 DMA傳輸優(yōu)化

        由于處理器的時(shí)鐘頻率和計(jì)算性能增長(zhǎng)速度遠(yuǎn)遠(yuǎn)大于主存DRAM訪問的增長(zhǎng)速度,即便是cache和數(shù)據(jù)預(yù)取可以減少訪存時(shí)間但解決不了根本問題,并且FT-M7002的特殊結(jié)構(gòu)導(dǎo)致在進(jìn)行向量運(yùn)算時(shí)需要利用DMA將數(shù)據(jù)搬移到AM空間中,導(dǎo)致數(shù)據(jù)傳輸需要的時(shí)間占比過多影響程序的性能。對(duì)于這些問題可以利用雙Buffer機(jī)制來解決[22]。也就是在DMA開始傳輸循環(huán)檢測(cè)之前將其和計(jì)算程序運(yùn)行并行起來,同時(shí)進(jìn)行數(shù)據(jù)傳輸和運(yùn)算,相當(dāng)于隱藏一部分運(yùn)算時(shí)間,從而達(dá)到性能優(yōu)化的目的。

        圖7為雙Buffer機(jī)制的示意圖,首先數(shù)據(jù)的初始化配置按順序依次向Buffer0、Buffer1傳輸數(shù)據(jù)。進(jìn)入循環(huán)后首先檢測(cè)Buffer0的數(shù)據(jù)輸入是否完成,若已經(jīng)完成傳輸則對(duì)其進(jìn)行向量計(jì)算操作,同時(shí)DMA開始向Buffer1中傳輸數(shù)據(jù),若Buffer1中的數(shù)據(jù)傳輸完成且向DDR寫回后,就開始新的計(jì)算同時(shí)對(duì)Buffer0中的數(shù)據(jù)進(jìn)行更新。雙Buffer循環(huán)次數(shù)根據(jù)運(yùn)算的數(shù)據(jù)量而定,循環(huán)結(jié)束后需要對(duì)循環(huán)中最后一次傳入Buffer0和Buffer1中的數(shù)據(jù)進(jìn)行計(jì)算然后再將數(shù)據(jù)傳出到DDR中完成全部計(jì)算。

        圖7 雙Buffer機(jī)制示意圖

        使用雙Buffer優(yōu)化時(shí),具體AM空間的劃分如圖8所示,將AM空間劃分成Buffer0和Buffer1兩個(gè)部分,分別屬于AM中地址0X3XXXX60000的兩側(cè),兩部分都包括輸入數(shù)據(jù)空間和保留空間。

        圖8 AM數(shù)據(jù)布局

        3.3 其他優(yōu)化

        為進(jìn)一步提升優(yōu)化效果,在進(jìn)行以上優(yōu)化方法的基礎(chǔ)上嘗試進(jìn)行了核心代碼段部分最內(nèi)層循環(huán)的展開優(yōu)化,通過增加每次迭代計(jì)算的元素的數(shù)量來減少循環(huán)的迭代的次數(shù)以提供更多的軟件流水并行,減小循環(huán)開銷的影響。但循環(huán)展開會(huì)大大增加生成的目標(biāo)代碼的體積,因此在使用循環(huán)展開時(shí)要同時(shí)考慮選擇多大的展開度以及這個(gè)展開度對(duì)空間開銷比例的影響,在盡量不會(huì)使目標(biāo)代碼空間消耗激增的前提下獲得最高的時(shí)間收益。

        實(shí)際進(jìn)行循環(huán)展開優(yōu)化時(shí),通過多次實(shí)驗(yàn)確定最優(yōu)的循環(huán)展開因子為2,實(shí)驗(yàn)結(jié)果均為在循環(huán)展開因子為2時(shí)的測(cè)試結(jié)果,充分挖掘了程序的指令級(jí)并行性以獲得最好的加速效果。

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

        4.1 實(shí)驗(yàn)環(huán)境

        在FT-M7002上對(duì)不同情況下中值濾波算法的性能進(jìn)行測(cè)試,由于在FT平臺(tái)上不同的數(shù)據(jù)類型對(duì)應(yīng)使用的向量指令不同,所以實(shí)驗(yàn)結(jié)果對(duì)使用較多的三種數(shù)據(jù)類型(unsigned char、unsigned int、float)進(jìn)行分開測(cè)試,并與未進(jìn)行優(yōu)化之前的Opencv濾波算法運(yùn)行周期進(jìn)行對(duì)比。

        實(shí)驗(yàn)平臺(tái)中,FT-M7002的主頻為1 GHz(雙精度峰值性96GFLOPS),單核L1D大小為32 KB,AM向量空間大小為512 KB。

        4.2 算法正確性及性能測(cè)試

        4.2.1unsignedchar類型測(cè)試結(jié)果

        unsigned char是圖像處理庫應(yīng)用較多的數(shù)據(jù)類型,但由于FT平臺(tái)的向量寄存器較長(zhǎng)還沒有直接針對(duì)此類型的向量化指令,針對(duì)這個(gè)問題借助平臺(tái)的混洗以及邏輯操作等指令提出一種通用的unsigned char和unsigned int進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換的接口,通過調(diào)用接口將數(shù)據(jù)類型轉(zhuǎn)換成為unsigned int類型進(jìn)行操作,計(jì)算完成之后的結(jié)果再使用接口轉(zhuǎn)換回unsigned char類型。

        表1為濾波核為3×3時(shí),unsigned char類型在不同的圖片像素大小時(shí)的加速效果,可以看出在結(jié)果正確的前提下經(jīng)過優(yōu)化后的程序加速效果平均在13倍左右,加速比隨著圖片數(shù)據(jù)量的增大呈線性增長(zhǎng)的趨勢(shì)。原因在于隨著數(shù)據(jù)量的增大其核心計(jì)算部分的耗時(shí)在程序整體運(yùn)行時(shí)間占比增大,并且DMA傳輸耗時(shí)占比變小,所以加速效果呈現(xiàn)線性增大的趨勢(shì)。

        表1 unsigned char類型濾波核3×3時(shí)測(cè)試結(jié)果

        表2整理了濾波核大小為5×5時(shí)程序的加速比。實(shí)驗(yàn)結(jié)果顯示,經(jīng)過優(yōu)化后的程序加速效果為7倍左右,其加速效果不如3×3的主要原因在于當(dāng)濾波核大小為5時(shí),其一次內(nèi)層循環(huán)計(jì)算量是濾波核為3時(shí)的6倍多,需要用到大量的向量寄存器,產(chǎn)生了較多的時(shí)間折損導(dǎo)致加速比較低。在不同數(shù)據(jù)量大小的情況下數(shù)據(jù)量較大時(shí)的數(shù)據(jù)級(jí)和指令級(jí)的并行更多,加速效果也比數(shù)據(jù)量較小時(shí)更好。

        表2 unsigned char類型濾波核5×5時(shí)測(cè)試結(jié)果

        4.2.2unsignedshort類型測(cè)試結(jié)果

        當(dāng)輸入圖片的數(shù)據(jù)類型為unsigned short時(shí),由于向量部件計(jì)算16位數(shù)據(jù)時(shí)需要將兩個(gè)16位數(shù)據(jù)組合放在一個(gè)寄存器中進(jìn)行計(jì)算,就導(dǎo)致讀取數(shù)據(jù)不支持產(chǎn)生奇數(shù)位偏移。為解決這個(gè)問題提出一種通用的unsigned short與unsigned int數(shù)據(jù)類型互相轉(zhuǎn)換的接口,實(shí)際計(jì)算時(shí)可以調(diào)用接口把數(shù)據(jù)轉(zhuǎn)換成unsigned int類型進(jìn)行計(jì)算,但是使用接口轉(zhuǎn)換數(shù)據(jù)就不可避免地會(huì)產(chǎn)生額外的數(shù)據(jù)傳輸成本。如表3所示,濾波核3×3時(shí)unsigned short類型加速效果為12倍左右,并且隨著數(shù)據(jù)量的增大呈增加趨勢(shì)。

        表3 unsigned short類型濾波核3×3時(shí)測(cè)試結(jié)果

        表4為濾波核大小為5×5數(shù)據(jù)類型為unsigned short類型時(shí)的測(cè)試結(jié)果,可以看出優(yōu)化后的算法加速比大概為5倍左右,原因是數(shù)據(jù)類型轉(zhuǎn)換耗費(fèi)時(shí)間較多,并且濾波核增加計(jì)算量呈指數(shù)型增長(zhǎng),所以濾波核為5時(shí)的加速比較低。

        表4 unsigned short類型濾波核5×5時(shí)測(cè)試結(jié)果

        4.2.3float類型測(cè)試結(jié)果

        表5統(tǒng)計(jì)了濾波核大小為3×3時(shí),32位浮點(diǎn)類型在不同數(shù)據(jù)量的情況下最高可以達(dá)到16.6倍左右的加速效果。由于float類型的中值濾波在進(jìn)行向量化改寫時(shí)可以直接使用對(duì)應(yīng)的向量指令,無須進(jìn)行類型轉(zhuǎn)換,節(jié)省了較多運(yùn)行時(shí)間,之后又結(jié)合了上文多種優(yōu)化方法進(jìn)行了優(yōu)化加速,所以其效果得到了明顯提升。

        表5 float類型濾波核3×3時(shí)算法測(cè)試結(jié)果

        當(dāng)濾波核大小為5×5時(shí),由于這種情況下計(jì)算量較大,并且32位浮點(diǎn)本身在計(jì)算過程中需要將部分?jǐn)?shù)據(jù)由整型轉(zhuǎn)換為浮點(diǎn),在計(jì)算量大的情況下時(shí)間折損占比更多,加速比效果不如3×3,表6為不同數(shù)據(jù)量情況下的測(cè)試數(shù)據(jù),加速比大概為5倍左右。

        表6 float類型濾波核5×5時(shí)算法測(cè)試結(jié)果

        5 結(jié) 語

        本文面向國(guó)產(chǎn)FT-M7002平臺(tái)提出一種中值濾波的實(shí)現(xiàn)方法,并結(jié)合平臺(tái)的硬件特性使用手工向量化改寫、數(shù)據(jù)傳輸優(yōu)化、循環(huán)展開等優(yōu)化方式,充分挖掘算法數(shù)據(jù)級(jí)以及指令級(jí)的并行性,實(shí)現(xiàn)程序性能提升的目的。本文在多種濾波核大小及不同數(shù)據(jù)類型輸入圖片的情況下進(jìn)行性能測(cè)試,結(jié)果表明:相對(duì)于沒有進(jìn)行優(yōu)化的串行實(shí)現(xiàn),該優(yōu)化使程序獲得了5~16不等的加速比,驗(yàn)證了本文所提出優(yōu)化的有效性以及FT DSP核的計(jì)算性能優(yōu)勢(shì)。下一步將繼續(xù)完善其他常用圖像處理算法在FT DSP平臺(tái)的優(yōu)化實(shí)現(xiàn)。

        猜你喜歡
        指令優(yōu)化
        聽我指令:大催眠術(shù)
        超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
        民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
        關(guān)于優(yōu)化消防安全告知承諾的一些思考
        一道優(yōu)化題的幾何解法
        由“形”啟“數(shù)”優(yōu)化運(yùn)算——以2021年解析幾何高考題為例
        ARINC661顯控指令快速驗(yàn)證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        殺毒軟件中指令虛擬機(jī)的脆弱性分析
        基于低碳物流的公路運(yùn)輸優(yōu)化
        国产成人无码一区二区三区| 一区二区三区国产高潮| 四虎永久在线精品免费观看地址| 国产亚洲精选美女久久久久| 日本妇女高清一区二区三区| 丰满少妇高潮惨叫久久久| 无码人妻精品丰满熟妇区| 亚洲高清无码第一| 亚洲成AV人在线观看网址| 国产精品麻豆一区二区三区| 小妖精又紧又湿高潮h视频69| 国产亚洲av无码专区a∨麻豆| 国产福利小视频在线观看| 久久2020精品免费网站| 国产精品午夜福利视频234区| 夜夜高潮夜夜爽夜夜爱爱| 三年片在线观看免费大全电影| 国产永久免费高清在线观看视频| 91精品亚洲熟妇少妇| 国产精品区一区二区三在线播放| 亚洲精品久久久久久动漫| 国产精品欧美亚洲韩国日本| 中文日本强暴人妻另类视频| 美女下蹲露大唇无遮挡| 看久久久久久a级毛片| 男人边吃奶边做好爽免费视频| 国内精品视频成人一区二区 | 日韩精品极品系列在线免费视频 | 精品无码国产一区二区三区av | 中文字幕+乱码+中文字幕一区| 久久99国产伦精品免费| 久久精品国产福利亚洲av| 欧美精品色婷婷五月综合| 国产亚洲情侣一区二区无| 麻豆第一区MV免费观看网站| 日本午夜理伦三级好看| 成人偷拍自拍视频在线观看| 国产精品久久久久久亚洲av| 亚洲综合偷自成人网第页色| 国产在线一区二区视频免费观看| 日本视频在线观看二区|