ermig1979/Simd

C++ image processing and machine learning library with using of SIMD: SSE, AVX, AVX-512, AMX for x86/x64, NEON, SVE for ARM, HVX for Hexagon

What it solves

It provides a high-performance library for image processing and machine learning, specifically designed to overcome the performance bottlenecks of standard C/C++ implementations by leveraging hardware-level CPU optimizations.

How it works

The library implements algorithms using SIMD (Single Instruction, Multiple Data) CPU extensions. This allows the software to process multiple data points in a single CPU cycle. It supports a wide array of hardware architectures, including:

  • x86/x64: SSE, AVX, AVX-512, and AMX.
  • ARM: NEON, SVE, and SVE2.
  • Hexagon: HVX.

It offers a C API with C++ wrappers and a Python wrapper for broader accessibility.

Who it’s for

C and C++ programmers who need to implement fast image processing or machine learning tasks (such as object detection or neural networks) on diverse hardware platforms.

Highlights

  • Broad Hardware Support: Optimized for almost all major modern CPU extensions across x86, ARM, and Hexagon.
  • Diverse Toolset: Includes functions for pixel format conversion, image scaling, filtration, motion detection, and object classification.
  • OpenCV Integration: Supports mutual type conversion between Simd and OpenCV types.
  • Comprehensive Testing: Includes a test framework that compares scalar implementations against various SIMD versions to ensure correctness and measure performance.

Related

  • Project
  • Project
  • Project
  • Project
  • Project