← all repositories
ermig1979/Simd

One image library, six SIMD flavors, zero hand-wringing

A C++ library that manually vectorizes image processing and ML kernels so you don't have to pick between SSE, AVX-512, NEON, SVE, and whatever Intel dreams up next.

Simd
Velocity · 7d
+0.6
★ / day
Trend
steady
star history

What it does

Simd is a C/C++ library for image processing and lightweight machine learning—format conversion, scaling, filtering, motion detection, object detection, and neural network inference. Every algorithm comes in multiple hand-optimized implementations targeting specific SIMD instruction sets.

The interesting bit

The build system lets you target x86 (SSE through AMX), ARM (NEON, SVE), and even Qualcomm Hexagon (HVX) from the same codebase. The test framework automatically benchmarks scalar against SIMD variants and can disable specific extensions at runtime—useful when you’re debugging whether AVX-512 is actually worth the downclocking penalty on your chip.

Key highlights

  • Supports SSE, AVX2, AVX-512, AVX-512-VNNI, AMX-BF16/INT8 on x86; NEON and SVE on ARM; HVX on Hexagon
  • Includes C API, C++ wrappers, and a Python module (SimdPy)
  • Optional OpenCV interop with type conversions for cv::Mat, points, and rectangles
  • vcpkg packaging available
  • Test framework with per-function performance comparison, thread pinning, and cache-littering options

Caveats

  • AMX and SVE support are off by default; you opt in via CMake flags
  • The README notes that Visual Studio builds as DLL by default while everything else is static—an inconsistency that will bite you if you assume uniformity
  • No stated performance numbers or benchmark comparisons against other libraries in the documentation

Verdict

Grab this if you’re shipping computer vision across heterogeneous hardware (x86 servers, ARM edge devices, Hexagon DSPs) and want one dependency instead of three. Skip it if you’re already locked into OpenCV’s HAL or Intel’s oneAPI and don’t need the portability.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.