diff options
Diffstat (limited to 'runtime/onert/api/src/nnfw_api.cc')
-rw-r--r-- | runtime/onert/api/src/nnfw_api.cc | 175 |
1 files changed, 165 insertions, 10 deletions
diff --git a/runtime/onert/api/src/nnfw_api.cc b/runtime/onert/api/src/nnfw_api.cc index ff5e679da..185738add 100644 --- a/runtime/onert/api/src/nnfw_api.cc +++ b/runtime/onert/api/src/nnfw_api.cc @@ -27,6 +27,8 @@ STATIC_ASSERT_ENUM_CHECK(NNFW_TYPE_TENSOR_QUANT8_ASYMM, 2); STATIC_ASSERT_ENUM_CHECK(NNFW_TYPE_TENSOR_BOOL, 3); STATIC_ASSERT_ENUM_CHECK(NNFW_TYPE_TENSOR_UINT8, 4); STATIC_ASSERT_ENUM_CHECK(NNFW_TYPE_TENSOR_INT64, 5); +STATIC_ASSERT_ENUM_CHECK(NNFW_TYPE_TENSOR_QUANT8_ASYMM_SIGNED, 6); +STATIC_ASSERT_ENUM_CHECK(NNFW_TYPE_TENSOR_QUANT16_SYMM_SIGNED, 7); STATIC_ASSERT_ENUM_CHECK(NNFW_STATUS_NO_ERROR, 0); STATIC_ASSERT_ENUM_CHECK(NNFW_STATUS_ERROR, 1); @@ -56,15 +58,7 @@ STATIC_ASSERT_ENUM_CHECK(NNFW_INFO_ID_VERSION, 0); * @param session the session to be created * @return NNFW_STATUS_NO_ERROR if successful */ -NNFW_STATUS nnfw_create_session(nnfw_session **session) -{ - NNFW_RETURN_ERROR_IF_NULL(session); - - *session = new (std::nothrow) nnfw_session(); - if (*session == nullptr) - return NNFW_STATUS_OUT_OF_MEMORY; - return NNFW_STATUS_NO_ERROR; -} +NNFW_STATUS nnfw_create_session(nnfw_session **session) { return nnfw_session::create(session); } /* * Close a session instance @@ -89,7 +83,7 @@ NNFW_STATUS nnfw_close_session(nnfw_session *session) NNFW_STATUS nnfw_load_model_from_file(nnfw_session *session, const char *pacakge_file_path) { NNFW_RETURN_ERROR_IF_NULL(session); - return session->load_model_from_file(pacakge_file_path); + return session->load_model_from_nnpackage(pacakge_file_path); } /* @@ -349,6 +343,12 @@ NNFW_STATUS nnfw_load_circle_from_buffer(nnfw_session *session, uint8_t *buffer, return session->load_circle_from_buffer(buffer, size); } +NNFW_STATUS nnfw_load_model_from_modelfile(nnfw_session *session, const char *file_path) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->load_model_from_modelfile(file_path); +} + NNFW_STATUS nnfw_input_tensorindex(nnfw_session *session, const char *tensorname, uint32_t *index) { NNFW_RETURN_ERROR_IF_NULL(session); @@ -360,3 +360,158 @@ NNFW_STATUS nnfw_output_tensorindex(nnfw_session *session, const char *tensornam NNFW_RETURN_ERROR_IF_NULL(session); return session->output_tensorindex(tensorname, index); } + +NNFW_STATUS nnfw_set_backends_per_operation(nnfw_session *session, const char *backend_settings) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->set_backends_per_operation(backend_settings); +} + +NNFW_STATUS nnfw_prepare_pipeline(nnfw_session *session, const char *map_file_path) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->prepare_pipeline(map_file_path); +} + +NNFW_STATUS nnfw_push_pipeline_input(nnfw_session *session, void *inputs, void *lengths) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->push_pipeline_input((std::vector<void *> *)inputs, + (std::vector<uint32_t> *)lengths); +} + +NNFW_STATUS nnfw_pop_pipeline_output(nnfw_session *session, void *outputs) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->pop_pipeline_output((std::vector<void *> *)outputs); +} + +// Training + +#ifdef ONERT_TRAIN + +NNFW_STATUS nnfw_train_prepare(nnfw_session *session, const nnfw_train_info *info) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->train_prepare(info); +} + +NNFW_STATUS nnfw_train_input_tensorinfo(nnfw_session *session, uint32_t index, + nnfw_tensorinfo *info) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->train_input_tensorinfo(index, info); +} + +NNFW_STATUS nnfw_train_expected_tensorinfo(nnfw_session *session, uint32_t index, + nnfw_tensorinfo *info) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->train_expected_tensorinfo(index, info); +} + +NNFW_STATUS nnfw_train_set_input(nnfw_session *session, uint32_t index, const void *input, + const nnfw_tensorinfo *input_info) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->train_set_input(index, input, input_info); +} + +NNFW_STATUS nnfw_train_set_expected(nnfw_session *session, uint32_t index, const void *expected, + const nnfw_tensorinfo *expected_info) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->train_set_expected(index, expected, expected_info); +} + +NNFW_STATUS nnfw_train(nnfw_session *session, bool update_weights) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->train_run(update_weights); +} + +NNFW_STATUS nnfw_train_get_loss(nnfw_session *session, uint32_t index, float *loss) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->train_get_loss(index, loss); +} + +NNFW_STATUS nnfw_train_export_circle(nnfw_session *session, const char *path) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->train_export_circle(path); +} + +#else // ONERT_TRAIN + +NNFW_STATUS nnfw_train_prepare(nnfw_session *session, const nnfw_train_info *) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return NNFW_STATUS_ERROR; +} + +NNFW_STATUS nnfw_train_input_tensorinfo(nnfw_session *session, uint32_t, nnfw_tensorinfo *) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return NNFW_STATUS_ERROR; +} + +NNFW_STATUS nnfw_train_expected_tensorinfo(nnfw_session *session, uint32_t, nnfw_tensorinfo *) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return NNFW_STATUS_ERROR; +} + +NNFW_STATUS nnfw_train_set_input(nnfw_session *session, uint32_t, const void *, + const nnfw_tensorinfo *) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return NNFW_STATUS_ERROR; +} + +NNFW_STATUS nnfw_train_set_expected(nnfw_session *session, uint32_t, const void *, + const nnfw_tensorinfo *) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return NNFW_STATUS_ERROR; +} + +NNFW_STATUS nnfw_train(nnfw_session *session, bool) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return NNFW_STATUS_ERROR; +} + +NNFW_STATUS nnfw_train_get_loss(nnfw_session *session, uint32_t, float *) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return NNFW_STATUS_ERROR; +} + +NNFW_STATUS nnfw_train_export_circle(nnfw_session *session, const char *) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return NNFW_STATUS_ERROR; +} + +#endif // ONERT_TRAIN + +// Quantization + +NNFW_STATUS nnfw_set_quantization_type(nnfw_session *session, NNFW_QUANTIZE_TYPE qtype) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->set_quantization_type(qtype); +} + +NNFW_STATUS nnfw_set_quantized_model_path(nnfw_session *session, const char *path) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->set_quantized_model_path(path); +} + +NNFW_STATUS nnfw_quantize(nnfw_session *session) +{ + NNFW_RETURN_ERROR_IF_NULL(session); + return session->quantize(); +} |