A portable, zero-overhead C++ header-only library implementing std::experimental::simd for explicit data-parallel programming.
std::experimental::simd is a C++ library that implements ISO/IEC TS 19570:2018, providing portable, zero-overhead types for explicit data-parallel programming. It solves the problem of writing SIMD code that is both performant and portable across different hardware architectures (x86, ARM, PowerPC) without relying on verbose, non-portable intrinsics.
C++ developers working on performance-critical applications such as scientific computing, game engines, or multimedia processing who need portable SIMD vectorization.
Developers choose this library because it offers a high-level, portable abstraction for SIMD programming that compiles to efficient hardware-specific instructions with zero overhead, eliminating the need for manual intrinsics while supporting multiple architectures.
std::experimental::simd for GCC [ISO/IEC TS 19570:2018]
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides native_simd<T> types that automatically adapt to hardware capabilities like SSE, AVX, or ARM NEON, as demonstrated in the scalar product example, enabling code that works across x86, ARM, and PowerPC.
Designed to compile to efficient machine code without runtime overhead compared to hand-written intrinsics, following the C++ philosophy of high-performance abstractions.
Guarantees correct execution via builtin arithmetic types on unsupported targets, ensuring portability even when SIMD instructions aren't available.
No build requirements; simply include headers for integration, making it easy to adopt in various C++ projects without complex setup.
Only tested and supported with GCC trunk, as stated in the README, which restricts compatibility with other compilers like Clang or MSVC and older GCC versions.
Based on ISO/IEC TS 19570:2018 and moving to std::simd for C++26, leading to potential breaking changes and lack of long-term stability for current implementations.
The install.sh script places headers in the compiler's standard library directory, which can conflict with system packages or require administrative privileges, complicating deployment.