← all repositories
ARM-software/CMSIS-DSP

Embedded math kernels that keep the DSP name for legacy reasons

Optimized compute kernels for ARM Cortex-M and Cortex-A, offering a Python prototyping path and a C++ loop-fusion layer despite its legacy DSP branding.

CMSIS-DSP
Collecting fresh signals — velocity needs a few days of history.
star history

What it does

CMSIS-DSP is a collection of optimized compute kernels for ARM Cortex-M and Cortex-A microcontrollers and processors. It covers basic mathematics, linear algebra, digital filtering, FFTs, DCTs, MFCCs, statistics, and classical ML primitives like SVMs and distance functions. The library supports multiple numeric formats—floating point in 64-, 32-, and 16-bit widths, plus fixed-point types (q31, q15, q7)—and automatically uses Helium or Neon vector instructions when the hardware offers them.

The interesting bit

The project is aware that “DSP” in its name is a legacy holdover, and it has quietly grown into a broader embedded compute stack. The most unusual additions are a header-only C++ layer called DSP++ that fuses loops across kernel calls to eliminate temporary arrays, and an experimental automatic-differentiation extension built on top of it for on-device model fine-tuning. There is also a NumPy-compatible Python wrapper so you can sketch an algorithm in Python with fixed-point support and then port the logic to C without rewriting the API mental model.

Key highlights

  • Vectorized kernels for Helium (Cortex-M) and Neon (Cortex-A) extensions.
  • Broad dtype coverage: f64, f32, f16, q31, q15, q7.
  • DSP++ C++ API is header-only and optional; it can fuse multiple operations into a single loop.
  • Python wrapper (cmsisdsp) mimics the C API and supports fixed-point arithmetic.
  • Experimental autodiff extension for on-device fine-tuning using existing kernels.

Caveats

  • DSP++ is currently unsupported in builds with ARM_MATH_NEON enabled; its incomplete Neon implementation can cause compilation errors with no automatic scalar fallback.
  • Half-float (f16) support is only useful when the target has hardware acceleration for it; otherwise it may cause compilation problems and should be disabled.
  • The README notes that GCC currently delivers poor performance when targeting Helium; the Arm compiler is advised for those builds.

Verdict

Worth a look if you are building signal-processing or lightweight ML pipelines on ARM embedded hardware and need hand-optimized kernels with a path from Python prototype to C deployment. Skip it if you are not targeting Cortex-M or Cortex-A, or if you need a full-featured desktop ML framework rather than a kernel library.

Frequently asked

What is ARM-software/CMSIS-DSP?
Optimized compute kernels for ARM Cortex-M and Cortex-A, offering a Python prototyping path and a C++ loop-fusion layer despite its legacy DSP branding.
Is CMSIS-DSP open source?
Yes — ARM-software/CMSIS-DSP is open source, released under the Apache-2.0 license.
What language is CMSIS-DSP written in?
ARM-software/CMSIS-DSP is primarily written in C.
How popular is CMSIS-DSP?
ARM-software/CMSIS-DSP has 1.1k stars on GitHub.
Where can I find CMSIS-DSP?
ARM-software/CMSIS-DSP is on GitHub at https://github.com/ARM-software/CMSIS-DSP.

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