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.: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. | 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. | Accessing ConstTensors from IConnectableLayer
| 2e24175
| https://review.mlplatform.org/c/ml/armnn/+/7040
| Pure virtual method GetConstantTensorsByRef ( ) has been added to class IConnectableLayer. | 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 Stabilize the ILayerSupport interface with unified strategy.
| 34b429c
| https://review.mlplatform.org/c/ml/armnn/+/6903
| Stabilize the IWorkloadFactory interface with unified strategy
| 611c7fb
| https://review.mlplatform.org/c/ml/armnn/+/6906
| |
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 |