From de7bfdda53ac4c9daf5d083aab6b3bd308f52b8f Mon Sep 17 00:00:00 2001 From: Ahmedounet Date: Tue, 21 Jun 2022 10:37:02 +0200 Subject: [PATCH] feat: ouptut and compute functions --- core/iwasm/libraries/wasi-nn/wasi_nn.c | 44 ++++++++++++++++--- .../libraries/wasi-nn/wasi_nn_tensorflow.cpp | 20 ++++++++- .../libraries/wasi-nn/wasi_nn_tensorflow.hpp | 6 +++ 3 files changed, 63 insertions(+), 7 deletions(-) diff --git a/core/iwasm/libraries/wasi-nn/wasi_nn.c b/core/iwasm/libraries/wasi-nn/wasi_nn.c index 48e2bcad0..5dcb4770c 100644 --- a/core/iwasm/libraries/wasi-nn/wasi_nn.c +++ b/core/iwasm/libraries/wasi-nn/wasi_nn.c @@ -72,13 +72,45 @@ wasi_nn_set_input( return _set_input(tensor_struct); } -void -wasi_nn_compute() -{} +uint32_t +wasi_nn_get_output(wasm_exec_env_t exec_env, graph_execution_context context, uint32_t index, uint32_t *input_tensor_size, uint32_t input_tensor_type, + uint32_t *input_tensor) +{ + wasm_module_inst_t instance = wasm_runtime_get_module_inst(exec_env); + + uint32_t w_index = wasm_runtime_addr_app_to_native(instance, index); + + graph_execution_context graph_context = wasm_runtime_addr_app_to_native(instance, context); + + tensor_data data = + (tensor_data)wasm_runtime_addr_app_to_native(instance, input_tensor); + tensor_dimensions dimensions = + (tensor_dimensions)wasm_runtime_addr_app_to_native(instance, + input_tensor_size); + + tensor_type type = (tensor_type)wasm_runtime_addr_app_to_native( + instance, input_tensor_type); + + tensor tensor_struct = { .dimensions = dimensions, + .type = type, + .data = data }; + + return _get_output(graph_context, w_index ,tensor_struct); + +} + +uint32_t +wasi_nn_compute(wasm_exec_env_t exec_env , graph_execution_context context) +{ + + wasm_module_inst_t instance = wasm_runtime_get_module_inst(exec_env); + + graph_execution_context context = wasm_runtime_addr_app_to_native(instance, context); + + return _compute(_compute(context)); +} + -void -wasi_nn_get_output() -{} /* clang-format off */ #define REG_NATIVE_FUNC(func_name, signature) \ diff --git a/core/iwasm/libraries/wasi-nn/wasi_nn_tensorflow.cpp b/core/iwasm/libraries/wasi-nn/wasi_nn_tensorflow.cpp index ee193baeb..f9ef3d0ab 100644 --- a/core/iwasm/libraries/wasi-nn/wasi_nn_tensorflow.cpp +++ b/core/iwasm/libraries/wasi-nn/wasi_nn_tensorflow.cpp @@ -59,4 +59,22 @@ _set_input(tensor input_tensor) return success; -} \ No newline at end of file +} + + +uint32_t _compute( graph_execution_context context ){ + + interpreter->Invoke(); + + return success; +} + + +uint32_t _get_output(graph_execution_context context, uint32_t index, tensor tensor){ + + auto* output = interpreter->typed_output_tensor(0); + + + + return success; +} diff --git a/core/iwasm/libraries/wasi-nn/wasi_nn_tensorflow.hpp b/core/iwasm/libraries/wasi-nn/wasi_nn_tensorflow.hpp index b068aa312..7e1372e56 100644 --- a/core/iwasm/libraries/wasi-nn/wasi_nn_tensorflow.hpp +++ b/core/iwasm/libraries/wasi-nn/wasi_nn_tensorflow.hpp @@ -15,6 +15,12 @@ _load(graph_builder_array builder, graph_encoding encoding); uint32_t _set_input(tensor input_tensor); +uint32_t _get_output(graph_execution_context context, uint32_t index, tensor tensor); + +uint32_t +_compute( graph_execution_context context ); + + #ifdef __cplusplus } #endif