From a601990e13af95c9d617ed9167fa45bab98c079f Mon Sep 17 00:00:00 2001 From: Ahmedounet <56503724+Ahmedounet@users.noreply.github.com> Date: Mon, 13 Jun 2022 17:23:32 +0200 Subject: [PATCH] SP-193 load_function (#4) * feat: "load module done" * fix: "pr fixes" * fix: "pr fixes" --- .../libraries/wasi-nn/lib_run_inference.cpp | 42 +++++++++++++------ .../libraries/wasi-nn/lib_run_inference.hpp | 2 +- core/iwasm/libraries/wasi-nn/wasi_nn.h | 2 +- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/core/iwasm/libraries/wasi-nn/lib_run_inference.cpp b/core/iwasm/libraries/wasi-nn/lib_run_inference.cpp index 4485042dd..79170bdf3 100644 --- a/core/iwasm/libraries/wasi-nn/lib_run_inference.cpp +++ b/core/iwasm/libraries/wasi-nn/lib_run_inference.cpp @@ -4,20 +4,38 @@ #include #include #include +#include + +enum Idx {GRAPH=0, GRAPH_SIZE=1 }; + std::unique_ptr interpreter = NULL; -std::unique_ptr model = NULL; +std::unique_ptr model = NULL; uint32_t _load(graph_builder_array builder, graph_encoding encoding) { - uint32_t *size = (uint32_t*) builder[1]; - printf("inside _load: %d\n", *size); - return suces; - // tflite::ErrorReporter *error_reporter; - // model = tflite::FlatBufferModel::BuildFromBuffer( - // (const char *)builder[0], - // 1000, // TODO: find how to pass buffer size - // error_reporter - // ); - // tflite::ops::builtin::BuiltinOpResolver resolver; - // tflite::InterpreterBuilder(*model, resolver)(&interpreter); + + if(encoding!=tensorflow){return invalid_argument;} + + uint32_t *size = (uint32_t*) builder[Idx::GRAPH_SIZE]; + + tflite::ErrorReporter *error_reporter; + + model = tflite::FlatBufferModel::BuildFromBuffer((const char *)builder[Idx::GRAPH], *size, error_reporter); + + if(model== nullptr){ + printf("failure: null model \n"); + return invalid_argument; + } + + // Build the interpreter with the InterpreterBuilder. + tflite::ops::builtin::BuiltinOpResolver resolver; + tflite::InterpreterBuilder tflite_builder(*model, resolver); + tflite_builder(&interpreter); + + if(interpreter==nullptr){ + printf("failure: null interpreter \n"); + return invalid_argument; + } + + return success; } diff --git a/core/iwasm/libraries/wasi-nn/lib_run_inference.hpp b/core/iwasm/libraries/wasi-nn/lib_run_inference.hpp index 77096630d..d07c3734c 100644 --- a/core/iwasm/libraries/wasi-nn/lib_run_inference.hpp +++ b/core/iwasm/libraries/wasi-nn/lib_run_inference.hpp @@ -9,7 +9,7 @@ extern "C" { #endif -uint32_t _load(graph_builder_array builder, graph_encoding encoding); +uint32_t _load(graph_builder_array builder, graph_encoding encoding); #ifdef __cplusplus } diff --git a/core/iwasm/libraries/wasi-nn/wasi_nn.h b/core/iwasm/libraries/wasi-nn/wasi_nn.h index 63b578682..161e96fe0 100644 --- a/core/iwasm/libraries/wasi-nn/wasi_nn.h +++ b/core/iwasm/libraries/wasi-nn/wasi_nn.h @@ -11,7 +11,7 @@ typedef uint32_t buffer_size; typedef enum { - suces = 0, + success = 0, invalid_argument, missing_memory, busy