Arm NN

Software Developer Kit (SDK)

Arm NN is an inference engine for CPUs, GPUs and NPUs. It bridges the gap between existing NN frameworks and the underlying IP. It enables efficient translation of existing neural network frameworks, such as TensorFlow and Caffe, allowing them to run efficiently, without modification, across Arm Cortex CPUs and Arm Mali GPUs.

Arm NN is free of charge.

About Arm NN SDK

Arm NN SDK is a set of open-source Linux software and tools that enables machine learning workloads on power-efficient devices. It provides a bridge between existing neural network frameworks and power-efficient Arm Cortex CPUs, Arm Mali GPUs or the Arm Machine Learning processor.

Arm NN SDK utilizes the Compute Library to target programmable cores, such as Cortex-A CPUs and Mali GPUs, as efficiently as possible. It includes support for the Arm Machine Learning processor. Arm NN does not yet provide support for Cortex-M CPUs.

The latest release supports Caffe, TensorFlow, TensorFlow Lite, and ONNX. Arm NN takes networks from these frameworks, translates them to the internal Arm NN format and then, through the Compute Library, deploys them efficiently on Cortex-A CPUs, and, if present, Mali GPUs such as the Mali-G71 and Mali-G72.

In September 2018, Arm donated Arm NN to the Linaro Machine Intelligence Initiative, where it is now developed fully in open source. 

Arm's Neural Network Framework Diagram.

 

Neural Network SDK Diagram.
Neural Network Diagram for Android.

Arm NN for Android

Also available is Arm NN for NNAPI, Google’s interface for accelerating neural networks on Android devices, made available in Android O. By default, NNAPI runs neural network workloads on the device’s CPU cores, but also provides a Hardware Abstraction Layer (HAL) that can target other processor types, such as GPUs. Arm NN for Android NNAPI provides this HAL for Mali GPUs. A further release adds support for the Arm Machine Learning processor. 

Arm support for Android NNAPI gives >4x performance boost.

Learn more

Download Arm NN for Android sources. 

Download here

Support for Cortex-M CPUs

Arm NN is currently not compatible with Cortex-M microcontrollers. CMSIS-NN is a collection of efficient neural network kernels developed to maximize the performance and minimize the memory footprint of neural networks on Cortex-M processor cores.

Download CMSIS-NN

Arm NN future roadmap

Future releases of Arm NN will enable support for other machine learning frameworks as inputs, and other forms of processor cores as targets. This includes processor cores and accelerators from Arm’s partners, assuming availability of suitable extensions.

Information on the Machine Learning Platform.

Webinar - Project Trillium: Optimizing ML Performance for any Application

Project Trillium is a suite of Arm IP designed to deliver scalable ML and neural network functionality at any point on the performance curve, from sensors, to mobile, and beyond. 

 

Find out more

Community Blogs

Community Forums

Not answered Enabling SWO output in Cortex M3 DesignStart FPGA Xilinx edition? 0 votes 10 views 0 replies Started 5 hours ago by jpthibault Answer this
Not answered why does LDR takes two cycle to be executed 0 votes 21 views 0 replies Started 9 hours ago by Haohao Answer this
Suggested answer ARMv8-A: Is an ISB instruction required after writing to the CPSR register in AARCH32 state?
  • Armv8-A
  • AArch32
0 votes 65 views 1 replies Latest 20 hours ago by 42Bastian Schick Answer this
Suggested answer How to Change the Non Secure VTOR (Cortex-M33)
  • TrustZone for Armv8-M
  • Trusted Execution Environment (TEE)
  • TrustZone
  • Cortex-M33
  • Armv8-M
0 votes 92 views 1 replies Latest yesterday by 42Bastian Schick Answer this
Suggested answer How to import C variable in an assembly code in a .s file
  • Cortex-M
  • cortex-m0+
  • Arm Assembly Language (ASM)
0 votes 69 views 1 replies Latest yesterday by Georgia James Answer this
Answered Watchdog timer not entering ISR
  • Cortex-A9
  • Interrupt Controller Devices
  • Cortex-A
  • Interrupt
0 votes 109 views 2 replies Latest yesterday by sherry Answer this
Not answered Enabling SWO output in Cortex M3 DesignStart FPGA Xilinx edition? Started 5 hours ago by jpthibault 0 replies 10 views
Not answered why does LDR takes two cycle to be executed Started 9 hours ago by Haohao 0 replies 21 views
Suggested answer ARMv8-A: Is an ISB instruction required after writing to the CPSR register in AARCH32 state? Latest 20 hours ago by 42Bastian Schick 1 replies 65 views
Suggested answer How to Change the Non Secure VTOR (Cortex-M33) Latest yesterday by 42Bastian Schick 1 replies 92 views
Suggested answer How to import C variable in an assembly code in a .s file Latest yesterday by Georgia James 1 replies 69 views
Answered Watchdog timer not entering ISR Latest yesterday by sherry 2 replies 109 views