论文部分内容阅读
数字信号处理器(DSP)广泛应用于各类工业领域和军事装备领域,OpenCV是业界通用的开源图像处理算法库,但目前鲜有针对DSP平台的OpenCV移植和并行优化实现。移植OpenCV到DSP能够降低DSP图像应用开发的难度和准入门槛,提高DSP图像应用开发的效率,对军事图像处理应用的扩展具有推动作用。本文实现的OpenCV图像处理库已经成功在飞腾某型号芯片上进行了光斑跟踪检测的快速开发应用。本文在TI公司TMS320C6678 DSP平台上(以下简称为TI6678)实现了OpenCV的移植和优化。单核运行性能方面超越TI在AM572x EVM和66AK2H EVM上使用ARM+DSP的组合运行Linux实现OpenCV的解决方案。在单核优化的基础上,本文还结合OpenCV并行支持和TI6678的并行支持的特点,提出了结合OpenMP和OpenCV的并行方案,并且还提出了可以并行的OpenCV函数在TI6678上实现并行优化的一般方法。通过选取数个OpenCV函数进行并行改造,实现多核加速,证明修改方法的有效性。再者,本文发现了TI6678上运行OpenMP的性能瓶颈。从TI6678的OpenMP单核程序执行效率比单核CCS程序慢的现象入手,分析了TI6678上OpenMP程序控制过程,通过设计实验得出控制部分相对访存计算耗时很小的结论。而后分析OpenMP实现过程,得出写直达可能是影响性能发挥的因素,并通过访存实验,证明了这一推断。最后本文提出了IPCMP的并行方法,在OpenCV的并行层次中替换了OpenMP的支持,实现了OpenCV上自定义的并行方式。通过分析可以隐藏或者不考虑共享存储访问的Cache一致性的OpenCV函数的特征,证明了这部分函数不使用写直达并行的可行性。结合TI6678上的核间通信和共享存储管理特点,在函数的访存块不超过四片情况下,使用本文提出的IPCMP的OpenCV程序多核并行的性能比TI6678上使用OpenMP支持的OpenCV函数性能有了大幅提升。同时相比TI提供的ARM+TI6678的解决方案有明显的性能优势。