blob: 989dc5f9ed30a606ab680ee1f7c1f33c278ab117 [file] [log] [blame]
surmeh0149b9e102018-05-17 14:11:25 +01001------ ArmNN for Android NNAPI supported operations ------
telsoa015307bc12018-03-09 13:51:08 +00002
Matthew Benthama3e23ca2019-05-13 12:49:59 +01003This release of ArmNN for Android supports use as a driver for the Android Neural Networks API. It implements the
Ryan OShea7e45ef92020-08-20 19:58:07 +01004android.hardware.neuralnetworks@1.0, android.hardware.neuralnetworks@1.1, android.hardware.neuralnetworks@1.2 and
Teresa Charline75d09e2020-05-22 13:41:04 +01005android.hardware.neuralnetworks@1.3
Aron Virginas-Tarb23732b2019-06-17 15:48:45 +01006HAL interfaces.
telsoa015307bc12018-03-09 13:51:08 +00007
8For more information on the Android Neural Networks API, see https://developer.android.com/ndk/guides/neuralnetworks/index.html
9
10For integration and usage documentation, please see README.md.
11
12--- Support for Android Neural Networks HAL operations ---
13
Teresa Charline75d09e2020-05-22 13:41:04 +010014The following AndroidNN HAL 1.0, 1.1, 1.2 and 1.3 operations are currently supported:
telsoa015307bc12018-03-09 13:51:08 +000015
16AndroidNN operator Tensor type supported
Kevin May407718f2019-09-09 14:46:41 +010017ABS (FLOAT32)
Teresa Charline75d09e2020-05-22 13:41:04 +010018ADD (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Ryan OShea7e45ef92020-08-20 19:58:07 +010019ARGMAX (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
20ARGMIN (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline75d09e2020-05-22 13:41:04 +010021AVERAGE_POOL_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
22BATCH_TO_SPACE_ND (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
23CONCATENATION (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
24CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
25DEPTH_TO_SPACE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
26DEPTHWISE_CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
27DEQUANTIZE (FLOAT32 (output only), QUANT8_ASYMM and QUANT8_ASYMM_SIGNED (input only))
Aron Virginas-Tar9acf5792019-11-18 16:21:23 +000028DIV (FLOAT32, QUANT8_ASYMM)
Sadik Armagan51ba2c62020-03-31 15:36:25 +010029ELU (FLOAT32, QUANT8_ASYMM)
Ryan OShea7e45ef92020-08-20 19:58:07 +010030EQUAL (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline75d09e2020-05-22 13:41:04 +010031EXPAND_DIMS (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Sadik Armagan2e329612020-06-24 10:57:23 +010032FILL (FLOAT32, FLOAT16, INT32)
telsoa015307bc12018-03-09 13:51:08 +000033FLOOR (FLOAT32)
Teresa Charline75d09e2020-05-22 13:41:04 +010034FULLY_CONNECTED (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Ryan OShea7e45ef92020-08-20 19:58:07 +010035GREATER (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
36GREATER_EQUAL (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline75d09e2020-05-22 13:41:04 +010037GROUPED_CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
38HARD_SWISH (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Aron Virginas-Tarad754532019-10-10 14:02:37 +010039INSTANCE_NORMALIZATION (FLOAT32)
telsoa015307bc12018-03-09 13:51:08 +000040L2_NORMALIZATION (FLOAT32)
Aron Virginas-Tar9acf5792019-11-18 16:21:23 +000041L2_POOL_2D (FLOAT32, QUANT8_ASYMM)
Ryan OShea7e45ef92020-08-20 19:58:07 +010042LESS (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
43LESS_EQUAL (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
telsoa015307bc12018-03-09 13:51:08 +000044LOCAL_RESPONSE_NORMALIZATION (FLOAT32)
Teresa Charline75d09e2020-05-22 13:41:04 +010045LOGISTIC (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Aron Virginas-Tar75e67792019-10-15 13:33:03 +010046LOG_SOFTMAX (FLOAT32)
Ferran Balaguerd04c0432018-11-15 14:48:05 +000047LSTM (FLOAT32)
Ryan OShea7e45ef92020-08-20 19:58:07 +010048MAXIMUM (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline75d09e2020-05-22 13:41:04 +010049MAX_POOL_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
50MEAN (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Ryan OShea7e45ef92020-08-20 19:58:07 +010051MINIMUM (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline75d09e2020-05-22 13:41:04 +010052MUL (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
53NEG (FLOAT32)
Ryan OShea7e45ef92020-08-20 19:58:07 +010054NOT_EQUAL (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline75d09e2020-05-22 13:41:04 +010055PAD (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline9eeb202019-11-27 12:55:21 +000056PAD_V2 (FLOAT32, FLOAT16, QUANT8_ASYMM)
Teresa Charline75d09e2020-05-22 13:41:04 +010057PRELU (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
58QUANTIZE (FLOAT32 (input only), QUANT8_ASYMM and QUANT8_ASYMM_SIGNED (output only))
Sadik Armagan1ba99892019-08-21 15:03:44 +010059QUANTIZED_16BIT_LSTM (QUANT8_ASYMM)
Sadik Armagan813f2302020-05-19 14:10:30 +010060QUANTIZED_LSTM (QUANT8_ASYMM)
Teresa Charline75d09e2020-05-22 13:41:04 +010061RELU (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
62RELU1 (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
63RELU6 (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
64RESHAPE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Aron Virginas-Tar9acf5792019-11-18 16:21:23 +000065RESIZE_BILINEAR (FLOAT32, QUANT8_ASYMM)
66RESIZE_NEAREST_NEIGHBOR (FLOAT32, QUANT8_ASYMM)
Aron Virginas-Tara97efbb2019-09-10 14:46:41 +010067RSQRT (FLOAT32)
Teresa Charline75d09e2020-05-22 13:41:04 +010068SOFTMAX (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
69SPACE_TO_BATCH_ND (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
70SPACE_TO_DEPTH (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Sadik Armagan701d9a02019-09-04 15:16:18 +010071SQRT (FLOAT32)
Teresa Charline75d09e2020-05-22 13:41:04 +010072SQUEEZE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
73STRIDED_SLICE (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
74SUB (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
75TANH (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
76TRANSPOSE (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
77TRANSPOSE_CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
telsoa015307bc12018-03-09 13:51:08 +000078
Mike Kelly56df76c2019-06-14 15:51:39 +010079Where operations are not supported by the ArmNN Android NN Driver, the driver indicates this to the framework
80appropriately and the framework implements those operations using a CPU implementation.
Teresa Charline75d09e2020-05-22 13:41:04 +010081
Aron Virginas-Tar9acf5792019-11-18 16:21:23 +000082NOTE: By convention, only those tensor types have been listed above, which are fully supported across all
Teresa Charline75d09e2020-05-22 13:41:04 +010083ArmNN backends.
84 - FLOAT16 input tensors are partially supported on most HAL 1.2 operators on the GpuAcc and
Teresa Charlin28c768e2020-08-28 15:06:57 +010085 CpuRef backends, however not on CpuAcc.