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 the library authors to manipulate batches of numbers using the same arithmetic operators as they would 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 others.
Who it’s for
It is primarily designed for library authors and developers building high-performance numerical computing applications who need to target multiple hardware platforms.
Highlights
- Broad Hardware Support: Supports a vast array of instruction sets including AVX-512, ARM SVE, RISC-V, and WebAssembly.
- Unified Interface: Allows the use of standard arithmetic operators for batch operations.
- Auto-detection: Can automatically detect and use the most performant instruction set available at compile time.
- Widespread Adoption: Used by major projects like Apache Arrow, Pandas, and Milvus (a vector database for AI).
Related
- Project
- Project
- Project
- Project
- Project