highway VS nsimd

Compare highway vs nsimd and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
highway nsimd
66 2
3,623 315
3.3% 1.6%
9.8 0.0
7 days ago over 2 years ago
C++ C
Apache License 2.0 MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

highway

Posts with mentions or reviews of highway. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-31.
  • Llamafile 0.7 Brings AVX-512 Support: 10x Faster Prompt Eval Times for AMD Zen 4
    3 projects | news.ycombinator.com | 31 Mar 2024
    The bf16 dot instruction replaces 6 instructions: https://github.com/google/highway/blob/master/hwy/ops/x86_12...
  • JPEG XL and the Pareto Front
    9 projects | news.ycombinator.com | 1 Mar 2024
    [0] for those interested in Highway.

    It's also mentioned in [1], which starts off

    > Today we're sharing open source code that can sort arrays of numbers about ten times as fast as the C++ std::sort, and outperforms state of the art architecture-specific algorithms, while being portable across all modern CPU architectures. Below we discuss how we achieved this.

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

    [1] https://opensource.googleblog.com/2022/06/Vectorized%20and%2..., which has an associated paper at https://arxiv.org/pdf/2205.05982.pdf.

  • Gemma.cpp: lightweight, standalone C++ inference engine for Gemma models
    7 projects | news.ycombinator.com | 23 Feb 2024
    Thanks so much!

    Everyone working on this self-selected into contributing, so I think of it less as my team than ... a team?

    Specifically want to call out: Jan Wassenberg (author of https://github.com/google/highway) and I started gemma.cpp as a small project just a few months ago + Phil Culliton, Dan Zheng, and Paul Chang + of course the GDM Gemma team.

  • From slow to SIMD: A Go optimization story
    10 projects | news.ycombinator.com | 23 Jan 2024
    C++ users can enjoy Highway [1].

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

  • GDlog: A GPU-Accelerated Deductive Engine
    16 projects | news.ycombinator.com | 3 Dec 2023
  • Designing a SIMD Algorithm from Scratch
    3 projects | news.ycombinator.com | 28 Nov 2023
    At that point it is better to have some kind of DSL that should not be in the main language, because it would target a much lower level than a typical program. The best effort I've seen in this scene was Google's Highway [1] (not to be confused with HighwayHash) and I even once attempted to recreate it in Rust, but it is still distanced from my ideal.

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

  • SIMD Everywhere Optimization from ARM Neon to RISC-V Vector Extensions
    6 projects | news.ycombinator.com | 29 Sep 2023
    Interesting, thanks for sharing :)

    At the time we open-sourced Highway, the standardization process had already started and there were some discussions.

    I'm curious why stdlib is the only path you see to default? Compare the activity level of https://github.com/VcDevel/std-simd vs https://github.com/google/highway. As to open-source usage, after years of std::experimental, I see <200 search hits [1], vs >400 for Highway [2], even after excluding several library users.

    But that aside, I'm not convinced standardization is the best path for a SIMD library. We and external users extend Highway on a weekly basis as new use cases arise. What if we deferred those changes to 3-monthly meetings, or had to wait for one meeting per WD, CD, (FCD), DIS, (FDIS) stage before it's standardized? Standardization seems more useful for rarely-changing things.

    1: https://sourcegraph.com/search?q=context:global+std::experim...

    2: https://sourcegraph.com/search?q=context:global+HWY_NAMESPAC...

  • Permuting Bits with GF2P8AFFINEQB
    1 project | news.ycombinator.com | 27 Sep 2023
    Thanks for the link. We were previously using GFNI for bit reversal and 8-bit shifts, and I just extended that to our 8-bit BroadcastSignBit (https://github.com/google/highway/pull/1784).
  • Six times faster than C
    4 projects | news.ycombinator.com | 6 Jul 2023
    You could study Google's Highway library [1].

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

  • AMD EPYC 97x4 “Bergamo” CPUs: 128 Zen 4c CPU Cores for Servers, Shipping Now
    1 project | news.ycombinator.com | 24 Jun 2023
    Runtime feature detection need not be rare nor hard, it's a few dozen lines of boilerplate. You can even write your code just once: see https://github.com/google/highway#examples.

nsimd

Posts with mentions or reviews of nsimd. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-03-22.
  • SPO600 project part 1
    8 projects | dev.to | 22 Mar 2022
    I've decided to switch to something better, and after a few hours of searching, I found this repository: NSIMD https://github.com/agenium-scale/nsimd FastDifferentialCoding https://github.com/lemire/FastDifferentialCoding VS https://github.com/VcDevel/Vc XSIMD https://github.com/xtensor-stack/xsimd
  • All C++20 core language features with examples
    10 projects | news.ycombinator.com | 7 Apr 2021
    > - Waiting for Cross-Platform standardized SIMD vector datatypes

    which language has standardized SIMD vector datatypes ? most languages don't even have any ability to express SIMD while in C++ I can just use Vc (https://github.com/VcDevel/Vc), nsimd (https://github.com/agenium-scale/nsimd) or one of the other ton of alternatives, and have stuff that JustWorksTM on more architectures than most languages even support

    - Using nonstandard extensions, libraries or home-baked solutions to run computations in parallel on many cores or on different processors than the CPU

    what are the other native languages with a standardized memory model for atomics ? and, what's the problem with using libraries ? it's not like you're going to use C# or Java's built-in threadpools if you are doing any serious work, no ? Do they even have something as easy to use as https://github.com/taskflow/taskflow ?

    - Debugging cross-platform code using couts, cerrs and printfs

    because people never use console.log in JS or System.println in C# maybe ?

    - Forced to use boost for even quite elementary operations on std::strings.

    can you point to non-trivial java projects that do not use Apache Commons ? Also, the boost string algorithms are header-only so you will end up with exactly the same binaries that if it was in some std::string_algorithms namespace:

    https://gcc.godbolt.org/z/43vKadbde

What are some alternatives?

When comparing highway and nsimd you can also consider the following projects:

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

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

Vc - SIMD Vector Classes for C++

sleef - SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT

swup - Versatile and extensible page transition library for server-rendered websites 🎉

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

DirectXMath - DirectXMath is an all inline SIMD C++ linear algebra library for use in games and graphics apps

riscv-v-spec - Working draft of the proposed RISC-V V vector extension

highway - Highway - A Modern Javascript Transitions Manager

jpeg-xl