SIMD intrinsics and the possibility of a standard library solution

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

Our great sponsors
  • Sonar - Write Clean C++ Code. Always.
  • InfluxDB - Access the most powerful time series database as a service
  • 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

  • Sonar

    Write Clean C++ Code. Always.. Sonar helps you commit clean C++ code every time. With over 550 unique rules to find C++ bugs, code smells & vulnerabilities, Sonar finds the issues while you focus on the work.

  • 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

    Access the most powerful time series database as a service. Ingest, store, & analyze all types of time series data in a fully-managed, purpose-built database. Keep data forever with low-cost storage and superior data compression.

  • 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