熟悉C/C++、汇编语言、NDK工具、常用linux操作;
了解ARM/DSP体系结构,熟悉cache,有ARM NEON 及 cadence DSP编程经验;
熟悉常用图像处理算法,有图像算法嵌入式移植经验;
Xxx算法优化项目
主要涉及技术:(1)ARM NEON(对于pixel to pixel类的操作一般可用NEON来进行加速); cache空间局部性(避免跨行或按列读写)、OPENCL(对于计算密集型可采用GPU计算)、IVP(DSP的能效比相较GPU和CPU都高不少);
案例1:本项目分为预览部分和拍照部分,预览部分限于功耗不能跑在大核上,但预览最后的实测性能又与CPU的小核计算能力相差较远,用streamline分析发现访存并不是瓶颈(数据读取量并不大,也无大量cache miss),那么瓶颈就应该在于计算,通过查看arm a53手册,发现其不支持乱序发射,故在小核上的预览算法采用手动指令重排,避免指令间的前后依赖,获得较好收益;
案例2:arm中,除法的latency较长,乘法的latency较短,而对于定点除法,可将除法转换为乘法,从而实现加速,并通过阅读Division_by_invariant_integers_using_multiplication,总结正确的转换方法。
案例3:在编写DSP代码时,由于DSP ram空间有限,需要手动将DDR中的数据一块一块搬运到ram中再处理,这个过程就容易导致访问越界,解决方法是编写一套接口能动态计算一次搬运的数据量,以及检查是否越界。