1*89c4ff92SAndroid Build Coastguard Worker# How to install ArmNN via our APT repository on Ubuntu's Launchpad 2*89c4ff92SAndroid Build Coastguard Worker 3*89c4ff92SAndroid Build Coastguard Worker* [Introduction](#introduction) 4*89c4ff92SAndroid Build Coastguard Worker* [Add the Ubuntu Launchpad PPA to your system](#add-the-ubuntu-launchpad-ppa-to-your-system) 5*89c4ff92SAndroid Build Coastguard Worker* [Outline of available packages](#outline-of-available-packages) 6*89c4ff92SAndroid Build Coastguard Worker + [x86_64](#x86_64) 7*89c4ff92SAndroid Build Coastguard Worker + [arm64](#arm64) 8*89c4ff92SAndroid Build Coastguard Worker + [armhf](#armhf) 9*89c4ff92SAndroid Build Coastguard Worker* [Install desired combination of packages](#install-desired-combination-of-packages) 10*89c4ff92SAndroid Build Coastguard Worker* [Installation of specific ABI versioned packages](#installation-of-specific-abi-versioned-packages) 11*89c4ff92SAndroid Build Coastguard Worker* [Uninstall packages](#uninstall-packages) 12*89c4ff92SAndroid Build Coastguard Worker 13*89c4ff92SAndroid Build Coastguard Worker 14*89c4ff92SAndroid Build Coastguard Worker## Introduction 15*89c4ff92SAndroid Build Coastguard WorkerThese are the step by step instructions on how to install the Arm NN core, TensorflowLite Parser 16*89c4ff92SAndroid Build Coastguard Workeras well as PyArmNN for x86_64, Arm64 and Armhf for Ubuntu 20.04. 17*89c4ff92SAndroid Build Coastguard WorkerThe packages will also be added to Debian Bullseye, their progress can be tracked here: 18*89c4ff92SAndroid Build Coastguard Workerhttps://tracker.debian.org/pkg/armnn. 19*89c4ff92SAndroid Build Coastguard Worker 20*89c4ff92SAndroid Build Coastguard Worker 21*89c4ff92SAndroid Build Coastguard Worker## Add the Ubuntu Launchpad PPA to your system 22*89c4ff92SAndroid Build Coastguard Worker* Add the PPA to your sources using a command contained in software-properties-common package: 23*89c4ff92SAndroid Build Coastguard Worker ``` 24*89c4ff92SAndroid Build Coastguard Worker sudo apt install software-properties-common 25*89c4ff92SAndroid Build Coastguard Worker sudo add-apt-repository ppa:armnn/ppa 26*89c4ff92SAndroid Build Coastguard Worker sudo apt update 27*89c4ff92SAndroid Build Coastguard Worker ``` 28*89c4ff92SAndroid Build Coastguard Worker* More information about our PPA and the Ubuntu Launchpad service can be found at [launchpad.net](https://launchpad.net/~armnn/+archive/ubuntu/ppa) 29*89c4ff92SAndroid Build Coastguard Worker## Outline of available packages 30*89c4ff92SAndroid Build Coastguard Worker 31*89c4ff92SAndroid Build Coastguard WorkerWe provide a number of packages for each architecture; x86_64, aarch64 and armhf as outlined below. 32*89c4ff92SAndroid Build Coastguard Worker 33*89c4ff92SAndroid Build Coastguard WorkerARMNN_MAJOR_VERSION: This is the ABI version of the Arm NN source that has been packaged based on 34*89c4ff92SAndroid Build Coastguard Workerinclude/armnn/Version.hpp. 35*89c4ff92SAndroid Build Coastguard Worker 36*89c4ff92SAndroid Build Coastguard WorkerARMNN_RELEASE_VERSION: This is the marketing release version based on the date source was released on github e.g. 20.11. 37*89c4ff92SAndroid Build Coastguard Worker 38*89c4ff92SAndroid Build Coastguard WorkerPACKAGE_VERSION: This is the version of the source package used to build the binaries packages from. 39*89c4ff92SAndroid Build Coastguard Worker 40*89c4ff92SAndroid Build Coastguard Worker### x86_64 41*89c4ff92SAndroid Build Coastguard Worker* Runtime Packages 42*89c4ff92SAndroid Build Coastguard Worker``` 43*89c4ff92SAndroid Build Coastguard Workerlibarmnn-cpuref-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb 44*89c4ff92SAndroid Build Coastguard Workerlibarmnntfliteparser{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb 45*89c4ff92SAndroid Build Coastguard Workerlibarmnn{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb 46*89c4ff92SAndroid Build Coastguard Workerpython3-pyarmnn_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb 47*89c4ff92SAndroid Build Coastguard Worker``` 48*89c4ff92SAndroid Build Coastguard Worker* Development Packages 49*89c4ff92SAndroid Build Coastguard Worker``` 50*89c4ff92SAndroid Build Coastguard Workerlibarmnn-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb 51*89c4ff92SAndroid Build Coastguard Workerlibarmnntfliteparser-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb 52*89c4ff92SAndroid Build Coastguard Worker``` 53*89c4ff92SAndroid Build Coastguard Worker* Dependency Packages (These are empty packages that provide a user-friendly name for other packages they will install) 54*89c4ff92SAndroid Build Coastguard Worker``` 55*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-all_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb 56*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-ref_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb 57*89c4ff92SAndroid Build Coastguard Worker``` 58*89c4ff92SAndroid Build Coastguard Worker### arm64 59*89c4ff92SAndroid Build Coastguard Worker* Runtime Packages 60*89c4ff92SAndroid Build Coastguard Worker``` 61*89c4ff92SAndroid Build Coastguard Workerlibarmnn-aclcommon{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 62*89c4ff92SAndroid Build Coastguard Workerlibarmnn-cpuacc-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 63*89c4ff92SAndroid Build Coastguard Workerlibarmnn-cpuref-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 64*89c4ff92SAndroid Build Coastguard Workerlibarmnn-gpuacc-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 65*89c4ff92SAndroid Build Coastguard Workerlibarmnntfliteparser{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 66*89c4ff92SAndroid Build Coastguard Workerlibarmnn{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 67*89c4ff92SAndroid Build Coastguard Workerpython3-pyarmnn_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 68*89c4ff92SAndroid Build Coastguard Worker 69*89c4ff92SAndroid Build Coastguard Worker``` 70*89c4ff92SAndroid Build Coastguard Worker* Development Packages 71*89c4ff92SAndroid Build Coastguard Worker``` 72*89c4ff92SAndroid Build Coastguard Workerlibarmnn-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 73*89c4ff92SAndroid Build Coastguard Workerlibarmnntfliteparser-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 74*89c4ff92SAndroid Build Coastguard Worker 75*89c4ff92SAndroid Build Coastguard Worker``` 76*89c4ff92SAndroid Build Coastguard Worker* Dependency Packages (These are empty packages that provide a user-friendly name for other packages they will install) 77*89c4ff92SAndroid Build Coastguard Worker``` 78*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-all_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 79*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-cpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 80*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-cpu-gpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 81*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-cpu-gpu-ref_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 82*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-gpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 83*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-ref_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb 84*89c4ff92SAndroid Build Coastguard Worker``` 85*89c4ff92SAndroid Build Coastguard Worker### armhf 86*89c4ff92SAndroid Build Coastguard Worker* Runtime Packages 87*89c4ff92SAndroid Build Coastguard Worker``` 88*89c4ff92SAndroid Build Coastguard Workerlibarmnn-aclcommon{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 89*89c4ff92SAndroid Build Coastguard Workerlibarmnn-cpuacc-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 90*89c4ff92SAndroid Build Coastguard Workerlibarmnn-cpuref-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 91*89c4ff92SAndroid Build Coastguard Workerlibarmnn-gpuacc-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 92*89c4ff92SAndroid Build Coastguard Workerlibarmnntfliteparser{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 93*89c4ff92SAndroid Build Coastguard Workerlibarmnn{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 94*89c4ff92SAndroid Build Coastguard Workerpython3-pyarmnn_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 95*89c4ff92SAndroid Build Coastguard Worker 96*89c4ff92SAndroid Build Coastguard Worker``` 97*89c4ff92SAndroid Build Coastguard Worker* Development Packages 98*89c4ff92SAndroid Build Coastguard Worker``` 99*89c4ff92SAndroid Build Coastguard Workerlibarmnn-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 100*89c4ff92SAndroid Build Coastguard Workerlibarmnntfliteparser-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 101*89c4ff92SAndroid Build Coastguard Worker 102*89c4ff92SAndroid Build Coastguard Worker``` 103*89c4ff92SAndroid Build Coastguard Worker* Dependency Packages (These are empty packages that provide a user-friendly name for other packages they will install) 104*89c4ff92SAndroid Build Coastguard Worker``` 105*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-all_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 106*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-cpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 107*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-cpu-gpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 108*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-cpu-gpu-ref_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 109*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-gpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb 110*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-ref_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb 111*89c4ff92SAndroid Build Coastguard Worker``` 112*89c4ff92SAndroid Build Coastguard Worker 113*89c4ff92SAndroid Build Coastguard Worker## Install desired combination of packages 114*89c4ff92SAndroid Build Coastguard WorkerThe easiest way to install all of the available packages for your systems architecture is to run the command: 115*89c4ff92SAndroid Build Coastguard Worker 116*89c4ff92SAndroid Build Coastguard Worker``` 117*89c4ff92SAndroid Build Coastguard Worker sudo apt-get install -y python3-pyarmnn armnn-latest-all 118*89c4ff92SAndroid Build Coastguard Worker # Verify installation via python: 119*89c4ff92SAndroid Build Coastguard Worker python3 -c "import pyarmnn as ann;print(ann.GetVersion())" 120*89c4ff92SAndroid Build Coastguard Worker # Returns '{ARMNN_MAJOR_VERSION}.0.0' e.g. 32.0.0 121*89c4ff92SAndroid Build Coastguard Worker``` 122*89c4ff92SAndroid Build Coastguard WorkerThis will install PyArmNN and the three backends for Neon (CpuAcc), OpenCL (GpuAcc) and our Reference Backend. 123*89c4ff92SAndroid Build Coastguard WorkerIt will also install their dependencies including the arm-compute-library package along with the Tensorflow Lite Parser 124*89c4ff92SAndroid Build Coastguard Workerand it's dependency Arm NN Core. 125*89c4ff92SAndroid Build Coastguard WorkerIf the user does not wish to use PyArmNN they can go up a level of dependencies and instead just install the 126*89c4ff92SAndroid Build Coastguard Workerarmnn-latest-all package: 127*89c4ff92SAndroid Build Coastguard Worker``` 128*89c4ff92SAndroid Build Coastguard Worker # Install ArmNN Core, CpuAcc Backend, GpuAcc Backend and Reference Backend as well as the TensorFlow Lite Parser: 129*89c4ff92SAndroid Build Coastguard Worker # (This will only install CpuAcc and GpuAcc Backends on arm64 and armhf architectures) 130*89c4ff92SAndroid Build Coastguard Worker sudo apt-get install -y armnn-latest-all 131*89c4ff92SAndroid Build Coastguard Worker 132*89c4ff92SAndroid Build Coastguard Worker # Install ArmNN Core, CpuAcc Backend as well as the TensorFlow Lite Parser: 133*89c4ff92SAndroid Build Coastguard Worker sudo apt-get install -y armnn-latest-cpu 134*89c4ff92SAndroid Build Coastguard Worker 135*89c4ff92SAndroid Build Coastguard Worker # Install ArmNN Core, CpuAcc Backend, GpuAcc Backend as well as the TensorFlow Lite Parser: 136*89c4ff92SAndroid Build Coastguard Worker sudo apt-get install -y armnn-latest-cpu-gpu 137*89c4ff92SAndroid Build Coastguard Worker 138*89c4ff92SAndroid Build Coastguard Worker # Install ArmNN Core, GpuAcc Backend as well as the TensorFlow Lite Parser: 139*89c4ff92SAndroid Build Coastguard Worker sudo apt-get install -y armnn-latest-gpu 140*89c4ff92SAndroid Build Coastguard Worker 141*89c4ff92SAndroid Build Coastguard Worker # Install ArmNN Core, Reference Backend as well as the TensorFlow Lite Parser: 142*89c4ff92SAndroid Build Coastguard Worker sudo apt-get install -y armnn-latest-ref 143*89c4ff92SAndroid Build Coastguard Worker``` 144*89c4ff92SAndroid Build Coastguard Worker 145*89c4ff92SAndroid Build Coastguard Worker## Installation of specific ABI versioned packages 146*89c4ff92SAndroid Build Coastguard WorkerDue to Debian Packaging requiring the pristine tarball from our Github release, the version on Launchpad may not align 147*89c4ff92SAndroid Build Coastguard Workerwith the released version on Github depending on the complexity of newly added features. 148*89c4ff92SAndroid Build Coastguard WorkerIn order to check for the latest available Arm NN version use apt-cache search: 149*89c4ff92SAndroid Build Coastguard Worker``` 150*89c4ff92SAndroid Build Coastguard Worker apt-cache search libarmnn 151*89c4ff92SAndroid Build Coastguard Worker 152*89c4ff92SAndroid Build Coastguard Worker # This returns a list of matching packages including versions from previous releases 153*89c4ff92SAndroid Build Coastguard Worker libarmnn-cpuref-backend23 - Arm NN is an inference engine for CPUs, GPUs and NPUs 154*89c4ff92SAndroid Build Coastguard Worker libarmnn-cpuref-backend24 - Arm NN is an inference engine for CPUs, GPUs and NPUs 155*89c4ff92SAndroid Build Coastguard Worker libarmnn-dev - Arm NN is an inference engine for CPUs, GPUs and NPUs 156*89c4ff92SAndroid Build Coastguard Worker libarmnntfliteparser-dev - Arm NN is an inference engine for CPUs, GPUs and NPUs # Note: removal of dash to suit debian naming conventions 157*89c4ff92SAndroid Build Coastguard Worker libarmnn-tfliteparser23 - Arm NN is an inference engine for CPUs, GPUs and NPUs 158*89c4ff92SAndroid Build Coastguard Worker libarmnntfliteparser24 - Arm NN is an inference engine for CPUs, GPUs and NPUs # Note: removal of dash to suit debian naming conventions 159*89c4ff92SAndroid Build Coastguard Worker libarmnntfliteparser24.5 - Arm NN is an inference engine for CPUs, GPUs and NPUs # Note: removal of dash to suit debian naming conventions 160*89c4ff92SAndroid Build Coastguard Worker libarmnn23 - Arm NN is an inference engine for CPUs, GPUs and NPUs 161*89c4ff92SAndroid Build Coastguard Worker libarmnn24 - Arm NN is an inference engine for CPUs, GPUs and NPUs 162*89c4ff92SAndroid Build Coastguard Worker libarmnn25 - Arm NN is an inference engine for CPUs, GPUs and NPUs 163*89c4ff92SAndroid Build Coastguard Worker libarmnn30 - Arm NN is an inference engine for CPUs, GPUs and NPUs 164*89c4ff92SAndroid Build Coastguard Worker libarmnn-aclcommon23 - Arm NN is an inference engine for CPUs, GPUs and NPUs 165*89c4ff92SAndroid Build Coastguard Worker libarmnnaclcommon24 - Arm NN is an inference engine for CPUs, GPUs and NPUs # Note: removal of dash to suit debian naming conventions 166*89c4ff92SAndroid Build Coastguard Worker libarmnn-cpuacc-backend23 - Arm NN is an inference engine for CPUs, GPUs and NPUs 167*89c4ff92SAndroid Build Coastguard Worker libarmnn-cpuacc-backend24 - Arm NN is an inference engine for CPUs, GPUs and NPUs 168*89c4ff92SAndroid Build Coastguard Worker libarmnn-gpuacc-backend23 - Arm NN is an inference engine for CPUs, GPUs and NPUs 169*89c4ff92SAndroid Build Coastguard Worker libarmnn-gpuacc-backend24 - Arm NN is an inference engine for CPUs, GPUs and NPUs 170*89c4ff92SAndroid Build Coastguard Worker 171*89c4ff92SAndroid Build Coastguard Worker 172*89c4ff92SAndroid Build Coastguard Worker # Export the ARMNN_MAJOR_VERSION to the latest visible e.g. libarmnn30 to allow installation using the below examples 173*89c4ff92SAndroid Build Coastguard Worker export ARMNN_MAJOR_VERSION=30 174*89c4ff92SAndroid Build Coastguard Worker 175*89c4ff92SAndroid Build Coastguard Worker # As the Tensorflow Lite Parser is now ABI stable it will have a different version to ARMNN_MAJOR_VERSION please choose latest version: 176*89c4ff92SAndroid Build Coastguard Worker apt-cache search libarmnntfliteparser 177*89c4ff92SAndroid Build Coastguard Worker # Returns e.g. libarmnntfliteparser24.5 so we then export that version, for reference this comes from include/armnnTfLiteParser/Version.hpp: 178*89c4ff92SAndroid Build Coastguard Worker export TFLITE_PARSER_VERSION=24.5 179*89c4ff92SAndroid Build Coastguard Worker 180*89c4ff92SAndroid Build Coastguard Worker sudo apt-get install -y libarmnntfliteparser${TFLITE_PARSER_VERSION} libarmnn-cpuacc-backend${ARMNN_MAJOR_VERSION} 181*89c4ff92SAndroid Build Coastguard Worker``` 182*89c4ff92SAndroid Build Coastguard Worker 183*89c4ff92SAndroid Build Coastguard Worker## Uninstall packages 184*89c4ff92SAndroid Build Coastguard WorkerThe easiest way to uninstall all of the previously installed packages is to run the command: 185*89c4ff92SAndroid Build Coastguard Worker``` 186*89c4ff92SAndroid Build Coastguard Worker sudo apt-get purge -y armnn-latest-all 187*89c4ff92SAndroid Build Coastguard Worker sudo apt autoremove -y armnn-latest-all 188*89c4ff92SAndroid Build Coastguard Worker``` 189