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