google/highway

Performance-portable, length-agnostic SIMD with runtime dispatch

解决的问题

Highway 是一个旨在使 SIMD(单指令多数据)和向量编程变得实用且具有可移植性的 C++ 库。它允许开发人员编写高性能代码,利用不同架构上的 CPU 向量指令,而无需为每个平台编写单独的、特定于架构的内联函数。

工作原理

Highway 提供了一套直接映射到 CPU 指令的可移植向量内联函数。它抽象了不同指令集(如 x86 AVX、Arm NEON 和 RISC-V RVV)之间的硬件差异,使得相同的应用程序代码可以针对多个平台。它同时支持静态分发(在编译时针对特定指令集)和动态分发(在运行时检测最佳可用指令集)。

适用对象

面向需要在图像处理、线性代数、密码学、视频分析和压缩等领域突破 CPU 性能极限的软件工程师。

亮点

  • 广泛的架构支持:支持跨 x86、Arm、RISC-V、IBM Z、LoongArch、POWER 和 WebAssembly 的 27 个目标。
  • 性能可移植性:通过减少执行的指令数量,实现 5-10 倍的加速和显著的能耗降低。
  • 灵活的部署:支持通过动态分发在运行时检测最佳可用指令集。
  • 可预测的结果:提供与 CPU 指令良好映射的函数,使代码比依赖编译器自动向量化更加健壮。

相关

  • 项目
  • 项目
  • 项目
  • 项目