ie_iexecutable_network.hpp
Go to the documentation of this file.
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4 
5 /**
6  * @brief a header file for IExecutableNetwork interface
7  * @file ie_iexecutable_network.hpp
8  */
9 #pragma once
10 
11 #include "ie_common.h"
12 #include "ie_primitive_info.hpp"
13 #include "ie_iinfer_request.hpp"
14 #include "ie_icnn_network.hpp"
15 #include "ie_imemory_state.hpp"
16 #include "ie_input_info.hpp"
17 #include "ie_parameter.hpp"
18 #include <string>
19 #include <vector>
20 #include <memory>
21 #include <map>
22 
23 namespace InferenceEngine {
24 
25 /**
26  * @brief A collection that contains string as key, and const Data smart pointer as value
27  */
28 using ConstOutputsDataMap = std::map<std::string, CDataPtr>;
29 
30 /**
31  * @brief This is an interface of an executable network
32  */
33 class IExecutableNetwork : public details::IRelease {
34 public:
35  /**
36  * @brief A smart pointer to the current IExecutableNetwork object
37  */
38  using Ptr = std::shared_ptr<IExecutableNetwork>;
39 
40  /**
41  * @brief Gets the Executable network output Data node information. The received info is stored in the given ConstOutputsDataMap node.
42  * This method need to be called to find output names for using them later during filling of a map
43  * of blobs passed to InferenceEngine::IInferencePlugin::Infer()
44  * @param out Reference to the ConstOutputsDataMap object
45  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
46  * @return Status code of the operation: OK (0) for success
47  */
48  virtual StatusCode GetOutputsInfo(ConstOutputsDataMap &out, ResponseDesc *resp) const noexcept = 0;
49 
50  /**
51  * @brief Gets the Executable network input Data node information. The received info is stored in the given ConstInputsDataMap object.
52  * This method need to be called to find out input names for using them later during filling of a map
53  * of blobs passed to InferenceEngine::IInferencePlugin::Infer()
54  * @param inputs Reference to ConstInputsDataMap object.
55  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
56  * @return Status code of the operation: OK (0) for success
57  */
58  virtual StatusCode GetInputsInfo(ConstInputsDataMap &inputs, ResponseDesc *resp) const noexcept = 0;
59 
60  /**
61  * @brief Creates an inference request object used to infer the network.
62  * The created request has allocated input and output blobs (that can be changed later).
63  * @param req Shared pointer to the created request object
64  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
65  * @return Status code of the operation: OK (0) for success
66  */
67  virtual StatusCode CreateInferRequest(IInferRequest::Ptr& req, ResponseDesc *resp) noexcept = 0;
68 
69  /**
70  * @brief Exports the current executable network so it can be used later in the Import() main API
71  * @param modelFileName Full path to the location of the exported file
72  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
73  * @return Status code of the operation: OK (0) for success
74  */
75  virtual StatusCode Export(const std::string& modelFileName, ResponseDesc *resp) noexcept = 0;
76 
77  /**
78  * @brief Get the mapping of IR layer names to implemented kernels
79  * @param deployedTopology Map of PrimitiveInfo objects that represent the deployed topology
80  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
81  * @return Status code of the operation: OK (0) for success
82  */
83  virtual StatusCode GetMappedTopology(std::map<std::string, std::vector<PrimitiveInfo::Ptr>> &deployedTopology, ResponseDesc *resp) noexcept = 0;
84 
85  /**
86  * @brief Get executable graph information from a device
87  * @param graphPtr network ptr to store executable graph information
88  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
89  * @return Status code of the operation: OK (0) for success
90  */
91  virtual StatusCode GetExecGraphInfo(ICNNNetwork::Ptr &graphPtr, ResponseDesc *resp) noexcept = 0;
92 
93  /**
94  * @brief Gets state control interface for given executable network, State control essential for recurrent networks
95  * @param pState reference to a pointer that receives internal states
96  * @param idx requested index for receiving memory state
97  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
98  * @return Status code of the operation: OK (0) for success, OUT_OF_BOUNDS (-6) no memory state for given index
99  */
100  virtual StatusCode QueryState(IMemoryState::Ptr & pState, size_t idx, ResponseDesc *resp) noexcept = 0;
101 
102  /**
103  * @brief Sets configuration for current executable network
104  * @param config Map of pairs: (config parameter name, config parameter value)
105  * @param resp Pointer to the response message that holds a description of an error if any occurred
106  * @return code of the operation. OK if succeeded
107  */
108  virtual StatusCode SetConfig(const std::map<std::string, Parameter> &config, ResponseDesc *resp) noexcept = 0;
109 
110  /** @brief Gets configuration for current executable network. The method is responsible to extract information
111  * which affects executable network execution. The list of supported configuration values can be extracted via
112  * ExecutableNetwork::GetMetric with the SUPPORTED_CONFIG_KEYS key, but some of these keys cannot be changed dymanically,
113  * e.g. DEVICE_ID cannot changed if an executable network has already been compiled for particular device.
114  * @param name - config key, can be found in ie_plugin_config.hpp
115  * @param result - value of config corresponding to config key
116  * @param resp - Pointer to the response message that holds a description of an error if any occurred
117  * @return code of the operation. OK if succeeded
118  */
119  virtual StatusCode GetConfig(const std::string &name, Parameter &result, ResponseDesc *resp) const noexcept = 0;
120 
121  /**
122  * @brief Gets general runtime metric for an executable network. It can be network name, actual device ID on
123  * which executable network is running or all other properties which cannot be changed dynamically.
124  * @param name - metric name to request
125  * @param result - metric value corresponding to metric key
126  * @param resp - Pointer to the response message that holds a description of an error if any occurred
127  * @return code of the operation. OK if succeeded
128  */
129  virtual StatusCode GetMetric(const std::string &name, Parameter &result, ResponseDesc *resp) const noexcept = 0;
130 };
131 
132 } // namespace InferenceEngine
Definition: ie_argmax_layer.hpp:11
StatusCode
This enum contains codes for all possible return values of the interface functions.
Definition: ie_common.h:205
This is a header file for the ICNNNetwork class.
a header file for IInferRequest interface
a header file for IMemoryState interface
std::map< std::string, CDataPtr > ConstOutputsDataMap
A collection that contains string as key, and const Data smart pointer as value.
Definition: ie_iexecutable_network.hpp:28
virtual StatusCode Export(const std::string &modelFileName, ResponseDesc *resp) noexcept=0
Exports the current executable network so it can be used later in the Import() main API...
virtual StatusCode GetExecGraphInfo(ICNNNetwork::Ptr &graphPtr, ResponseDesc *resp) noexcept=0
Get executable graph information from a device.
Represents detailed information for an error.
Definition: ie_common.h:228
virtual StatusCode SetConfig(const std::map< std::string, Parameter > &config, ResponseDesc *resp) noexcept=0
Sets configuration for current executable network.
virtual StatusCode GetMappedTopology(std::map< std::string, std::vector< PrimitiveInfo::Ptr >> &deployedTopology, ResponseDesc *resp) noexcept=0
Get the mapping of IR layer names to implemented kernels.
std::map< std::string, InputInfo::CPtr > ConstInputsDataMap
A collection that contains string as key, and const InputInfo smart pointer as value.
Definition: ie_input_info.hpp:203
virtual StatusCode GetOutputsInfo(ConstOutputsDataMap &out, ResponseDesc *resp) const noexcept=0
Gets the Executable network output Data node information. The received info is stored in the given Co...
virtual StatusCode QueryState(IMemoryState::Ptr &pState, size_t idx, ResponseDesc *resp) noexcept=0
Gets state control interface for given executable network, State control essential for recurrent netw...
virtual StatusCode GetInputsInfo(ConstInputsDataMap &inputs, ResponseDesc *resp) const noexcept=0
Gets the Executable network input Data node information. The received info is stored in the given Con...
virtual StatusCode CreateInferRequest(IInferRequest::Ptr &req, ResponseDesc *resp) noexcept=0
Creates an inference request object used to infer the network. The created request has allocated inpu...
This class represents an object to work with different parameters.
Definition: ie_parameter.hpp:27
This is an interface of an executable network.
Definition: ie_iexecutable_network.hpp:33
A header file for the PrimitiveInfo struct.
virtual StatusCode GetConfig(const std::string &name, Parameter &result, ResponseDesc *resp) const noexcept=0
Gets configuration for current executable network. The method is responsible to extract information w...
a header file for InputInfo class
std::shared_ptr< IExecutableNetwork > Ptr
A smart pointer to the current IExecutableNetwork object.
Definition: ie_iexecutable_network.hpp:38
virtual StatusCode GetMetric(const std::string &name, Parameter &result, ResponseDesc *resp) const noexcept=0
Gets general runtime metric for an executable network. It can be network name, actual device ID on wh...
This is a header file with common inference engine definitions.