Convenient CPU feature detection and dispatch in the Magnum Engine

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

    The fundamental package for scientific computing with Python.

  • zlib-ng

    zlib replacement with optimizations for "next generation" systems.

    zlib-ng: https://github.com/zlib-ng/zlib-ng/blob/develop/functable.c

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

  • libjpeg-turbo

    Main libjpeg-turbo repository

    libjpeg-turbo: https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/simd/x86_64/jsimdcpu.asm

  • libwebp

    Mirror only. Please do not send pull requests. See https://chromium.googlesource.com/webm/libwebp/+/HEAD/CONTRIBUTING.md.

  • zstd

    Zstandard - Fast real-time compression algorithm

  • Skia

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

  • Bullet

    Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

    Bullet: https://github.com/bulletphysics/bullet3/blob/5ae9a15ecac7bc7e71f1ec1b544a55135d7d7e32/src/LinearMath/btCpuFeatureUtility.h

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

  • wasm-simd

    Discontinued Documenting Wasm SIMD performance

    This WASM SIMD instruction table is a bit outdated (doesn't show the bitmask instructions I mentioned in the article), but can still give you a pretty good picture about the differences. There are many instructions that map 1:1 to an actual x86 instruction but need several on ARM, and vice versa.

  • go

    The Go programming language

    I hope so, after all if glibc can get away with that with their ifunc-based dispatch (although for a very limited set of APIs), I assumed I could too. I only know about one case where CPU features differed among cores and it wasn't recognized as a good idea :) I would probably collect a lowest common denominator across all cores in that case.

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