Summary
New Features
- ArmnnTestUtils is now versioned and under ABI compliance checker
- Added support for Int32 CONCATENATION layer for CpuRef
- Added support for Float32 Unidirectional Sequence LSTM layer for CpuAcc and GpuAcc
- Added support for GatherNd for CpuRef, CpuAcc and GpuAcc
- Added support for SQRT for CpuAcc and GpuAcc
- Added support for Depthwise Convolution2d ConstTensorsAsInput for CpuRef, CpuAcc and GpuAcc
- Added support for Conv2d ConstTensorsAsInput for CpuRef, CpuAcc and GpuAcc
- Added support for Fully Connected ConstTensorsAsInput for CpuAcc and GpuAcc
- Added support for MaxPool3D and AveragePool3D for CpuAcc and GpuAcc
- Added support for L2Pooling3D for GpuAcc
- Added support for UnidirectionalLSTM for CpuAcc
- ConstTensorsAsInput: Optimizer Fix - FuseBatchNorm
- ConstTensorsAsInput: Optimizer Fix - FoldPadIntoConvolution2d
- ConstTensorsAsInput: Optimizer Fix - Fp32ToBf16 optimization
TfLite Parser
- Added support for GatherNd
- Added support for FloorDiv
- Added support for UnidirectionalLSTM
- Do not create Floor for FloorDiv layer when the data type is int32
ArmNN Serializer/Deserializer
- Added support for GatherNd
ExecuteNetwork App Changes:
- Added Reuse IO Buffers mode
- Profiling details weights and bias JSON keys deprecated. Will be removed for 22.08
Bug Fixes
- Fixed crashing in profiling
- Fixed the issue with running SimpleSample app in Raspi
- Removed MockBackend.hpp from armnn/src/backends/backendsCommon/test/ to solve problems when using Visual Studio in Windows
- Fixed segfault in RefDepthwiseConvolution2d workload
Other Changes
- ArmNN Baremetal
- Change the namespace from armnn::profiling to arm::pipe
ABI/API Changes
The following front-end API changes have occurred during the implementation of 22.05 that users should be aware of before upgrading.
.
Feature | SHA | Gerrit Review | Resultant ABI/API changes | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Change the namespace from armnn::profiling to arm::pipe | 5aa9fd7 | https://review.mlplatform.org/c/ml/armnn/+/7222 | IRuntime::RegisterDebugCallback Replace ProfilingService includes with IProfilingService.
| af94772
| https://review.mlplatform.org/c/ml/armnn/+/7240
| The following function has had a change in signature meaning it will not be recognized by old applications. | BackendRegistry::SetProfilingService Remove dependency on armnn::Exception classes from the Profiling code
| f9db3ef
| https://review.mlplatform.org/c/ml/armnn/+/7280
| Class armnn::BackendProfilingException has been moved to namespace arm::pipe; this will result in older applications not being able to find it.
| Replace armnn:Optional with arm::pipe::Optional in profiling code
| decd08b
| https://review.mlplatform.org/c/ml/armnn/+/7295
| Class armnn::TimeoutException has been moved to namespace arm::pipe; this will result in older applications not being able to find it. | Add Unidirectional Sequence Lstm support to TFLite
| 5880b91
| https://review.mlplatform.org/c/ml/armnn/+/7023
| Following fields have been added to struct LstmDescriptor: | m_CellIntermediateScale m_ForgetIntermediateScale m_HiddenStateScale m_HiddenStateZeroPoint m_InputIntermediateScale m_OutputIntermediateScale As a result of this size of the struct has been changed ConstTensorsAsInput: DepthwiseConvolution2d
| 0690265
| https://review.mlplatform.org/c/ml/armnn/+/7417
| Pure virtual method VisitDepthwiseConvolution2dLayer ( IConnectableLayer const*, struct DepthwiseConvolution2dDescriptor const&, char const* ) has been added to this class.. | ConstTensorsAsInput: Conv2d - FrontEnd
| b4dd5cc
| https://review.mlplatform.org/c/ml/armnn/+/7382
| Pure virtual method VisitConvolution2dLayer ( IConnectableLayer const*, struct Convolution2dDescriptor const&, char const* ) has been added to this class. | |
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 |
---|---|---|---|
Move headers to profiling/client/include | 2776183 | https://review.mlplatform.org/c/ml/armnn/+/7327 | Headers have been moved to profiling/client/include. |
Change the namespace from armnn::profiling to arm::pipe | 5aa9fd7 | https://review.mlplatform.org/c/ml/armnn/+/7222 |
TfLite Delegate
New features
- Added support for GatherNd
Bug Fixes
Note: Arm NN is aware of an issue where converting a model to .armnn will yield unpredictable results when reading back in through the deserializer. This is due to the serializer being dependent on graph topology and the graph being out of order. The graph becomes out of order because of the additional constant layers as inputs that are created through the parsers
PyArmNN
- Added support for GatherNd
- Added Pooling3D
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 | r36p0_01eac0-rc0 | 12_r2 (7987736) | 12_r2 (7973604) |
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 | r33p0_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 |