github ARM-software/armnn v20.08
Release 20.08

Summary

The 20.08 Release delivers the following:

  • The final tranche of support for Android R ahead of its release in September. Namely QoS functionality, Fill, Rank and the new Resize options.
  • Support for dynamic tensors where the size of any unspecified tensors can be inferred at network load time.
  • Performance enhancements on the NEON backend eliminating unnecessary copying of data in memory, namely:
    • The ability to directly import and export data into an inference graph.
    • The ability to use subtensors where possible in split and concat workloads.
  • Verification of support for TensorFlow Lite wav2letter and wav2letter tiny models (note: need to do further work to verify accuracy in the next release).

New Features:

  • Added FILL operator support for CpuRef, CpuAcc, and GpuAcc.
  • Added RANK operator support for CpuRef.
  • Added align corner and half pixels support to the RESIZE operator for CpuRef, CpuAcc, and GpuAcc.
  • Refactor TensorShape to support Dynamic Tensors (tensors of unknown dimension sizes or even unknown rank).
  • Enable memory import in CpuAcc.
  • Allow using Sub-Tensors on CpuAcc on ConcatenationLayer if concatenation is along x or y (2 innermost dimensions) and previous layers do not require padding.
  • Allow using Sub-Tensors on CpuAcc on SplitterLayer if split is along x or y (2 innermost dimensions) and next layers do not require padding.

TfLite Parser:

  • Added DIV operator support.
  • Added LEAKY_RELU operator support.
  • Added NEG operator support.
  • Added HARD_SWISH operator support.
  • Added Dynamic Tensors Type 1 (Output shape can be inferred from Input Shape, Input shape always has to be set, Output shape can be dynamic) Support.

Public API Changes:

  • Added ITensorHandleFactory::GetCapabilities to calculate capability of the TensorHandleFactor.

ExecuteNetwork App Changes:

  • Added -infer-output-shape option: if enabled it will enable ShapeInferenceMethod::InferAndValidate on TfLiteParser which supports dynamic tensors type 1 that Output shape can be inferred from Input shape.

Other changes:

  • Added EXP operator support to CpuAcc and GpuAcc.
  • Added ADD,SUB,DIV,MUL,MAXIMUM and MINIMUM int32 support in CpuRef.
  • Added PRELU float16 support in CpuRef.
  • Added ARGMINMAX float16 support in CpuRef.
  • Added GATHER support for any axis in CpuAcc and GpuAcc (previously the support was only for axis = 0).
  • Added LOGSOFTMAX support in CpuAcc and GpuAcc.
  • Added support for subtensors on Splitter layer for splitting x/y axis if no padding required on next layer.
  • Added support for subtensors on Concat layer for concatenating x/y axis if no padding required on previous layer.
  • Replace boost::filesystem by ghc::filesystem.
  • Remove boot/dll.hpp from dynamic backends test.
  • Separated external profiling server code into a standalone library.

Bug Fixes:

  • Added ability for Mean Reduction to reduce to scalar.
  • Added ability for Strided Slice to shrink to scalar.
  • Added a check for Strided Slice to not run when stride is negative and ShrinkAxisMask set.
  • Fix edge case for transposeConv2d output shape inference.
  • Fix deserializer output binding TensorShape logic.
  • Fixed issue where AddBroadcastReshapeLayer would always connect the Reshaped input to the first input slot and the other input to the first input slot.
  • Remove TfLite Concat and Pad quantazation validation.

Build dependencies

Tools Version we support
Git 2.17.1 or later
SCons 2.4.1 (Ubuntu) and 2.5.1 (Debian)
CMake 3.5.1 (Ubuntu) and 3.7.2 (Debian)
boost 1.64
Tensorflow TENSORFLOW_REVISION= 590d6eef7e91a6a7392c8ffffb7b58f2e0c8bc6b (v1.15.0)
Caffe CAFFE_REVISION= 7d3f8a7ea43fb06cd9804bc90933c7a91cd88ec9
Onnx ONNX_REVISION= f612532843bd8e24efeab2815e45b436479cc9ab
Flatbuffer 1.12.0
Protobuf 3.5.2
Eigen3 3.3
Android 9 and 10
Mali Driver r25p1_01bet0
Android NDK r20b
2 months ago