ie_plugin_cpp.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 This is a header file for the Inference Engine plugin C++ API
7  * @file ie_plugin_cpp.hpp
8  */
9 #pragma once
10 
11 #include <map>
12 #include <string>
13 #include <memory>
14 
15 #include "ie_plugin.hpp"
18 #include "ie_plugin_ptr.hpp"
19 #include "ie_cnn_network.h"
20 
21 
22 namespace InferenceEngine {
23 
24 /**
25  * @brief This class is a C++ API wrapper for IInferencePlugin.
26  * It can throw exceptions safely for the application, where it is properly handled.
27  */
30 
31 public:
32  /** @brief A default constructor */
33  InferencePlugin() = default;
34 
35  /**
36  * @brief Constructs a plugin instance from the given pointer.
37  */
38  explicit InferencePlugin(const InferenceEnginePluginPtr &pointer) : actual(pointer) {}
39 
40  /**
41  * @brief Wraps original method
42  * IInferencePlugin::GetVersion
43  */
44  const Version *GetVersion() {
45  const Version *versionInfo = nullptr;
46  actual->GetVersion(versionInfo);
47  if (versionInfo == nullptr) {
48  THROW_IE_EXCEPTION << "Unknown device is used";
49  }
50  return versionInfo;
51  }
52 
53  /**
54  * @deprecated Use InferencePlugin::LoadNetwork(ICNNNetwork &, const std::map<std::string, std::string> &)
55  * @brief Wraps original method IInferencePlugin::LoadNetwork(ICNNNetwork &, ResponseDesc *)
56  */
57  INFERENCE_ENGINE_DEPRECATED
58  void LoadNetwork(ICNNNetwork &network) {
59  IE_SUPPRESS_DEPRECATED_START
60  CALL_STATUS_FNC(LoadNetwork, network);
61  IE_SUPPRESS_DEPRECATED_END
62  }
63 
64  /**
65  * @brief Wraps original method
66  * IInferencePlugin::LoadNetwork(IExecutableNetwork::Ptr&, ICNNNetwork&, const std::map<std::string, std::string> &, ResponseDesc*).
67  */
68  ExecutableNetwork LoadNetwork(ICNNNetwork &network, const std::map<std::string, std::string> &config) {
70  CALL_STATUS_FNC(LoadNetwork, ret, network, config);
71  return ExecutableNetwork(ret, actual);
72  }
73 
74  /**
75  * @brief Wraps original method
76  * IInferencePlugin::LoadNetwork(IExecutableNetwork::Ptr&, ICNNNetwork&, const std::map<std::string, std::string> &, ResponseDesc*).
77  */
78  ExecutableNetwork LoadNetwork(CNNNetwork network, const std::map<std::string, std::string> &config) {
80  CALL_STATUS_FNC(LoadNetwork, ret, network, config);
81  if (ret.get() == nullptr) THROW_IE_EXCEPTION << "Internal error: pointer to executable network is null";
82  return ExecutableNetwork(ret, actual);
83  }
84 
85  /**
86  * @deprecated Use IExecutableNetwork to create IInferRequest.
87  * @brief Wraps original method IInferencePlugin::Infer(const BlobMap&, BlobMap&, ResponseDesc *)
88  */
89  INFERENCE_ENGINE_DEPRECATED
90  void Infer(const BlobMap &input, BlobMap &result) {
91  IE_SUPPRESS_DEPRECATED_START
92  CALL_STATUS_FNC(Infer, input, result);
93  IE_SUPPRESS_DEPRECATED_END
94  }
95 
96  /**
97  * @deprecated Use IInferRequest to get performance counters
98  * @brief Wraps original method IInferencePlugin::GetPerformanceCounts
99  */
100  INFERENCE_ENGINE_DEPRECATED
101  std::map<std::string, InferenceEngineProfileInfo> GetPerformanceCounts() const {
102  std::map<std::string, InferenceEngineProfileInfo> perfMap;
103  IE_SUPPRESS_DEPRECATED_START
104  CALL_STATUS_FNC(GetPerformanceCounts, perfMap);
105  IE_SUPPRESS_DEPRECATED_END
106  return perfMap;
107  }
108 
109  /**
110  * @brief Wraps original method
111  * IInferencePlugin::AddExtension
112  */
113  void AddExtension(InferenceEngine::IExtensionPtr extension) {
114  CALL_STATUS_FNC(AddExtension, extension);
115  }
116 
117  /**
118  * @brief Wraps original method
119  * IInferencePlugin::SetConfig
120  */
121  void SetConfig(const std::map<std::string, std::string> &config) {
122  CALL_STATUS_FNC(SetConfig, config);
123  }
124 
125  /**
126  * @brief Wraps original method
127  * IInferencePlugin::ImportNetwork
128  */
129  ExecutableNetwork ImportNetwork(const std::string &modelFileName, const std::map<std::string, std::string> &config) {
131  CALL_STATUS_FNC(ImportNetwork, ret, modelFileName, config);
132  return ExecutableNetwork(ret, actual);
133  }
134 
135  /**
136  * @deprecated Use InferencePlugin::QueryNetwork(const ICNNNetwork &, const std::map<std::string, std::string> &, QueryNetworkResult &) const
137  * @brief Wraps original method
138  * IInferencePlugin::QueryNetwork(const ICNNNetwork&, QueryNetworkResult& ) const
139  */
140  INFERENCE_ENGINE_DEPRECATED
141  void QueryNetwork(const ICNNNetwork &network, QueryNetworkResult &res) const {
142  QueryNetwork(network, { }, res);
143  }
144 
145  /**
146  * @brief Wraps original method
147  * IInferencePlugin::QueryNetwork(const ICNNNetwork&, const std::map<std::string, std::string> &, QueryNetworkResult&) const
148  */
149  void QueryNetwork(const ICNNNetwork &network, const std::map<std::string, std::string> &config, QueryNetworkResult &res) const {
150  actual->QueryNetwork(network, config, res);
151  if (res.rc != OK) THROW_IE_EXCEPTION << res.resp.msg;
152  }
153 
154  /**
155  * @brief Converts InferenceEngine to InferenceEnginePluginPtr pointer
156  * @brief Returns wrapped object
157  */
159  return actual;
160  }
161 
162  /**
163  * @deprecated Deprecated since HeteroPluginPtr is deprecated
164  * @brief Converts InferenceEngine to HeteroPluginPtr pointer
165  * @return wrapped Hetero object if underlined object is HeteroPlugin instance, nullptr otherwise
166  */
167  IE_SUPPRESS_DEPRECATED_START
169  return actual;
170  }
171  IE_SUPPRESS_DEPRECATED_END
172 
173  /**
174  * @brief Shared pointer on InferencePlugin object
175  */
176  using Ptr = std::shared_ptr<InferencePlugin>;
177 };
178 } // namespace InferenceEngine
#define THROW_IE_EXCEPTION
A macro used to throw the exception with a notable description.
Definition: ie_exception.hpp:22
InferenceEngine::details::SOPointer< IInferencePlugin > InferenceEnginePluginPtr
A C++ helper to work with objects created by the plugin. Implements different interfaces.
Definition: ie_plugin_ptr.hpp:52
A header file that provides wrapper classes for IExecutableNetwork.
A header file that provides wrapper for ICNNNetwork object.
ExecutableNetwork LoadNetwork(CNNNetwork network, const std::map< std::string, std::string > &config)
Wraps original method IInferencePlugin::LoadNetwork(IExecutableNetwork::Ptr&, ICNNNetwork&, const std::map<std::string, std::string> &, ResponseDesc*).
Definition: ie_plugin_cpp.hpp:78
Definition: ie_argmax_layer.hpp:11
Represents version information that describes plugins and the inference engine runtime library...
Definition: ie_version.hpp:20
This class is a C++ API wrapper for IInferencePlugin. It can throw exceptions safely for the applicat...
Definition: ie_plugin_cpp.hpp:28
A header file for Main Inference Engine API.
A header file that provides macros to handle no exception methods.
ResponseDesc resp
Response mssage.
Definition: ie_plugin.hpp:69
InferencePlugin()=default
A default constructor.
InferenceEngine::details::SOPointer< IHeteroInferencePlugin > HeteroPluginPtr
Definition: ie_plugin_ptr.hpp:56
A header file contains a wrapper class for handling plugin instantiation and releasing resources...
void LoadNetwork(ICNNNetwork &network)
Wraps original method IInferencePlugin::LoadNetwork(ICNNNetwork &, ResponseDesc *) ...
Definition: ie_plugin_cpp.hpp:58
void QueryNetwork(const ICNNNetwork &network, QueryNetworkResult &res) const
Wraps original method IInferencePlugin::QueryNetwork(const ICNNNetwork&, QueryNetworkResult& ) const...
Definition: ie_plugin_cpp.hpp:141
std::map< std::string, InferenceEngineProfileInfo > GetPerformanceCounts() const
Wraps original method IInferencePlugin::GetPerformanceCounts.
Definition: ie_plugin_cpp.hpp:101
void AddExtension(InferenceEngine::IExtensionPtr extension)
Wraps original method IInferencePlugin::AddExtension.
Definition: ie_plugin_cpp.hpp:113
void Infer(const BlobMap &input, BlobMap &result)
Wraps original method IInferencePlugin::Infer(const BlobMap&, BlobMap&, ResponseDesc *) ...
Definition: ie_plugin_cpp.hpp:90
This is the main interface to describe the NN topology.
Definition: ie_icnn_network.hpp:35
wrapper over IExecutableNetwork
Definition: ie_executable_network.hpp:28
std::shared_ptr< InferencePlugin > Ptr
Shared pointer on InferencePlugin object.
Definition: ie_plugin_cpp.hpp:176
This class contains all the information about the Neural Network and the related binary information...
Definition: ie_cnn_network.h:29
StatusCode rc
A status code.
Definition: ie_plugin.hpp:64
std::map< std::string, Blob::Ptr > BlobMap
This is a convenient type for working with a map containing pairs(string, pointer to a Blob instance)...
Definition: ie_blob.h:478
ExecutableNetwork LoadNetwork(ICNNNetwork &network, const std::map< std::string, std::string > &config)
Wraps original method IInferencePlugin::LoadNetwork(IExecutableNetwork::Ptr&, ICNNNetwork&, const std::map<std::string, std::string> &, ResponseDesc*).
Definition: ie_plugin_cpp.hpp:68
const Version * GetVersion()
Wraps original method IInferencePlugin::GetVersion.
Definition: ie_plugin_cpp.hpp:44
void SetConfig(const std::map< std::string, std::string > &config)
Wraps original method IInferencePlugin::SetConfig.
Definition: ie_plugin_cpp.hpp:121
char msg[256]
A character buffer that holds the detailed information for an error.
Definition: ie_common.h:232
void QueryNetwork(const ICNNNetwork &network, const std::map< std::string, std::string > &config, QueryNetworkResult &res) const
Wraps original method IInferencePlugin::QueryNetwork(const ICNNNetwork&, const std::map<std::string, std::string> &, QueryNetworkResult&) const.
Definition: ie_plugin_cpp.hpp:149
std::shared_ptr< IExecutableNetwork > Ptr
A smart pointer to the current IExecutableNetwork object.
Definition: ie_iexecutable_network.hpp:38
Responce structure encapsulating information about supported layer.
Definition: ie_plugin.hpp:46
ExecutableNetwork ImportNetwork(const std::string &modelFileName, const std::map< std::string, std::string > &config)
Wraps original method IInferencePlugin::ImportNetwork.
Definition: ie_plugin_cpp.hpp:129
InferencePlugin(const InferenceEnginePluginPtr &pointer)
Constructs a plugin instance from the given pointer.
Definition: ie_plugin_cpp.hpp:38