<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

            

            

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

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

            

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

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

            

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

            

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

            3.2 使用的優(yōu)化

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

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



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();