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 等。

适用对象

它主要为库作者以及需要针对多个硬件平台进行开发的高性能数值运算应用程序开发者所设计。

特色亮点

  • 广泛的硬件支持:支持多种指令集,包括 AVX-512、ARM SVE、RISC-V 与 WebAssembly。
  • 统一接口:允许对批次运算使用标准算术运算符。
  • 自动检测:可在编译时自动检测并使用可用的最高性能指令集。
  • 广泛采用:被 Apache Arrow、Pandas 与 Milvus (用于 AI 的向量数据库) 等大型项目所使用。

相关

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