| # How to install ArmNN via our APT repository on Ubuntu's Launchpad |
| |
| * [Introduction](#introduction) |
| * [Add the Ubuntu Launchpad PPA to your system](#add-the-ubuntu-launchpad-ppa-to-your-system) |
| * [Outline of available packages](#outline-of-available-packages) |
| + [x86_64](#x86-64) |
| + [arm64](#arm64) |
| + [armhf](#armhf) |
| * [Check latest version of packages](#check-latest-version-of-packages) |
| * [Install desired combination of packages](#install-desired-combination-of-packages) |
| * [Uninstall packages](#uninstall-packages) |
| |
| |
| ## Introduction |
| These are the step by step instructions on how to install the Arm NN core, TensorflowLite Parser |
| as well as PyArmNN for x86_64, Arm64 and Armhf for Ubuntu 20.04. |
| The packages will also be added to Debian Bullseye, their progress can be tracked here: |
| https://tracker.debian.org/pkg/armnn. |
| |
| |
| ## Add the Ubuntu Launchpad PPA to your system |
| * Add the PPA to your sources using a command contained in software-properties-common package: |
| ``` |
| sudo apt install software-properties-common |
| sudo add-apt-repository ppa:armnn/ppa |
| sudo apt update |
| ``` |
| * More information about our PPA and the Ubuntu Launchpad service can be found at [launchpad.net](https://launchpad.net/~armnn/+archive/ubuntu/ppa) |
| ## Outline of available packages |
| |
| We provide a number of packages for each architecture; x86_64, aarch64 and armhf as outlined below. |
| |
| ARMNN_MAJOR_VERSION: This is the ABI version of the Arm NN source that has been packaged based on |
| include/armnn/Version.hpp. |
| |
| ARMNN_RELEASE_VERSION: This is the marketing release version based on the date source was released on github e.g. 20.11. |
| |
| PACKAGE_VERSION: This is the version of the source package used to build the binaries packages from. |
| |
| ### x86_64 |
| * Runtime Packages |
| ``` |
| libarmnn-cpuref-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb |
| libarmnntfliteparser{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb |
| libarmnn{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb |
| python3-pyarmnn_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb |
| ``` |
| * Development Packages |
| ``` |
| libarmnn-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb |
| libarmnntfliteparser-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb |
| ``` |
| * Dependency Packages (These are empty packages that provide a user-friendly name for other packages they will install) |
| ``` |
| armnn-latest-all_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb |
| armnn-latest-ref_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb |
| ``` |
| ### arm64 |
| * Runtime Packages |
| ``` |
| libarmnn-aclcommon{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| libarmnn-cpuacc-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| libarmnn-cpuref-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| libarmnn-gpuacc-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| libarmnntfliteparser{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| libarmnn{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| python3-pyarmnn_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| |
| ``` |
| * Development Packages |
| ``` |
| libarmnn-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| libarmnntfliteparser-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| |
| ``` |
| * Dependency Packages (These are empty packages that provide a user-friendly name for other packages they will install) |
| ``` |
| armnn-latest-all_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| armnn-latest-cpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| armnn-latest-cpu-gpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| armnn-latest-cpu-gpu-ref_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| armnn-latest-gpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| armnn-latest-ref_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_arm64.deb |
| ``` |
| ### armhf |
| * Runtime Packages |
| ``` |
| libarmnn-aclcommon{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| libarmnn-cpuacc-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| libarmnn-cpuref-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| libarmnn-gpuacc-backend{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| libarmnntfliteparser{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| libarmnn{ARMNN_MAJOR_VERSION}_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| python3-pyarmnn_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| |
| ``` |
| * Development Packages |
| ``` |
| libarmnn-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| libarmnntfliteparser-dev_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| |
| ``` |
| * Dependency Packages (These are empty packages that provide a user-friendly name for other packages they will install) |
| ``` |
| armnn-latest-all_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| armnn-latest-cpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| armnn-latest-cpu-gpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| armnn-latest-cpu-gpu-ref_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| armnn-latest-gpu_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_armhf.deb |
| armnn-latest-ref_{ARMNN_RELEASE_VERSION}-{PACKAGE_VERSION}_amd64.deb |
| ``` |
| |
| ## Install desired combination of packages |
| The easiest way to install all of the available packages for your systems architecture is to run the command: |
| |
| ``` |
| sudo apt-get install -y python3-pyarmnn armnn-latest-all |
| # Verify installation via python: |
| python3 -c "import pyarmnn as ann;print(ann.GetVersion())" |
| # Returns '{ARMNN_MAJOR_VERSION}.0.0' e.g. 27.0.0 |
| ``` |
| This will install PyArmNN and the three backends for Neon (CpuAcc), OpenCL (GpuAcc) and our Reference Backend. |
| It will also install their dependencies including the arm-compute-library package along with the Tensorflow Lite Parser |
| and it's dependency Arm NN Core. |
| If the user does not wish to use PyArmNN they can go up a level of dependencies and instead just install the |
| armnn-latest-all package: |
| ``` |
| # Install ArmNN Core, CpuAcc Backend, GpuAcc Backend and Reference Backend as well as the TensorFlow Lite Parser: |
| # (This will only install CpuAcc and GpuAcc Backends on arm64 and armhf architectures) |
| sudo apt-get install -y armnn-latest-all |
| |
| # Install ArmNN Core, CpuAcc Backend as well as the TensorFlow Lite Parser: |
| sudo apt-get install -y armnn-latest-cpu |
| |
| # Install ArmNN Core, CpuAcc Backend, GpuAcc Backend as well as the TensorFlow Lite Parser: |
| sudo apt-get install -y armnn-latest-cpu-gpu |
| |
| # Install ArmNN Core, GpuAcc Backend as well as the TensorFlow Lite Parser: |
| sudo apt-get install -y armnn-latest-gpu |
| |
| # Install ArmNN Core, Reference Backend as well as the TensorFlow Lite Parser: |
| sudo apt-get install -y armnn-latest-ref |
| ``` |
| |
| ## Installation of specific ABI versioned packages |
| Due to Debian Packaging requiring the pristine tarball from our Github release, the version on Launchpad may not align |
| with the released version on Github depending on the complexity of newly added features. |
| In order to check for the latest available Arm NN version use apt-cache search: |
| ``` |
| apt-cache search libarmnn |
| |
| # This returns a list of matching packages including versions from previous releases |
| libarmnn-cpuref-backend23 - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| libarmnn-cpuref-backend24 - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| libarmnn-dev - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| libarmnntfliteparser-dev - Arm NN is an inference engine for CPUs, GPUs and NPUs # Note: removal of dash to suit debian naming conventions |
| libarmnn-tfliteparser23 - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| libarmnntfliteparser24 - Arm NN is an inference engine for CPUs, GPUs and NPUs # Note: removal of dash to suit debian naming conventions |
| libarmnn23 - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| libarmnn24 - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| libarmnn25 - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| libarmnn-aclcommon23 - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| libarmnnaclcommon24 - Arm NN is an inference engine for CPUs, GPUs and NPUs # Note: removal of dash to suit debian naming conventions |
| libarmnn-cpuacc-backend23 - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| libarmnn-cpuacc-backend24 - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| libarmnn-gpuacc-backend23 - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| libarmnn-gpuacc-backend24 - Arm NN is an inference engine for CPUs, GPUs and NPUs |
| |
| |
| # Export the ARMNN_MAJOR_VERSION to the latest visible e.g. libarmnn25 to allow installation using the below examples |
| export ARMNN_MAJOR_VERSION=27 |
| |
| # As the Tensorflow Lite Parser is now ABI stable it will have a different version to ARMNN_MAJOR_VERSION please choose latest version: |
| apt-cache search libarmnntfliteparser |
| # Returns e.g. libarmnntfliteparser24 so we then export that version, for reference this comes from include/armnnTfLiteParser/Version.hpp: |
| export TFLITE_PARSER_VERSION=24 |
| |
| sudo apt-get install -y libarmnntfliteparser${TFLITE_PARSER_VERSION} libarmnn-cpuacc-backend${ARMNN_MAJOR_VERSION} |
| ``` |
| |
| ## Uninstall packages |
| The easiest way to uninstall all of the previously installed packages is to run the command: |
| ``` |
| sudo apt-get purge -y armnn-latest-all |
| sudo apt autoremove -y armnn-latest-all |
| ``` |