新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM NEON技術(shù)在車位識別算法中的應(yīng)用

ARM NEON技術(shù)在車位識別算法中的應(yīng)用

作者: 時間:2013-12-04 來源:網(wǎng)絡(luò) 收藏

  

  

  3 圖像處理算法在CORTEX-A8 平臺上的優(yōu)化

  本系統(tǒng)是Cortex-A8和Linux系統(tǒng)上搭建,Linux下使用的編譯器為GCC.本文中使用普通C 語言優(yōu)化和NEON編程優(yōu)化對圖像相關(guān)函數(shù)進行了優(yōu)化,并進行了測試對比,下面給出方差函數(shù)variance代碼進行優(yōu)化前后的對比說明,如圖5優(yōu)化前的代碼。

  

  3.1 C語言級別優(yōu)化

  對于一般C語言級別的優(yōu)化,對于圖像這類矩陣數(shù)據(jù)而言,主要針對循環(huán)優(yōu)化。以第一個循環(huán)為例,如圖6對于C語言級別循環(huán)優(yōu)化后的代碼如圖6所示。

  

  由優(yōu)化后的結(jié)果可見,通過對循環(huán)展開,有效的減少了循環(huán)跳轉(zhuǎn)次數(shù),跳轉(zhuǎn)為原來的1 4 .但是也可以發(fā)現(xiàn),加法運算次數(shù),幾乎和原來相同并沒有減少。對于其他for循環(huán)和其他函數(shù)進行優(yōu)化后,測試時間對比如表2所示。

  

  由表中數(shù)據(jù)可見,使用普通C 語言界別優(yōu)化,并沒有明顯提升,原因是在Linux系統(tǒng)上使用GCC編譯器進行編譯的,在選擇-O2 級別優(yōu)化的時候,已經(jīng)對循環(huán)進行了優(yōu)化,所以運行速度沒有明顯提升。

  3.2 使用的優(yōu)化

  GCC 編譯器從4.3 版本開始,很好地提供了對 NEON 技術(shù)的支持。例如GCC 中的函數(shù):

  uint32x2_t vadd_u32(uint32x2_t,uint32x2_t),對應(yīng)匯語言:vadd.i32 d0,d0,d0.uint32x2_t代表這個數(shù)據(jù)類型是2 個32 位無符號整型。在使用GCC 編譯器中的NEON 技術(shù)時,需要包含頭文件arm_neon.h>.NEON增強指令集是在Cortex-A系列發(fā)布后才具有的功能,因此11 無法使用NEON 技術(shù)。對方差函數(shù)variance第一個for循環(huán)優(yōu)化后的代碼對比如圖7所示。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉