SIMD in Go

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

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

    SIMD implementation in Go (by alivanz)

  • purego

  • Maybe interesting for you: https://github.com/ebitengine/purego

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

    Experiment with Go intrinsics (NOT USABLE)

  • A started something similar 8 years ago, but with more focus on x86-64. Seems like we pretty much took the same approach. I added stubs for them in Go Assembler, so you wouldn't need CGO.

  • xxHash

    Pure Go implementation of xxHash (32 and 64 bits versions) (by pierrec)

  • You can find a pure go unparallelized version here : https://github.com/pierrec/xxHash

  • xxhash

    A Go implementation of the 64-bit xxHash algorithm (XXH64) (by cespare)

  • For my zstd port I use https://github.com/cespare/xxhash - which has arm64/amd64 assembly. The point isn't to compare against Go code. The point is to compare against assembly. It is IMO close to pointless to write intrinsics, if it is slower than assembly - you might as well write assembly from the beginning.

  • xxh3

    XXH3 algorithm in Go

  • Not sure what you are thinking about with regard to parallel. Maybe you are thinking of xxhash 3. Both operate so close to memory speed that doing parallel blocks and merging them will probably always be slower.

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