ARM-software/CMSIS-DSP
CMSIS-DSP embedded compute library for Cortex-M and Cortex-A
What it solves
CMSIS-DSP provides a set of highly optimized compute kernels for embedded systems, specifically targeting Arm Cortex-M and Cortex-A processors. It solves the problem of implementing complex mathematical and signal processing operations on resource-constrained hardware while maximizing performance through hardware-specific accelerations like Helium and Neon.
How it works
The library provides a wide array of optimized functions (kernels) across various data types (f64, f32, f16, q31, q15, q7). It leverages vectorized versions of functions when hardware extensions like Helium or Neon are available.
Additionally, it offers:
- DSP++: A header-only C++ API that allows developers to combine kernels into algorithms using loop fusion to reduce memory passes and avoid temporary arrays.
- Autodiff Extension: An experimental feature built on DSP++ designed for on-device fine-tuning using a subset of the library's kernels.
- Python Wrapper: A NumPy-compatible wrapper that allows developers to design and prototype algorithms in Python before implementing them in C.
Who it’s for
Embedded software engineers and developers working with Arm Cortex-M or Cortex-A processors who need to perform high-performance digital signal processing, linear algebra, or classical machine learning on-device.
Highlights
- Hardware Optimization: Specialized support for Helium and Neon extensions for vectorized compute.
- Broad Kernel Support: Includes basic math, filtering, transforms (FFT, MFCC, DCT), statistics, and classical ML (SVM, clustering).
- Flexible Data Types: Supports a range of precisions from 64-bit floats down to 8-bit fixed-point integers.
- Prototyping Workflow: Includes a Python wrapper to bridge the gap between algorithm design and C implementation.
Related
- Project
- Project
- Project
- Project