------ ArmNN for Android NNAPI supported operations ------ This release of ArmNN for Android supports use as a driver for the Android Neural Networks API. It implements the android.hardware.neuralnetworks@1.0, android.hardware.neuralnetworks@1.1, android.hardware.neuralnetworks@1.2 and android.hardware.neuralnetworks@1.3 HAL interfaces. For more information on the Android Neural Networks API, see https://developer.android.com/ndk/guides/neuralnetworks/index.html For integration and usage documentation, please see README.md. --- Support for Android Neural Networks HAL operations --- The following AndroidNN HAL 1.0, 1.1, 1.2 and 1.3 operations are currently supported: AndroidNN operator Tensor type supported ABS (FLOAT32) ADD (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) ARGMAX (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) ARGMIN (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) AVERAGE_POOL_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) BATCH_TO_SPACE_ND (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) CONCATENATION (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) DEPTH_TO_SPACE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) DEPTHWISE_CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) DEQUANTIZE (FLOAT32 (output only), QUANT8_ASYMM and QUANT8_ASYMM_SIGNED (input only)) DIV (FLOAT32, QUANT8_ASYMM) ELU (FLOAT32, QUANT8_ASYMM) EQUAL (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) EXP (FLOAT32, FLOAT16) EXPAND_DIMS (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) FILL (FLOAT32, FLOAT16, INT32) FLOOR (FLOAT32) FULLY_CONNECTED (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) GREATER (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) GREATER_EQUAL (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) GROUPED_CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) HARD_SWISH (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) INSTANCE_NORMALIZATION (FLOAT32) L2_NORMALIZATION (FLOAT32) L2_POOL_2D (FLOAT32, QUANT8_ASYMM) LESS (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) LESS_EQUAL (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) LOCAL_RESPONSE_NORMALIZATION (FLOAT32) LOGICAL_AND (BOOL8) LOGICAL_NOT (BOOL8) LOGICAL_OR (BOOL8) LOGISTIC (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) LOG_SOFTMAX (FLOAT32) LSTM (FLOAT32) MAXIMUM (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) MAX_POOL_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) MEAN (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) MINIMUM (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) MUL (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) NEG (FLOAT32) NOT_EQUAL (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) PAD (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) PAD_V2 (FLOAT32, FLOAT16, QUANT8_ASYMM) PRELU (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) QUANTIZE (FLOAT32 (input only), QUANT8_ASYMM and QUANT8_ASYMM_SIGNED (output only)) QUANTIZED_16BIT_LSTM (QUANT8_ASYMM) QUANTIZED_LSTM (QUANT8_ASYMM) RELU (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) RELU1 (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) RELU6 (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) RESHAPE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) RESIZE_BILINEAR (FLOAT32, QUANT8_ASYMM) RESIZE_NEAREST_NEIGHBOR (FLOAT32, QUANT8_ASYMM) RSQRT (FLOAT32) SOFTMAX (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) SPACE_TO_BATCH_ND (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) SPACE_TO_DEPTH (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) SQRT (FLOAT32) SQUEEZE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) STRIDED_SLICE (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) SUB (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) TANH (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) TRANSPOSE (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) TRANSPOSE_CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED) Where operations are not supported by the ArmNN Android NN Driver, the driver indicates this to the framework appropriately and the framework implements those operations using a CPU implementation. NOTE: By convention, only those tensor types have been listed above, which are fully supported across all ArmNN backends. - FLOAT16 input tensors are partially supported on most HAL 1.2 operators on the GpuAcc and CpuRef backends, however not on CpuAcc.