Getting Started With Arm NN
This page details how to get started with Arm NN. The instructions assume that you are using Ubuntu 16.04, but these instructions should work on most Linux distributions.
Update the apt repository
Before we use the Ubuntu apt repository, we need to make sure it is up-to-date. From a terminal, enter the following command:
$ sudo apt update
Create your Arm NN development directory
This will set up your Arm NN development environment in a local directory ~/dev.
$ mkdir ~/dev $ cd ~/dev $ export BASEDIR=`pwd`
Some of the example commands that we use in this guide expect that the $BASEDIR environment variable is set correctly. So, if you use multiple terminal sessions then ensure that the variable is set correctly in each session.
Set up Boost
Arm NN uses the Boost C++ libraries, so we have to download and build Boost, before we can build Arm NN
Install gcc if not previously installed
$ sudo apt install gcc
Download Boost version 1.64
$ cd $BASEDIR $ wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.bz2 $ tar xvf boost_1_64_0.tar.bz2
Build Boost
$ cd $BASEDIR/boost_1_64_0 $ ./bootstrap.sh --prefix=$BASEDIR/boost $ ./b2 install link=static cxxflags=-fPIC --with-filesystem --with-test --with-log --with-program_options
Install git
If you do not have git installed on your Ubuntu system, you must install it. On Ubuntu 16.04 this can be done with the commands:
$ sudo apt-get update $ sudo apt-get install git
Create a GitHub account
You will need to create a GitHub account in order to log into the ML Platform gerrit server. Your GitHub account is created with your email address.
Login to ML Platform gerrit server and add SSH key
Login to the ML Platform gerrit server using your github credentials, then add your ssh key (see details below).
Generating and SSH key
Before getting the source, you will need to setup an SSH key for yourself. From a terminal, enter the following commands:
$ ssh-keygen
When prompted for a file location, press enter without any path to use the default. This should default to something like /home/username/.ssh/id_rsa.
You will then be prompted for a pass phrase. Use some memorable passphrase because you will need to enter it whenever you use the SSH key.
Now change the current directory to the one mentioned above. There should be two files: id_rsa and id_rsa.pub.
Installing the SSH key for https://review.mlplatform.org
In order to connect to the Linaro ML Platform gerrit server via SSH, you will need to register your public key that was generated above. Open the id_rsa.pub file generated in the previous step in a text editor of your choice and copy the contents to the clipboard.
Go to https://review.mlplatform.org/#/settings/ssh-keys and log in using your credentials. Paste the clipboard contents into the textbox and click Add.
Getting the Development Environment source
Now that we have registered our SSH key with the gerrit repository, we can clone the repository into our development directory.
Create and environment variable for your github username
bash:
$ export GITHUB_USERNAME=NameGoesHere
csh:
$ setenv GITHUB_USERNAME NameGoesHere
Clone Arm NN repository
$ cd $BASEDIR $ git clone ssh://$GITHUB_USERNAME@review.mlplatform.org:29418/ml/armnn && scp -p -P 29418
Build Arm NN
Create a build folder in ~/dev/armnn
$ mkdir $BASEDIR/armnn/build
Inside the build folder configure the Arm NN SDK build using CMake
$ cd $BASEDIR/armnn/build $ cmake .. -DBOOST_ROOT=$BASEDIR/boost
Then build
$ make
Run Unit Tests
If everything goes well you should now be able to run the unit tests from the build folder
$ ./UnitTests
If you see *** No errors detected it worked!
Arm NN Example
A good point of ingress into the Arm NN SDK is SimpleSample.cpp, which can be found at armnn/samples.
It creates and runs a network, with one fully connected layer containing one weight of 1.0f.
To build SimpleSample change the CMake config to
$ cmake .. -DBOOST_ROOT=$BASEDIR/boost -DBUILD_SAMPLE_APP=1 $ make
Go to the samples folder in the build folder and run SimpleSample
$ cd $BASEDIR/armnn/build/samples $ ./SimpleSample
It should take in a number and output it right back.
More advanced tutorials, such as using the Arm NN SDK with Tensorflow and ONNX, can be found at Arm's developer guides.
To contribute to Arm NN see the contributing guide.
- Last Author
- brianjoycearm
- Last Edited
- Jun 28 2019, 1:32 PM