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 指令良好映射的函數,使程式碼比依賴編譯器自動向量化更加穩健。

相關

  • 專案
  • 專案
  • 專案
  • 專案