google/highway

Performance-portable, length-agnostic SIMD with runtime dispatch

解决的问题

Highway 是一个 C++ 库,旨在让 SIMD (单指令多重数据) 和向量编程变得实用且具可移植性。它解决了编写高性能代码时,必须针对每个特定指令集重写核心逻辑,才能在不同 CPU 架构上高效运行的问题。

运作方式

Highway 提供了一组可移植的向量内建函数,这些函数直接映射到 CPU 指令。开发者无需编写特定于架构的代码,而是使用 Highway 的函数,库会自动将其映射到目标平台的适当指令。它同时支持静态分派 (在编译时针对特定指令集) 和动态分派 (在运行时选择最佳可用指令集)。

适用对象

它专为需要突破应用程序性能极限的软件工程师而设计,特别是在图像处理、压缩、视频分析、线性代数、密码学和机器人技术等领域。

特点

  • 广泛的架构支持:支持七种不同的架构,包括 x86、Arm、RISC-V、WebAssembly、IBM Z、LoongArch 和 POWER。
  • 性能提升:通过执行更少的指令,可以降低能源消耗并提供 5-10 倍的速度提升。
  • 灵活部署:允许应用程序通过在运行时选择最佳可用指令集,在异构云端或客户端设备上运行。
  • 可预测的结果:提供比编译器自动向量化更稳健且可预测的替代方案。
  • 广泛的操作集:包含 Gather、MaskedLoad 和 FixedTag 等工具,用于优化遗留数据结构和可扩展向量。

相关

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