CAST_EX nnapi_delegate (#1429)
author이춘석/동작제어Lab(SR)/Staff Engineer/삼성전자 <chunseok.lee@samsung.com>
Thu, 31 May 2018 02:28:49 +0000 (11:28 +0900)
committer오형석/동작제어Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com>
Thu, 31 May 2018 02:28:49 +0000 (11:28 +0900)
1. Add add_cast_ex_params
2. Add nnapi call from nnapi_delagate.cpp

Signed-off-by: Chunseok Lee <chunseok.lee@samsung.com>
libs/support/tflite/src/nnapi_delegate.cpp
libs/support/tflite/src/nnapi_delegate_ex_AddOpsAndParams_lambda.inc

index 697c2be..62f1e46 100644 (file)
@@ -313,15 +313,21 @@ void AddOpsAndParams(tflite::Interpreter *interpreter, ANeuralNetworksModel *nn_
       }
       case tflite::BuiltinOperator_STRIDED_SLICE:
         add_strided_slice_ex_params(node.builtin_data);
-        nn_op_type = ANEURALNETWORKS_STRIDED_SLICE_EX;
         // FIXME: This call is ugly. please fix this
         // Use ANN_addOperationEx for STRIDED_SLICE
         CHECK_NN(ANeuralNetworksModel_addOperationEx(
-            nn_model, static_cast<ANeuralNetworksOperationTypeEx>(ANEURALNETWORKS_STRIDED_SLICE_EX),
+            nn_model, ANEURALNETWORKS_STRIDED_SLICE_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_CAST:
+        add_cast_ex_params(node.builtin_data);
+        CHECK_NN(ANeuralNetworksModel_addOperationEx(
+            nn_model, ANEURALNETWORKS_CAST_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_CONCAT_EMBEDDINGS:
       case tflite::BuiltinOperator_LSH_PROJECTION:
       case tflite::BuiltinOperator_SVDF:
@@ -351,7 +357,6 @@ void AddOpsAndParams(tflite::Interpreter *interpreter, ANeuralNetworksModel *nn_
       case tflite::BuiltinOperator_LOG_SOFTMAX:
       case tflite::BuiltinOperator_DEQUANTIZE:
       case tflite::BuiltinOperator_DELEGATE:
-      case tflite::BuiltinOperator_CAST:
         FATAL("Op code %d is currently not delegated to NNAPI", builtin);
         nn_op_type = -1; // set to invalid
         break;
index 126ab71..4f5587a 100644 (file)
@@ -31,3 +31,8 @@
       }
       add_scalar_int32(builtin->shrink_axis_mask);
     };
+    auto add_cast_ex_params = [&add_scalar_int32](void* data) {
+      auto builtin = reinterpret_cast<TfLiteCastParams*>(data);
+      add_scalar_int32(builtin->in_data_type);
+      add_scalar_int32(builtin->out_data_type);
+    };