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
  • Mergify - Updating dependencies is time-consuming.
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • SonarQube - Static code analysis for 29 languages.
  • 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

  • Mergify

    Updating dependencies is time-consuming.. Solutions like Dependabot or Renovate update but don't merge dependencies. You need to do it manually while it could be fully automated! Add a Merge Queue to your workflow and stop caring about PR management & merging. Try Mergify for free.

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

  • 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

    Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.

  • wasm-simd

    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