- Update the apt repository
- Create your Arm NN development directory
- Set up Boost
- Install gcc if not previously installed
- Download Boost version 1.64
- Build Boost
- Install git
- Install Cmake
- Create a GitHub account
- Login to ML Platform gerrit server and add SSH key
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.
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
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.
Arm NN uses the Boost C++ libraries, so we have to download and build Boost, before we can build Arm NN
$ sudo apt install gcc
$ 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
$ 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
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
Arm NN is built and configured with Cmake, you check if Cmake is installed with
$ cmake --version
If not installed
$ sudo apt-get install cmake
Arm has tested CMake 3.5.1 on Ubuntu. Other versions might work.
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 the ML Platform gerrit server using your github credentials, then add your ssh key (see details below).
Before getting the source, you will need to setup an SSH key for yourself. From a terminal, enter the following commands:
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. Click on AddKey then paste the clipboard contents into the textbox and click Add.
Now that we have registered our SSH key with the gerrit repository, we can clone the repository into our development directory.
$ export GITHUB_USERNAME=NameGoesHere
$ setenv GITHUB_USERNAME NameGoesHere
$ cd $BASEDIR $ git clone ssh://$GITHUB_USERNAME@review.mlplatform.org:29418/ml/armnn && scp -p -P 29418
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
If everything goes well you should now be able to run the unit tests from the build folder
If you see *** No errors detected it worked!
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.