The Case of the Missing SIMD Code

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

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.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • sleef

    SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT

  • I'm the main author of Highway, so I have some opinions :D Number of operations/platforms supported are important criteria.

    A hopefully unbiased commentary:

    Simde allows you to take existing nonportable intrinsics and get them to run on another platform. This is useful when you have a bunch of existing code and tight deadlines. The downside is less than optimal performance - a portable abstraction can be more efficient than forcing one platform to exactly match the semantics of another. Although a ton of effort has gone into Simde, sometimes it also resorts to autovectorization which may or may not work.

    Eigen and SLEEF are mostly math-focused projects that also have a portability layer. SLEEF is designed for C and thus has type suffixes which are rather verbose, see https://github.com/shibatch/sleef/blob/master/src/libm/sleef... But it offers a complete (more so than Highway's) libm.

  • simde

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

  • I was curious about these libraries a few weeks ago and did some searching. Is there one that's got a clearly dominating set of users or contributors?

    I don't know what a good way to compare these might be, other than perhaps activity/contributor count.

    [1] https://github.com/simd-everywhere/simde

    [2] https://github.com/ermig1979/Simd

    [3] https://github.com/google/highway

    [4] https://gitlab.com/libeigen/eigen

    [5] https://github.com/shibatch/sleef

  • 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
  • Simd

    C++ image processing and machine learning library with using of SIMD: SSE, AVX, AVX-512, AMX for x86/x64, VMX(Altivec) and VSX(Power7) for PowerPC, NEON for ARM. (by ermig1979)

  • I was curious about these libraries a few weeks ago and did some searching. Is there one that's got a clearly dominating set of users or contributors?

    I don't know what a good way to compare these might be, other than perhaps activity/contributor count.

    [1] https://github.com/simd-everywhere/simde

    [2] https://github.com/ermig1979/Simd

    [3] https://github.com/google/highway

    [4] https://gitlab.com/libeigen/eigen

    [5] https://github.com/shibatch/sleef

  • highway

    Performance-portable, length-agnostic SIMD with runtime dispatch

  • I was curious about these libraries a few weeks ago and did some searching. Is there one that's got a clearly dominating set of users or contributors?

    I don't know what a good way to compare these might be, other than perhaps activity/contributor count.

    [1] https://github.com/simd-everywhere/simde

    [2] https://github.com/ermig1979/Simd

    [3] https://github.com/google/highway

    [4] https://gitlab.com/libeigen/eigen

    [5] https://github.com/shibatch/sleef

  • eigen

  • I was curious about these libraries a few weeks ago and did some searching. Is there one that's got a clearly dominating set of users or contributors?

    I don't know what a good way to compare these might be, other than perhaps activity/contributor count.

    [1] https://github.com/simd-everywhere/simde

    [2] https://github.com/ermig1979/Simd

    [3] https://github.com/google/highway

    [4] https://gitlab.com/libeigen/eigen

    [5] https://github.com/shibatch/sleef

  • MIPP

    MIPP is a portable wrapper for SIMD instructions written in C++11. It supports NEON, SSE, AVX, AVX-512 and SVE (length specific).

  • I've also run into this thinking, and have been looking to solve it in codebases I'm working on.

    I've run across: https://github.com/aff3ct/MIPP but have not worked with it extensively yet. It looks to be a solution to the rewriting X parallel pipeline into Y SIMD extensions.

    Perhaps something like this, or languages introducing something similar into their standard libraries/modules would be a solution.

    None of this of course solves the run-time detection of capability/growing binary size to support such.

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

  • SIMD Everywhere Optimization from ARM Neon to RISC-V Vector Extensions

    6 projects | news.ycombinator.com | 29 Sep 2023
  • Advice on porting glibc trig functions to SIMD

    2 projects | /r/simd | 11 Jan 2023
  • SIMD intrinsics and the possibility of a standard library solution

    16 projects | /r/cpp | 8 Jan 2023
  • Optimizing compilers reload vector constants needlessly

    7 projects | news.ycombinator.com | 6 Dec 2022
  • Portable SIMD library

    3 projects | /r/C_Programming | 15 Nov 2022