本案例研究强调了我们在为一个客户创建色度校正算法的优化管道和未来增强功能方面的作用。
客户
客户是一家全球领先的半导体解决方案开发商。客户正在为智能手机摄像头和互联网服务供应商建立世界上最小的图像传感器,并围绕它建立相应的软件管道。
该项目
客户有一个复杂的基于图像处理的管道,作为其RGB传感器和相机ISP(图像信号处理器)模块的一部分。该项目的目标是将该软件管道的色度校正模块优化10倍,以实现更高的性能(在速度上)。
挑战
- 一个非常幼稚的算法版本作为一个基础开始。
- 对第三方库(如OpenCV)有很大的依赖性
- 与数据带宽有关的问题必须在各个模块之间进行优化管理
典型的软件优化工作流程
一个典型的软件优化工作流程可以分为以下几个阶段:
第一阶段:这个阶段需要在目标平台上修改、编译和构建应用程序,最好是禁用所有编译器的优化。其目的是确定软件的正确性。
第二阶段:这一阶段被称为剖析,以找到应用程序花费大部分运行时间的代码区域。
第三阶段: 这个阶段是实际优化发生的地方
- 启用相关的编译器优化
- 缓存友好算法
- 优化使用可用的寄存器和内存传输
- 硬件特定的优化
所有的阶段及其相互依存关系可以用图示表示如下

建议的解决方案
- 创建控制流图
- 手工优化模块以取代OpenCV的API调用
- 设计缓存感知算法以减少缓存垃圾
- 循环优化
- 代码运动/循环不变性
- 迭代重新排序
- 循环解卷
MulticoreWare 的优势和方法
MulticoreWare 的基因库包括在性能优化方面根深蒂固的专业知识,特别是针对图像和视频处理管道。我们在为多核和异构计算环境创建软件解决方案和工具开发方面拥有深厚的经验。该项目将优化和视频/图像处理完美地结合在一起,这是MulticoreWare被认为是市场领导者的另一个领域。
重新定义技术架构–凭借我们在开发作为开源 SDK(x265/rpp/rocAL)的裸机图像/视频API方面的经验,MulticoreWare团队很容易就能移除OpenCV等依赖性第三方库。一旦去除外部依赖性,下一步就是设计新的控制流程。
结果
在预计的项目时间内,MulticoreWare团队能够将该算法的性能提高约8倍。
