blob: 545e7c76429f00bc7d0fa1db00639c4c3d3fe1b8 [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 OShea7cc2bc52020-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
Nikhil Raja593af92021-05-10 16:27:26 +010017ABS (FLOAT32, FLOAT16, INT32)
18ADD (FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
19ARGMAX (FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
20ARGMIN (FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
21AVERAGE_POOL_2D (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
22BATCH_TO_SPACE_ND (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Sadik Armagan92b5fd12021-04-26 09:52:06 +010023CAST (FLOAT32, FLOAT16, INT32, QUANT8_ASYMM)
Teresa Charlin7f5b51e2021-09-01 14:19:38 +010024CHANNEL_SHUFFLE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Kevin May8bb7c0e2024-02-08 10:11:36 +000025CONCATENATION (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline75d09e2020-05-22 13:41:04 +010026CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
27DEPTH_TO_SPACE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
28DEPTHWISE_CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
29DEQUANTIZE (FLOAT32 (output only), QUANT8_ASYMM and QUANT8_ASYMM_SIGNED (input only))
Nikhil Raja593af92021-05-10 16:27:26 +010030DIV (FLOAT32, FLOAT16, INT32)
31ELU (FLOAT32, FLOAT16, QUANT8_ASYMM)
32EQUAL (BOOL8, FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charlincb31b3b2020-09-30 18:28:18 +010033EXP (FLOAT32, FLOAT16)
Nikhil Raja593af92021-05-10 16:27:26 +010034EXPAND_DIMS (FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Sadik Armagan2e329612020-06-24 10:57:23 +010035FILL (FLOAT32, FLOAT16, INT32)
Nikhil Raja593af92021-05-10 16:27:26 +010036FLOOR (FLOAT32, FLOAT16)
Teresa Charline75d09e2020-05-22 13:41:04 +010037FULLY_CONNECTED (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Kevin May8bb7c0e2024-02-08 10:11:36 +000038GATHER (FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Nikhil Raja593af92021-05-10 16:27:26 +010039GREATER (BOOL8, FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
40GREATER_EQUAL (BOOL8, FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
41GROUPED_CONV_2D (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
42HARD_SWISH (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
43INSTANCE_NORMALIZATION (FLOAT32, FLOAT16)
telsoa015307bc12018-03-09 13:51:08 +000044L2_NORMALIZATION (FLOAT32)
Nikhil Raja593af92021-05-10 16:27:26 +010045L2_POOL_2D (FLOAT32, FLOAT16)
46LESS (BOOL8, FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
47LESS_EQUAL (BOOL8, FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
telsoa015307bc12018-03-09 13:51:08 +000048LOCAL_RESPONSE_NORMALIZATION (FLOAT32)
Teresa Charlin2d710022021-05-31 19:35:58 +010049LOG (FLOAT32, FLOAT16)
Narumol Prangnawarat0629eb82020-11-12 18:27:37 +000050LOGICAL_AND (BOOL8)
51LOGICAL_NOT (BOOL8)
52LOGICAL_OR (BOOL8)
Nikhil Raja593af92021-05-10 16:27:26 +010053LOGISTIC (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
54LOG_SOFTMAX (FLOAT32, FLOAT16)
Ferran Balaguerd04c0432018-11-15 14:48:05 +000055LSTM (FLOAT32)
Nikhil Raja593af92021-05-10 16:27:26 +010056MAXIMUM (FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
57MAX_POOL_2D (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
58MEAN (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
59MINIMUM (FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
60MUL (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
61NEG (FLOAT32, FLOAT16)
62NOT_EQUAL (BOOL8, FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Nikhil Raj0c65ddb2022-02-10 10:01:33 +000063PAD (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Matthew Sloyan63dda912021-08-11 15:15:41 +010064PAD_V2 (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Kevin May8bb7c0e2024-02-08 10:11:36 +000065POW (FLOAT32, FLOAT16)
Nikhil Raja593af92021-05-10 16:27:26 +010066PRELU (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline75d09e2020-05-22 13:41:04 +010067QUANTIZE (FLOAT32 (input only), QUANT8_ASYMM and QUANT8_ASYMM_SIGNED (output only))
Sadik Armagan1ba99892019-08-21 15:03:44 +010068QUANTIZED_16BIT_LSTM (QUANT8_ASYMM)
Sadik Armagan813f2302020-05-19 14:10:30 +010069QUANTIZED_LSTM (QUANT8_ASYMM)
Kevin May8bb7c0e2024-02-08 10:11:36 +000070RANK (FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Nikhil Raja593af92021-05-10 16:27:26 +010071REDUCE_MAX (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
72REDUCE_MIN (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charlin10999602021-11-02 16:05:12 +000073REDUCE_PROD (FLOAT32, FLOAT16)
Nikhil Raja593af92021-05-10 16:27:26 +010074REDUCE_SUM (FLOAT32, FLOAT16)
75RELU (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
76RELU1 (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
77RELU6 (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline75d09e2020-05-22 13:41:04 +010078RESHAPE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Nikhil Raj0c65ddb2022-02-10 10:01:33 +000079RESIZE_BILINEAR (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Nikhil Raja593af92021-05-10 16:27:26 +010080RESIZE_NEAREST_NEIGHBOR (FLOAT32, FLOAT16, QUANT8_ASYMM)
81RSQRT (FLOAT32, FLOAT16)
Teresa Charlin2d710022021-05-31 19:35:58 +010082SIN (FLOAT32, FLOAT16)
Teresa Charline75d09e2020-05-22 13:41:04 +010083SOFTMAX (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Nikhil Raja593af92021-05-10 16:27:26 +010084SPACE_TO_BATCH_ND (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Teresa Charline75d09e2020-05-22 13:41:04 +010085SPACE_TO_DEPTH (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Kevin May8bb7c0e2024-02-08 10:11:36 +000086SPLIT (FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Nikhil Raja593af92021-05-10 16:27:26 +010087SQRT (FLOAT32, FLOAT16)
Teresa Charline75d09e2020-05-22 13:41:04 +010088SQUEEZE (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
89STRIDED_SLICE (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Nikhil Raja593af92021-05-10 16:27:26 +010090SUB (FLOAT32, FLOAT16, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
91TANH (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Nikhil Rajd7355502023-07-31 16:51:00 +010092TILE (All data types)
Teresa Charline75d09e2020-05-22 13:41:04 +010093TRANSPOSE (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
94TRANSPOSE_CONV_2D (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
Cathal Corbett0fa5e6d2022-01-21 16:55:13 +000095UNIDIRECTIONAL_SEQUENCE_LSTM (FLOAT32, FLOAT16)
telsoa015307bc12018-03-09 13:51:08 +000096
Mike Kelly56df76c2019-06-14 15:51:39 +010097Where operations are not supported by the ArmNN Android NN Driver, the driver indicates this to the framework
98appropriately and the framework implements those operations using a CPU implementation.
Teresa Charline75d09e2020-05-22 13:41:04 +010099
Aron Virginas-Tar9acf5792019-11-18 16:21:23 +0000100NOTE: By convention, only those tensor types have been listed above, which are fully supported across all
Teresa Charline75d09e2020-05-22 13:41:04 +0100101ArmNN backends.
Nikhil Raja593af92021-05-10 16:27:26 +0100102 - FLOAT16 input tensors are partially supported on most HAL 1.2 and 1.3 operators on the GpuAcc and
103 CpuRef backends, however not on CpuAcc.