新闻中心

EEPW首页>嵌入式系统>设计应用> ARM NEON技术在车位识别算法中的应用

ARM NEON技术在车位识别算法中的应用

作者: 时间:2013-12-04 来源:网络 收藏

  3 图像处理算法在CORTEX-A8 平台上的优化

  本系统是Cortex-A8和Linux系统上搭建,Linux下使用的编译器为GCC.本文中使用普通C 语言优化和NEON编程优化对图像相关函数进行了优化,并进行了测试对比,下面给出方差函数variance代码进行优化前后的对比说明,如图5优化前的代码。

  3.1 C语言级别优化

  对于一般C语言级别的优化,对于图像这类矩阵数据而言,主要针对循环优化。以第一个循环为例,如图6对于C语言级别循环优化后的代码如图6所示。

  由优化后的结果可见,通过对循环展开,有效的减少了循环跳转次数,跳转为原来的1 4 .但是也可以发现,加法运算次数,几乎和原来相同并没有减少。对于其他for循环和其他函数进行优化后,测试时间对比如表2所示。

  由表中数据可见,使用普通C 语言界别优化,并没有明显提升,原因是在Linux系统上使用GCC编译器进行编译的,在选择-O2 级别优化的时候,已经对循环进行了优化,所以运行速度没有明显提升。

  3.2 使用的优化

  GCC 编译器从4.3 版本开始,很好地提供了对NEON 技术的支持。例如GCC 中的函数:

  uint32x2_t vadd_u32(uint32x2_t,uint32x2_t),对应汇语言:vadd.i32 d0,d0,d0.uint32x2_t代表这个数据类型是2 个32 位无符号整型。在使用GCC 编译器中的NEON 技术时,需要包含头文件arm_neon.h>.NEON增强指令集是在Cortex-A系列发布后才具有的功能,因此11 无法使用NEON 技术。对方差函数variance第一个for循环优化后的代码对比如图7所示。



评论


相关推荐

技术专区

关闭