Arm Keil MDK v6 Essential and Professional editions are now available to buy as monthly or annual subscriptions from our Developer Tools store. Visit the store to get access to the tools suite today!

  1. Packs
  2. CMSIS-DSP

Overview

CMSIS-DSP is an optimized compute library for embedded systems (DSP is in the name for legacy reasons). It provides optimized compute kernels for Arm Cortex-M and Cortex-A. Different variants are available according to the core and most of the functions are using a vectorized version when vector instructions are available:

  • Armv7-M DSP Extensions
  • Helium vector instructions
  • Neon vector instructions

Vector instructions can provide a huge boost to the performances of an algorithm.

This CMSIS-Pack contains the CMSIS-DSP library.

CMSIS-DSP Kernels

Kernels provided by CMSIS-DSP (list not exhaustive):

  • Basic mathematics (real, complex, quaternion, linear algebra, fast math functions)
  • DSP (filtering like FIR, Biquad, IIR ...)
  • Transforms (CFFT, RFFT, MFCC ...)
  • Statistics
  • Classical ML (Support vector machine, distance functions for clustering ...)

Kernels are provided with several data types: f64, f32, f16, q31, q15, q7.

C++ API (DSP++)

DSP++ makes it easier to combine existing kernels into efficient Cortex-M algorithms. This optional, header-only C++ API uses automatic loop fusion to avoid temporary arrays and repeated passes over data. It is included in the pack and has no impact on applications using only the C API.

Experimental autodiff extension

Autodiff builds on DSP++ to enable on-device machine learning with a focus on fine-tuning using a subset of existing CMSIS-DSP kernels. It is experimental and not a new ML framework.

CMSIS-DSP and Python

A Python package is available for CMSIS-DSP. It provides access to CMSIS-DSP functions (including fixed point) from Python with NumPy compatibility.

Links