blob: 7dfb6dd07ce41f3491bd990aaf19aa80585c4915 [file] [log] [blame]
------ 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 and android.hardware.neuralnetworks@1.1 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 operations are currently supported.
AndroidNN operator Tensor type supported
ADD (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
AVERAGE_POOL_2D (FLOAT32,QUANT8_ASYMM)
BATCH_TO_SPACE_ND (FLOAT32,QUANT8_ASYMM)
CONCATENATION (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
CONV_2D (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
DEPTHWISE_CONV_2D (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
DIV (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
FLOOR (FLOAT32)
FULLY_CONNECTED (FLOAT32,QUANT8_ASYMM)
L2_NORMALIZATION (FLOAT32)
L2_POOL_2D (FLOAT32,QUANT8_ASYMM)
LOCAL_RESPONSE_NORMALIZATION (FLOAT32)
LOGISTIC (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
LSTM (FLOAT32)
MAX_POOL_2D (FLOAT32,QUANT8_ASYMM)
MEAN (FLOAT32,QUANT8_ASYMM)
MUL (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
PAD (FLOAT32,QUANT8_ASYMM)
RELU (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
RELU1 (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
RELU6 (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
RESHAPE (FLOAT32,QUANT8_ASYMM)
RESIZE_BILINEAR (FLOAT32,QUANT8_ASYMM)
SOFTMAX (FLOAT32,QUANT8_ASYMM)
SPACE_TO_BATCH_ND (FLOAT32,QUANT8_ASYMM)
SQUEEZE (FLOAT32,QUANT8_ASYMM)
STRIDED_SLICE (FLOAT32,QUANT8_ASYMM)
SUB (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
TANH (FLOAT32,QUANT8_ASYMM,QUANT16_SYMM)
TRANSPOSE (FLOAT32,QUANT8_ASYMM)
--- Unsupported operators ---
The following AndroidNN 1.0 operations are currently not supported.
DEPTH_TO_SPACE
DEQUANTIZE
EMBEDDING_LOOKUP
HASHTABLE_LOOKUP
LSH_PROJECTION
RNN
SPACE_TO_DEPTH
SVDF
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.