jfalcou/eve
Expressive Vector Engine - SIMD in C++ Goes Brrrr
What it solves
EVE is a high-performance C++20 library designed to simplify the SIMD (Single Instruction, Multiple Data) programming model. It provides a type-based wrapper around SIMD extension sets for various hardware architectures, allowing developers to write efficient, low-level code with a high level of abstraction without having to write architecture-specific assembly or intrinsics manually for every target.
How it works
The library uses C++20 features—such as Concepts, template lambdas, and if constexpr—to create a generic interface for SIMD operations. It acts as a wrapper around the instruction sets of modern CPUs, supporting a wide range of Intel (SSE, AVX, AVX512) and ARM (NEON, SVE) architectures, as well as partial support for PowerPC (VMX, VSX).
Who it’s for
It is primarily aimed at developers working on high-performance computing (HPC) and low-level systems programming who need to maximize CPU throughput and performance on multiple hardware targets.
Highlights
- Broad Architecture Support: Actively supports Intel SSE2 through AVX512 and ARM NEON/SVE.
- Modern C++ Standard: Built specifically for C++20 to leverage modern design patterns and push the envelope of SIMD API design.
- High Abstraction: Provides a way to implement efficient SIMD code while maintaining a high-level, expressive API.
- Research-Driven: Developed as a research project to explore optimal design and implementation decisions for SIMD libraries.
Related
- Project
- Project
- Project
- Project