ARM-software/CMSIS-DSP
FreeCMSIS-DSP embedded compute library for Cortex-M and Cortex-A
About ARM-software/CMSIS-DSP
CMSIS-DSP is an optimized compute library for embedded systems, primarily targeting ARM Cortex-M and Cortex-A processors. Originally named for DSP, it now provides a broad set of compute kernels including basic mathematics (real, complex, quaternion, linear algebra, fast math), DSP (filtering), transforms (FFT, MFCC, DCT), statistics, and classical machine learning (Support Vector Machine, distance functions for clustering). Kernels are available in multiple datatypes: f64, f32, f16, q31, q15, q7. The library leverages vectorized execution via Helium (MVE) and Neon extensions when available. A Python wrapper is also provided for prototyping algorithms in Python with an API closely matching the C API, supporting NumPy and fixed-point arithmetic, and running in Google Colab. The library is open source and free to use.
Key Features
Pros & Cons
- Highly optimized for ARM Cortex-M and Cortex-A cores
- Extensive set of compute kernels covering DSP, ML, transforms
- Python wrapper enables rapid prototyping and easy transition to C
- Supports a wide range of data types including fixed-point
- Free and open source with no licensing restrictions
- Vectorized implementations improve performance on Helium/Neon
- Limited to ARM Cortex-M and Cortex-A architectures, not portable to other MCU families
- GCC compiler currently yields suboptimal performance on Helium; Arm Compiler recommended for best results
- Documentation and debugging may require familiarity with ARM ecosystem
- Python wrapper requires separate installation and may lag behind C library updates