xtensor-stack/xsimd

C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, AVX512, NEON, SVE, WebAssembly, VSX, RISC-V))

解決的問題

xsimd 是一個提供 SIMD(Single Instruction, Multiple Data)內建函數統一介面的 C++ 庫。它解決了不同微處理器廠商與編譯器之間的差異問題,讓開發者能夠撰寫高性能程式碼,在不同硬體架構上實現加速,而無需為每種特定指令集重新撰寫邏輯。

工作原理

該庫作為硬體特定 SIMD 指令的封裝器。它允許開發者使用與單一數值相同的算術運算子來操作數值批次。同時,它還提供了對這些批次運行的常見數學函數的加速實作,支援廣泛的架構,包括 x86(SSE、AVX)、ARM(NEON、SVE)、RISC-V、WebAssembly 和 PowerPC。

適用對象

主要針對需要在多個硬體平台對數值計算與資料處理的效能關鍵程式碼進行優化的函式庫作者與開發者。

主要亮點

  • 廣泛的硬體支援:支援包括 AVX-512、ARM SVE 和 RISC-V 在內的大量指令集。
  • C++17 標準:需要 C++17 相容的編譯器。
  • 統一的 API:可在資料批次上使用標準算術運算子。
  • 產業採用:被 Mozilla Firefox、Apache Arrow 和 Krita 等主要專案使用。

相關

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