SIMD intrinsics and the possibility of a standard library solution

This page summarizes the projects mentioned and recommended in the original post on /r/cpp

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • highway

    Performance-portable, length-agnostic SIMD with runtime dispatch

  • It seems that way but there is actually a large common subset, see https://github.com/google/highway/blob/master/g3doc/instruction_matrix.pdf.

  • eve

    Expressive Vector Engine - SIMD in C++ Goes Brrrr (by jfalcou)

  • Anyways, if you feel like trying eve - pop an algo in question into issues: https://github.com/jfalcou/eve/issues

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • xsimd

    C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, AVX512, NEON, SVE))

  • xsimd - 1.6K GH stars

  • version2

    Vector class library, latest version

  • Vector class library - 938 GH stars

  • std-simd

    std::experimental::simd for GCC [ISO/IEC TS 19570:2018]

  • std-simd - 451 GH stars

  • Skia

    Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

  • I use SkVx from Skia. It uses compilers' vector extensions and few platform-specific intrinsics. If no vector extension available (e.g. msvc), a scalar implementation is provided in the hope that compiler can vectorize it.

  • simd_decimal

    vectorized decimal parsing

  • Compare this neon parser and this sse parser, or for a very direct example what happens if you naively do the x86 method of vector search on arm. The shuffle and accumulation for each parser is drastically different, since the set of horizontal multiply-accumulates are different.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • ispc

    Intel® Implicit SPMD Program Compiler

  • ISPC: https://github.com/ispc/ispc

  • sleef

    SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT

  • Highway and Agner's VectorClass also have math functions. And SLEEF should definitely be mentioned.

  • simde

    Implementations of SIMD instruction sets for systems which don't natively support them.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts