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