Add delegate for SQRT and RSQRT (#3742)
author이춘석/동작제어Lab(SR)/Staff Engineer/삼성전자 <chunseok.lee@samsung.com>
Fri, 30 Nov 2018 06:08:11 +0000 (15:08 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Fri, 30 Nov 2018 06:08:11 +0000 (15:08 +0900)
* Add delegate for SQRT and RSQRT

With tensorflow v1.12, SQRT and RSQRT are built-in operator.
This commit adds delegate for built-in SQRT and RSQRT.

Signed-off-by: Chunseok Lee <chunseok.lee@samsung.com>
* Add macro to avoid GBS build fail

tizen(obs) has tensorflow v1.9 while this commit requires v1.12.

libs/support/tflite/src/nnapi_delegate.cpp

index 9d37161..95157c1 100644 (file)
@@ -744,6 +744,24 @@ TfLiteStatus AddOpsAndParams(
             augmented_inputs.data(), static_cast<uint32_t>(node.outputs->size),
             reinterpret_cast<uint32_t*>(node.outputs->data)));
         continue;
+#ifndef OBS_BUILD
+    case tflite::BuiltinOperator_SQRT:
+        CHECK_NN(ANeuralNetworksModel_addOperationEx(
+            nn_model, ANEURALNETWORKS_SQRT_EX,
+            static_cast<uint32_t>(augmented_inputs.size()),
+            augmented_inputs.data(),
+            static_cast<uint32_t>(node.outputs->size),
+            reinterpret_cast<uint32_t*>(node.outputs->data)));
+        continue;
+      case tflite::BuiltinOperator_RSQRT:
+        CHECK_NN(ANeuralNetworksModel_addOperationEx(
+            nn_model, ANEURALNETWORKS_RSQRT_EX,
+            static_cast<uint32_t>(augmented_inputs.size()),
+            augmented_inputs.data(),
+            static_cast<uint32_t>(node.outputs->size),
+            reinterpret_cast<uint32_t*>(node.outputs->data)));
+        continue;
+#endif
       case tflite::BuiltinOperator_CONCAT_EMBEDDINGS:
       case tflite::BuiltinOperator_LSH_PROJECTION:
       case tflite::BuiltinOperator_BIDIRECTIONAL_SEQUENCE_RNN:
@@ -794,8 +812,8 @@ TfLiteStatus AddOpsAndParams(
       case tflite::BuiltinOperator_REDUCE_MAX:
       case tflite::BuiltinOperator_REDUCE_MIN:
       case tflite::BuiltinOperator_REDUCE_PROD:
-      case tflite::BuiltinOperator_SQRT:
-      case tflite::BuiltinOperator_RSQRT:
+      //case tflite::BuiltinOperator_SQRT:
+      //case tflite::BuiltinOperator_RSQRT:
       case tflite::BuiltinOperator_SHAPE:
       case tflite::BuiltinOperator_POW:
       case tflite::BuiltinOperator_FAKE_QUANT: