github ARM-software/armnn v22.02
Release 22.02

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

Summary

New Features

  • Add mirror padding support on Pad layer for CpuAcc and GpuAcc.
  • Add support for Pool3d FrontEnd, Reference implementation.

TfLite Parser

  • Added missing support for reshape operator when the target shape is dynamic and batch size is unknown.
  • Added PadV2 support.
  • Changed asserts to CHECK in ParserFlatbuffersFixture.hpp.

ArmNN Serializer/Deserializer

  • Add support for Pool3d.

Bug Fixes

  • Added bounds checking when indexing PermutationVector elements and its correspondent unit tests.
  • Fixed output bindings in ExecuteNetwork when using delegate with models with multiple outputs.
  • Fixed build issues in x86 Dockerfile.
  • Fixed ExNet prints inference time twice.
  • Fixed thread safety issues in TimelineDecoder and associated unit tests.
  • Fixed some Thread Sanitizer warnings.
  • Added check for existing event to fix issue on OpenCL Timer.
  • Fixed logging bug where blank messages were being sent.
  • Fixed issues on Logging API.
  • Fixed async execute test on 32bit Raspberry Pi

Other Changes

  • Removed references to blacklist from Model Accuracy tool.
  • Removed deprecated code.
  • Added ModelOptions and addition timing to ARMNN_LOG.
  • Added get_tensorflow.sh script.
  • Updated build guides.
  • Updated error messages from the flatbuffers parser.
  • Added the C++ KWS example.
  • Handled optional biases better in Neon/Cl FullyConnected workloads.
  • Stabilise the Backend API:
    • Backend developers should now be able to limit includes to headers in include/armnn/backends/
    • Moved CompatibleTypes.hpp to the armnnUtils library.
    • Added forwarding header for src/armnn/CompatibleTypes.hpp.
    • Moved the ArmNN Test Utils code to a physically separate directory.
    • Added new method AddPrecompiledLayer() to INetwork.
    • Promoted backend headers in backendCommon to armnn/backends.
    • Used INetwork rather than Graph for holding layers for OptimizationViews.
    • Used IConnectableLayer in SubgraphView rather than Layer in its m_Layers.
    • Stabilised the IWorkloadFactory interface with unified strategy.
    • Stabilised the ILayerSupport interface with unified strategy.
    • Moved SubgraphView to backends include folder.
    • Added GetParameters to IConnectableLayer.
    • Exposed a new MockWorkloadFactory and MockMemManager.
    • Accessing ConstTensors from IConnectableLayer
    • Added method of returning a GetSubgraphWorkingCopy (SubgraphView).
    • Moved MemCopyTestImpl from acl to armnnTestUtils.
  • Support Import of Aligned Host Memory in NNAPI:
    • Added CanBeImported to ITensorHandle.
    • Implemented CanBeImported function in RefTensorHandle.
    • Implemented CanBeImported function in NeonTensorHandle.
    • Implemented CanBeImported function in ClTensorHandle.
    • Added functionality for CopyAndImportFactoryPair to TensorHandleFactoryRegistry.
    • Register CopyAndImportFactoryPairs to RefBackend and unit tests.
    • Register CopyAndImportFactoryPairs to NeonBackend and unit tests.
    • Register CopyAndImportFactoryPairs to ClBackend and unit tests.
    • Added ReplaceTensorHandle functions to IWorkload and BaseWorkload.
    • Added ClBaseWorkload and NeonBaseWorkload.
    • Modified workloads to extend Neon/Cl BaseWorkload.
    • Added ReplaceTensorHandle functions to Neon/CL BaseWorkloads.
    • Implemented ICLTensorProxy.
    • Added input and output workload slot pairs to LoadedNetwork.
    • Added support of aligned host memory.
    • Added Forced Import EndToEnd tests to Ref, Neon, and CL.
    • Call Cl sync after EnqueueWorkload
    • Added EndToEnd tests on reference backend to ensure allocated data can be reused.

ABI/API Changes

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

.

Feature SHA Gerrit Review Resultant ABI/API changes
SubgraphView uses IConnectableLayer rather than Layer in its m_Layers 56ccf68 https://review.mlplatform.org/c/ml/armnn/+/6807 Pure virtual method GetOwningIConnectableLayer( ) const has been added to class IOutputSlot.:
  • 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.
  • Stabilize the ILayerSupport interface with unified strategy. 34b429c https://review.mlplatform.org/c/ml/armnn/+/6903 Virtual descriptor added to the struct BaseDescriptor, as a result the size of all desciptors has been changed.The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.
    SubgraphView: Add method of returning a GetSubgraphWorkingCopy. 9d74ba6 https://review.mlplatform.org/c/ml/armnn/+/6995 Pure virtual method GetOwningIConnectableLayer( ) 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.
  • Add support of aligned host memory e2af6f4 https://review.mlplatform.org/c/ml/armnn/+/7025 The following functions have had a change in signature meaning they will not be recognized by old applications: IRuntime::EnqueueWorkload() accepts two new parameters preImportedInputIds and preImportedOutputIds. IRuntime::ImportInputs() accepts a new parameter forceImportMemorySource. IRuntime::ImportOutputs() accepts a new parameter forceImportMemorySource.
    Add GetParameters to IConnectableLayer e466596 https://review.mlplatform.org/c/ml/armnn/+/7031 Pure virtual method GetParameters ( ) const has been added to class IConnectableLayer. Virtual method IsNull ( ) const has been added to class BaseDescriptor.
  • 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.
  • Accessing ConstTensors from IConnectableLayer 2e24175 https://review.mlplatform.org/c/ml/armnn/+/7040 Pure virtual method GetConstantTensorsByRef ( ) has been added to class IConnectableLayer.
  • 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.02 b28e525 https://review.mlplatform.org/c/ml/armnn/+/7104 Deprecated LayerSupport.hpp and included IsXXXLayerSupported() functions have been removed as they have been replaced with ABI Stable ILayerSupport interface and the BackendHelper.hpp GetILayerSupportByBackendId() function.

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

    Feature SHA Gerrit Review Resultant ABI/API changes
    Add a Pooling3d FrontEnd and Ref Implementation 7b885b3 https://review.mlplatform.org/c/ml/armnn/+/6511 ILayerSupport.hpp
  • Pure virtual function IsPooling3dSupported added requiring implementation by backend developers.
  • Stabilize the ILayerSupport interface with unified strategy. 34b429c https://review.mlplatform.org/c/ml/armnn/+/6903
  • ABI stable virtual function IsLayerSupported(const LayerType& type, ...) has been added to ILayerSupport.hpp.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.
  • Stabilize the IWorkloadFactory interface with unified strategy 611c7fb https://review.mlplatform.org/c/ml/armnn/+/6906
  • ABI stable virtual function CreateWorkload(const LayerType& type, ...) has been added to class IWorkloadFactory.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.
  • TfLite Delegate

    New features

    • Added Delegate cross compile to x86 Dockerfile
    • Added constant input supports for Pack/Stack, Concatenation operators
    • Added Int32 support to Pack/Stack operator on CpuRef
    • Removed unsupported operator: Gather
    • Added missing qasymms8 output type

    Bug Fixes

    • Fixed reshape.

    Py Arm NN

    • Added support for the following operations ChannelShuffle, Cast, Convolution3D, LogicalBinary, MirrorPad, Reduce, Shape, and Transpose (Permute).
    • Removed references to blacklist and whitelist.
    • Adding the python KWS example.

    Build Dependencies

    Tools Supported Version
    Git 2.17.1 or later
    SCons 2.4.1 (Ubuntu) 2.5.1 (Debian)
    Cmake 3.5.1 (Ubuntu) and 3.7.2 (Debian)
    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

    Android 12 Compatibility Testing was performed using the following:

    Android Tag Android Build ID Mali Driver Android Compatibility Test Suite Android Vendor Test Suite
    android-12.0.0_r1 SP1A.210812.015 r35p0_01eac0-rc1 12_r1_arm64 (7698606) 12_r1_arm64 (7698606)

    Android 11 Compatibility Testing was performed using the following:

    Android Tag Android Build ID Mali Driver Android Compatibility Test Suite Android Vendor Test Suite
    android-11.0.0_r6 RPM1.210413.002 r32p0_01eac0 11_r5 (7640833) 11_r5 (7599184)

    Android 10 Compatibility Testing was performed using the following:

    Androidtag Android Build ID Mali Driver
    android-10.0.0_r39 QQ3A.200605.002.A1 R23P0_01REL0

    Don't miss a new armnn release

    NewReleases is sending notifications on new releases.