/* * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef __API_NNFW_INTERNAL_HPP__ #define __API_NNFW_INTERNAL_HPP__ #include "nnfw.h" #include "nnfw_dev.h" #include #include #include namespace neurun { namespace backend { namespace custom { class KernelRegistry; } } namespace exec { class Execution; } namespace graph { class Graph; } } struct nnfw_session { public: nnfw_session(); NNFW_STATUS load_model_from_file(const char *package_file_path); NNFW_STATUS prepare(); NNFW_STATUS run(); NNFW_STATUS set_input(uint32_t index, NNFW_TYPE type, const void *buffer, size_t length); NNFW_STATUS set_output(uint32_t index, NNFW_TYPE type, void *buffer, size_t length); NNFW_STATUS input_size(uint32_t *number); NNFW_STATUS output_size(uint32_t *number); NNFW_STATUS input_tensorinfo(uint32_t index, nnfw_tensorinfo *ti); NNFW_STATUS output_tensorinfo(uint32_t index, nnfw_tensorinfo *ti); NNFW_STATUS register_custom_operation(const std::string &id, nnfw_custom_eval eval_func); NNFW_STATUS set_default_backend(const char *backend); NNFW_STATUS set_op_backend(const char *op, const char *backend); private: std::shared_ptr _graph; std::shared_ptr _execution; std::shared_ptr _kernel_registry; std::unique_ptr _source; }; #endif // __API_NNFW_INTERNAL_HPP__