摘要:高性能算法库可以通过向量化的方式高效地利用单指令多数据(SIMD)硬件的能力, 从而提升其在CPU上的执行性能. 其中, 向量化的实现需要使用目标 SIMD 硬件的特定编程方法, 而不同SIMD扩展的编程模型和编程方法均存在较大差异. 为了避免优化算法在不同平台上的重复实现, 提高算法库的可维护性, 在高性能算法库的开发过程中通常需要引入硬件抽象层. 由于目前主流SIMD扩展指令集均被设计为具有固定长度的向量寄存器, 多数硬件抽象层也是基于定长向量的硬件特性而设计, 无法包含RISC-V向量扩展所引入的可变向量寄存器长度的硬件特性. 而若将RISC-V向量扩展视作定长向量扩展引入现有硬件抽象层设计中, 会产生不必要的开销, 造成性能损失. 为此, 提出了一种面向可变长向量扩展平台和固定长度SIMD扩展平台的硬件抽象层设计方法. 基于此方法, 重新设计和优化了OpenCV算法库中的通用内建函数, 使其在兼容现有SIMD平台的基础上, 更好地支持RISC-V向量扩展设备. 将采用优化方法的OpenCV算法库与原版算法库进行性能比较, 实验结果表明, 运用该方法设计的通用内建函数能够将RISC-V向量扩展高效地融入算法库的硬件抽象层优化框架中, 并在核心模块中获得3.93倍的性能提升, 显著优化了高性能算法库在RISC-V设备上的执行性能, 从而验证了该方法的有效性. 此外, 工作已经开源并被OpenCV社区集成到其源代码之中, 证明了方法的实用性和应用价值.