blob: 02013609dfaf17f8177f9d535c8356b7dc754498 [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
Teresa Charline75d09e2020-05-22 13:41:04 +01004android.hardware.neuralnetworks@1.0, android.hardware.neuralnetworks@1.1, android.hardware.neuralnetworks@1.2 and
5android.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)
19ARGMAX (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
20ARGMIN (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
21AVERAGE_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)
Teresa Charline75d09e2020-05-22 13:41:04 +010030EQUAL (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
31EXPAND_DIMS (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
telsoa015307bc12018-03-09 13:51:08 +000032FLOOR (FLOAT32)
Teresa Charline75d09e2020-05-22 13:41:04 +010033FULLY_CONNECTED (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
34GREATER (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
35GREATER_EQUAL (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
36GROUPED_CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
37HARD_SWISH (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Aron Virginas-Tarad754532019-10-10 14:02:37 +010038INSTANCE_NORMALIZATION (FLOAT32)
telsoa015307bc12018-03-09 13:51:08 +000039L2_NORMALIZATION (FLOAT32)
Aron Virginas-Tar9acf5792019-11-18 16:21:23 +000040L2_POOL_2D (FLOAT32, QUANT8_ASYMM)
Teresa Charline75d09e2020-05-22 13:41:04 +010041LESS (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
42LESS_EQUAL (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
telsoa015307bc12018-03-09 13:51:08 +000043LOCAL_RESPONSE_NORMALIZATION (FLOAT32)
Teresa Charline75d09e2020-05-22 13:41:04 +010044LOGISTIC (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Aron Virginas-Tar75e67792019-10-15 13:33:03 +010045LOG_SOFTMAX (FLOAT32)
Ferran Balaguerd04c0432018-11-15 14:48:05 +000046LSTM (FLOAT32)
Teresa Charline75d09e2020-05-22 13:41:04 +010047MAXIMUM (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
48MAX_POOL_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
49MEAN (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
50MINIMUM (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
51MUL (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
52NEG (FLOAT32)
53NOT_EQUAL (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
54PAD (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline9eeb202019-11-27 12:55:21 +000055PAD_V2 (FLOAT32, FLOAT16, QUANT8_ASYMM)
Teresa Charline75d09e2020-05-22 13:41:04 +010056PRELU (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
57QUANTIZE (FLOAT32 (input only), QUANT8_ASYMM and QUANT8_ASYMM_SIGNED (output only))
Sadik Armagan1ba99892019-08-21 15:03:44 +010058QUANTIZED_16BIT_LSTM (QUANT8_ASYMM)
Sadik Armagan813f2302020-05-19 14:10:30 +010059QUANTIZED_LSTM (QUANT8_ASYMM)
Teresa Charline75d09e2020-05-22 13:41:04 +010060RELU (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
61RELU1 (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
62RELU6 (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
63RESHAPE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Aron Virginas-Tar9acf5792019-11-18 16:21:23 +000064RESIZE_BILINEAR (FLOAT32, QUANT8_ASYMM)
65RESIZE_NEAREST_NEIGHBOR (FLOAT32, QUANT8_ASYMM)
Aron Virginas-Tara97efbb2019-09-10 14:46:41 +010066RSQRT (FLOAT32)
Teresa Charline75d09e2020-05-22 13:41:04 +010067SOFTMAX (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
68SPACE_TO_BATCH_ND (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
69SPACE_TO_DEPTH (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Sadik Armagan701d9a02019-09-04 15:16:18 +010070SQRT (FLOAT32)
Teresa Charline75d09e2020-05-22 13:41:04 +010071SQUEEZE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
72STRIDED_SLICE (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
73SUB (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
74TANH (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
75TRANSPOSE (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
76TRANSPOSE_CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
telsoa015307bc12018-03-09 13:51:08 +000077
Mike Kelly56df76c2019-06-14 15:51:39 +010078Where operations are not supported by the ArmNN Android NN Driver, the driver indicates this to the framework
79appropriately and the framework implements those operations using a CPU implementation.
Teresa Charline75d09e2020-05-22 13:41:04 +010080
Aron Virginas-Tar9acf5792019-11-18 16:21:23 +000081NOTE: By convention, only those tensor types have been listed above, which are fully supported across all
Teresa Charline75d09e2020-05-22 13:41:04 +010082ArmNN backends.
83 - FLOAT16 input tensors are partially supported on most HAL 1.2 operators on the GpuAcc and
84 CpuRef backends, however not on CpuAcc.
85 - QUANT8_ASYMM_SIGNED has been added to the list in spite of not being supported in GpuAcc,
86 as this data type was added as part of HAL 1.3, which is currently not supported by GpuAcc.