ie_iexecutable_network.hpp
Go to the documentation of this file.
1 // Copyright (C) 2018-2020 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4 
5 /**
6  * @brief a header file for IExecutableNetwork interface
7  *
8  * @file ie_iexecutable_network.hpp
9  */
10 #pragma once
11 
12 #include <map>
13 #include <memory>
14 #include <string>
15 #include <vector>
16 
17 #include "ie_common.h"
18 #include "ie_icnn_network.hpp"
19 #include "ie_iinfer_request.hpp"
20 #include "ie_imemory_state.hpp"
21 #include "ie_input_info.hpp"
22 #include "ie_parameter.hpp"
23 #include "ie_primitive_info.hpp"
24 #include "ie_remote_context.hpp"
25 
26 namespace InferenceEngine {
27 
28 /**
29  * @brief A collection that contains string as key, and const Data smart pointer as value
30  */
31 using ConstOutputsDataMap = std::map<std::string, CDataPtr>;
32 
33 /**
34  * @brief This is an interface of an executable network
35  */
36 class IExecutableNetwork : public details::IRelease {
37 public:
38  /**
39  * @brief A smart pointer to the current IExecutableNetwork object
40  */
41  using Ptr = std::shared_ptr<IExecutableNetwork>;
42 
43  /**
44  * @brief Gets the Executable network output Data node information.
45  *
46  * The received info is stored in the given ::ConstOutputsDataMap node.
47  * This method need to be called to find output names for using them later during filling of a map
48  * of blobs passed to InferenceEngine::IInferencePlugin::Infer()
49  *
50  * @param out Reference to the ::ConstOutputsDataMap object
51  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
52  * @return Status code of the operation: InferenceEngine::OK (0) for success
53  */
54  virtual StatusCode GetOutputsInfo(ConstOutputsDataMap& out, ResponseDesc* resp) const noexcept = 0;
55 
56  /**
57  * @brief Gets the executable network input Data node information.
58  *
59  * The received info is stored in the given ::ConstInputsDataMap object.
60  * This method need to be called to find out input names for using them later during filling of a map
61  * of blobs passed to InferenceEngine::IInferencePlugin::Infer()
62  *
63  * @param inputs Reference to ::ConstInputsDataMap 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: InferenceEngine::OK (0) for success
66  */
67  virtual StatusCode GetInputsInfo(ConstInputsDataMap& inputs, ResponseDesc* resp) const noexcept = 0;
68 
69  /**
70  * @brief Creates an inference request object used to infer the network.
71  *
72  * The created request has allocated input and output blobs (that can be changed later).
73  *
74  * @param req Shared pointer to the created request object
75  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
76  * @return Status code of the operation: InferenceEngine::OK (0) for success
77  */
78  virtual StatusCode CreateInferRequest(IInferRequest::Ptr& req, ResponseDesc* resp) noexcept = 0;
79 
80  /**
81  * @brief Exports the current executable network.
82  *
83  * @see Core::ImportNetwork
84  * @see IInferencePlugin::ImportNetwork
85  *
86  * @param modelFileName Full path to the location of the exported file
87  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
88  * @return Status code of the operation: InferenceEngine::OK (0) for success
89  */
90  virtual StatusCode Export(const std::string& modelFileName, ResponseDesc* resp) noexcept = 0;
91 
92  /**
93  * @brief Exports the current executable network.
94  *
95  * @see Core::ImportNetwork
96  * @see IInferencePlugin::ImportNetwork
97  *
98  * @param networkModel Network model output stream
99  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
100  * @return Status code of the operation: InferenceEngine::OK (0) for success
101  */
102  virtual StatusCode Export(std::ostream& networkModel, ResponseDesc* resp) noexcept = 0;
103 
104  /**
105  * @deprecated Use ExecutableNetwork::GetExecGraphInfo to get information about an internal graph.
106  * The method will be removed in 2021.1 release.
107  * @brief Get the mapping of IR layer names to implemented kernels
108  *
109  * @param deployedTopology Map of PrimitiveInfo objects that represent the deployed topology
110  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
111  * @return Status code of the operation: InferenceEngine::OK (0) for success
112  */
113  IE_SUPPRESS_DEPRECATED_START_WIN
114  INFERENCE_ENGINE_DEPRECATED("Use ExecutableNetwork::GetExecGraphInfo to get information about an internal graph")
115  virtual StatusCode GetMappedTopology(std::map<std::string, std::vector<PrimitiveInfo::Ptr>>& deployedTopology,
116  ResponseDesc* resp) noexcept = 0;
117  IE_SUPPRESS_DEPRECATED_END_WIN
118 
119  /**
120  * @brief Get executable graph information from a device
121  *
122  * @param graphPtr network ptr to store executable graph information
123  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
124  * @return Status code of the operation: InferenceEngine::OK (0) for success
125  */
126  virtual StatusCode GetExecGraphInfo(ICNNNetwork::Ptr& graphPtr, ResponseDesc* resp) noexcept = 0;
127 
128  /**
129  * @brief Gets state control interface for given executable network.
130  *
131  * State control essential for recurrent networks
132  *
133  * @param pState reference to a pointer that receives internal states
134  * @param idx requested index for receiving memory state
135  * @param resp Optional: pointer to an already allocated object to contain information in case of failure
136  * @return Status code of the operation: InferenceEngine::OK (0) for success, OUT_OF_BOUNDS (-6) no memory state for
137  * given index
138  */
139  virtual StatusCode QueryState(IMemoryState::Ptr& pState, size_t idx, ResponseDesc* resp) noexcept = 0;
140 
141  /**
142  * @brief Sets configuration for current executable network
143  *
144  * @param config Map of pairs: (config parameter name, config parameter value)
145  * @param resp Pointer to the response message that holds a description of an error if any occurred
146  * @return code of the operation. InferenceEngine::OK if succeeded
147  */
148  virtual StatusCode SetConfig(const std::map<std::string, Parameter>& config, ResponseDesc* resp) noexcept = 0;
149 
150  /** @brief Gets configuration for current executable network.
151  *
152  * The method is responsible to extract information
153  * which affects executable network execution. The list of supported configuration values can be extracted via
154  * ExecutableNetwork::GetMetric with the SUPPORTED_CONFIG_KEYS key, but some of these keys cannot be changed
155  * dymanically, e.g. DEVICE_ID cannot changed if an executable network has already been compiled for particular
156  * device.
157  *
158  * @param name config key, can be found in ie_plugin_config.hpp
159  * @param result value of config corresponding to config key
160  * @param resp Pointer to the response message that holds a description of an error if any occurred
161  * @return code of the operation. InferenceEngine::OK if succeeded
162  */
163  virtual StatusCode GetConfig(const std::string& name, Parameter& result, ResponseDesc* resp) const noexcept = 0;
164 
165  /**
166  * @brief Gets general runtime metric for an executable network.
167  *
168  * It can be network name, actual device ID on
169  * which executable network is running or all other properties which cannot be changed dynamically.
170  *
171  * @param name metric name to request
172  * @param result metric value corresponding to metric key
173  * @param resp Pointer to the response message that holds a description of an error if any occurred
174  * @return code of the operation. InferenceEngine::OK if succeeded
175  */
176  virtual StatusCode GetMetric(const std::string& name, Parameter& result, ResponseDesc* resp) const noexcept = 0;
177 
178  /**
179  * @brief Gets shared context used to create an executable network.
180  *
181  * @param pContext Refernce to a pointer that will receive resulting shared context object ptr
182  * @param resp Pointer to the response message that holds a description of an error if any occurred
183  * @return code of the operation. InferenceEngine::OK if succeeded
184  */
185  virtual StatusCode GetContext(RemoteContext::Ptr& pContext, ResponseDesc* resp) const noexcept = 0;
186 };
187 
188 } // namespace InferenceEngine
Inference Engine API.
Definition: ie_argmax_layer.hpp:15
manages data for reset operations
Definition: ie_imemory_state.hpp:24
std::string name
Layer name.
Definition: ie_layers.h:42
This is a header file for the ICNNNetwork class.
a header file for IInferRequest interface
This is a header file for the IE RemoteContext and RemoteBlob classes.
a header file for IMemoryState interface
virtual StatusCode Export(const std::string &modelFileName, ResponseDesc *resp) noexcept=0
Exports the current executable network.
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:247
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:31
StatusCode
This enum contains codes for all possible return values of the interface functions.
Definition: ie_common.h:224
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.
This is the main interface to describe the NN topology.
Definition: ie_icnn_network.hpp:43
virtual StatusCode GetOutputsInfo(ConstOutputsDataMap &out, ResponseDesc *resp) const noexcept=0
Gets the Executable network output Data node information.
A header file for the Parameter class.
virtual StatusCode QueryState(IMemoryState::Ptr &pState, size_t idx, ResponseDesc *resp) noexcept=0
Gets state control interface for given executable network.
This class represents an Inference Engine abstraction for remote (non-CPU) accelerator device-specifi...
Definition: ie_remote_context.hpp:94
virtual StatusCode GetInputsInfo(ConstInputsDataMap &inputs, ResponseDesc *resp) const noexcept=0
Gets the executable network input Data node information.
virtual StatusCode CreateInferRequest(IInferRequest::Ptr &req, ResponseDesc *resp) noexcept=0
Creates an inference request object used to infer the network.
This class represents an object to work with different parameters.
Definition: ie_parameter.hpp:37
This is an interface of an executable network.
Definition: ie_iexecutable_network.hpp:36
virtual StatusCode GetContext(RemoteContext::Ptr &pContext, ResponseDesc *resp) const noexcept=0
Gets shared context used to create an executable network.
A header file for the PrimitiveInfo struct.
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:165
virtual StatusCode GetConfig(const std::string &name, Parameter &result, ResponseDesc *resp) const noexcept=0
Gets configuration for current executable network.
a header file for InputInfo class
std::shared_ptr< IExecutableNetwork > Ptr
A smart pointer to the current IExecutableNetwork object.
Definition: ie_iexecutable_network.hpp:41
virtual StatusCode GetMetric(const std::string &name, Parameter &result, ResponseDesc *resp) const noexcept=0
Gets general runtime metric for an executable network.
Structure with information about Primitive.
Definition: ie_primitive_info.hpp:27
This is a header file with common inference engine definitions.
std::shared_ptr< IInferRequest > Ptr
A shared pointer to the IInferRequest object.
Definition: ie_iinfer_request.hpp:44