NMSIS-DSP  Version 1.3.1
NMSIS DSP Software Library
NMSIS DSP Software Library

Introduction

This user manual describes the NMSIS DSP software library, a suite of common compute processing functions for use on RISC-V processor based devices.

The library is divided into a number of functions each covering a specific category:

The library has generally separate functions for operating on 8-bit integers, 16-bit integers, 32-bit integer and 32-bit floating-point values and 64-bit floating-point values.

The library is providing vectorized versions of most algorithms for Helium and of most f32 algorithms for Neon.

When using a vectorized version, provide a little bit of padding after the end of a buffer (3 words) because the vectorized code may read a little bit after the end of a buffer. You don't have to modify your buffers but just ensure that the end of buffer + padding is not outside of a memory region.

NMSIS-DSP pack is containing an optional project : The NMSIS-DSP Compute Graph. The documentation for this project is available on the NMSIS-DSP github repository.

A Python wrapper is also available with a Python API as close as possible to the C one. It can be used to start developing and testing an algorithm with NumPy and SciPy before writing the C version. Is is available on PyPI.org. It can be installed with : pip install nmsisdsp

Using the Library

The library is released in source form. It is strongly advised to compile the library using -Ofast to have the best performances.

Note
Please refer to NMSIS-DSP

Examples

The library ships with a number of examples which demonstrate how to use the library functions.

Toolchain Support

The library has been developed and tested with nuclei riscv gcc toolchain.

Building the Library

In NMSIS repo, it contains a Makefile to rebuild libraries on nuclei riscv gcc toolchain in the NMSIS/ folder.

  • In NMSIS folder, you can run make gen_dsp_lib to build and install DSP library into NMSIS/Library/DSP/GCC folder.

Preprocessor Macros

Each library project have different preprocessor macros controlled via CMakeLists.txt.