xtensor-stack/xsimd
C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, AVX512, NEON, SVE, WebAssembly, VSX, RISC-V))
What it solves
xsimd is a C++ library that provides a unified interface for SIMD (Single Instruction, Multiple Data) intrinsics. It solves the problem of microprocessor vendor and compiler differences, allowing developers to write high-performance code that can be accelerated across different hardware architectures without rewriting the logic for each specific instruction set.
How it works
The library acts as a wrapper around hardware-specific SIMD instructions. It enables developers to manipulate batches of numbers using the same arithmetic operators used for single values. It also provides accelerated implementations of common mathematical functions that operate on these batches, supporting a wide range of architectures including x86 (SSE, AVX), ARM (NEON, SVE), RISC-V, WebAssembly, and PowerPC.
Who it’s for
It is primarily designed for library authors and developers who need to optimize performance-critical code for numerical computation and data processing across multiple hardware platforms.
Highlights
- Broad Hardware Support: Supports a vast array of instruction sets including AVX-512, ARM SVE, and RISC-V.
- C++17 Standard: Requires a C++17 compliant compiler.
- Unified API: Allows the use of standard arithmetic operators on batches of data.
- Industry Adoption: Used by major projects such as Mozilla Firefox, Apache Arrow, and Krita.
Related
- Project
- Project
- Project
- Project