github ARM-software/armnn v22.08
Release 22.08

latest releases: v24.08, v24.05, v24.02...
2 years ago

Summary

New Features

  • Add Arm NN Support Library.
    • The Arm NN Support Library for Android NNAPI is a shared library which has all the functionalities of existing HAL drivers for Android NNAPI.
    • It is available from Android S.
    • It focuses on update-ability of ML operators.
    • Guiide on how to build Arm NN Support Library is available armnn/shim/BuildGuideShimSupportLibrary.md.
    • SLTS (Support Library Test Suit) compliance.
  • Support for Batch MatMul in CpuRef.

TfLite Parser

  • Added support for LOG.
  • Added support for SIN.

ExecuteNetwork App Changes:

  • Refactor of ExecuteNetwork. Now input name, input type, output name, output type and model type are read from the model.

Arm NN Build Tool:

  • Introduced Arm NN Build Tool which consists of an official Arm NN Dockerfile for building Arm NN and Arm Compute Library (ACL).
  • This tool replaces the majority of our existing build guides as a user-friendly way to build Arm NN (and its dependencies) from scratch.
  • Tested on x86_64 (Intel) and aarch64 (Arm) build hosts for the Ubuntu platform.
  • Currently supports targeting Linux devices (from Ubuntu 18.04 onwards) on x86_64, aarch32 and aarch64 architectures.

Bug Fixes

  • The models in format .armnn (serialized models) were failing in 22.05, this problem has been solved by adding the constant layers before the operator layers.
  • Neon fold padding into average pool 2D quantization bug fix.
  • Fix segmentation fault when running --bf16-turbo-mode on FPGA.

Other Changes

  • General documentation refactor and updates.
  • Added LICENSE.spdx for Arm NN
  • Delay backend deprecation from 22.11 to 23.08

ABI/API Changes

The following front-end API changes have occurred during the implementation of 22.08 that users should be aware of before upgrading.

.

Feature SHA Gerrit Review Resultant ABI/API changes
Import inputs but don't export outputs fails 626bd90 https://review.mlplatform.org/c/ml/armnn/+/7661 Field m_ExportEnabled has been added to type OptimizerOptions. This field will not be initialized by old clients that have not been recompiled.
Get non-const IConnectableLayer from I/O slots 09fa24d https://review.mlplatform.org/c/ml/armnn/+/7835 Pure virtual method GetOwningIConnectableLayer ( ) has been added to classes IOutputSlot and IInputSlot.
  • Applications will not provide the implementation for this pure virtual method and therefore cause a crash in the library trying to call this method.
  • The layout of v-table has been changed. Call of any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
  • Remove deprecated code 22.05 4d2eec0 https://review.mlplatform.org/c/ml/armnn/+/7712 Removed Symbols:
  • IsCapabilitySupported ( BackendId const& backend, enum BackendCapability capability ) FullyConnectedDescriptor::GetNumViews ( ) const INetwork::Accept ( ILayerVisitor& visitor ) const
  • Pure virtual method Accept ( ILayerVisitor& ) const has been removed from class IConnectableLayer.
  • The layout of v-table has been changed. Call of this virtual method or any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
  • Modified SubgraphView returned by GetWorkingCopy() cea3d49 https://review.mlplatform.org/c/ml/armnn/+/7852 Pure virtual method GetSlotIndex ( ) const has been added to class IInputSlot.
  • Applications will not provide the implementation for this pure virtual method and therefore cause a crash in the library trying to call this method.
  • The layout of v-table has been changed. Call of any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
  • Update the async api to use ExecutionData 21a6a1a https://review.mlplatform.org/c/ml/armnn/+/7878 experimental::IWorkingMemHandle Pure virtual method GetExecutionDataAt ( unsigned int ) has been added to this class.
  • Applications will not provide the implementation for this pure virtual method and therefore cause a crash in the library trying to call this method.
  • The layout of v-table has been changed. Call of any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
  • Pure virtual method GetWorkingMemDescriptor ( LayerGuid ) has been removed from this class.
  • The layout of v-table has been changed. Call of this virtual method or any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
  • The following back-end API changes have occurred during the implementation of 22.08 that users should be aware of before upgrading.

    Feature SHA Gerrit Review Resultant ABI/API changes
    Update the async api to use ExecutionData 21a6a1a https://review.mlplatform.org/c/ml/armnn/+/8051/2 The following virtual functions have been added to class IBackendInternal:
  • virtual ExecutionData CreateExecutionData(WorkingMemDescriptor&) const
  • virtual void UpdateExecutionData(ExecutionData&, WorkingMemDescriptor&) const
  • The layout of v-table has been changed. Call of this virtual method or any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
  • The signature of IWorkload::ExecuteAsync() has changed, it now accepts ExecutionData& instead of WorkingMemDescriptor&.
  • Add GetMemoryRequirements to IWorkload 5e09080 https://review.mlplatform.org/c/ml/armnn/+/7886 The following virtual function has been added to class IWorkload:
  • virtual armnn::Optionalarmnn::MemoryRequirements GetMemoryRequirements()
  • The layout of v-table has been changed. Call of this virtual method or any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
  • Modified SubgraphView returned by GetWorkingCopy() cea3d49 https://review.mlplatform.org/c/ml/armnn/+/7852 The signature of SubgraphView::GetWorkingCopy() has changed, it has now been marked as const to reflect the fact that the graph represented by the working copy does not get altered.

    TfLite Delegate

    New features

    • Added support for LOG
    • Added support for SIN
    • Add JNI interface

    Bug Fixes

    • Fix running MobileBERT on CpuRef
    • Only use the macro ARMNN_TFLITE_DELEGATE
    • DelegateQuickStartGuide.md errors fix

    PyArmNN

    • Documentation update running PyArm NN with ONNX parser.

    Build Dependencies

    Tools Supported Version
    Git 2.17.1 or later
    SCons 2.4.1 (Ubuntu) 2.5.1 (Debian)
    Cmake 3.19.0
    Tensorflow 2.5.0
    Onnx 1.6.0
    Flatbuffer 1.12.0
    Protobuf 3.12.0
    Android NDK r20b
    mapbox/variant 1.2.0
    cxxopts SHA 12e496da3d486b87fa9df43edea65232ed852510
    doctest 2.4.6
    fmt 7.0.1
    ghc 1.3.2
    half 1.12.0
    stb 2.16

    Don't miss a new armnn release

    NewReleases is sending notifications on new releases.