CMAKE: moved GNA var setting to proper place; removed find_package when build python...
[platform/upstream/dldt.git] / inference-engine / src / hetero_plugin / hetero_plugin.hpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #pragma once
6 #include "inference_engine.hpp"
7 #include "description_buffer.hpp"
8 #include "ie_icore.hpp"
9 #include "ie_error.hpp"
10 #include "cpp_interfaces/impl/ie_plugin_internal.hpp"
11 #include "cpp/ie_plugin_cpp.hpp"
12 #include <memory>
13 #include <string>
14 #include <map>
15 #include <unordered_map>
16 #include <vector>
17 #include <utility>
18
19
20 namespace HeteroPlugin {
21
22 class Engine : public InferenceEngine::InferencePluginInternal {
23 public:
24     using Plugins = std::unordered_map<std::string, InferenceEngine::InferencePlugin>;
25     using Configs = std::map<std::string, std::string>;
26     using Devices = std::vector<std::string>;
27
28     Engine();
29
30     void GetVersion(const InferenceEngine::Version *&versionInfo) noexcept;
31
32     InferenceEngine::ExecutableNetworkInternal::Ptr
33     LoadExeNetworkImpl(const InferenceEngine::ICore * core, InferenceEngine::ICNNNetwork &network, const Configs &config) override;
34     void SetConfig(const Configs &config) override;
35
36     void SetAffinity(InferenceEngine::ICNNNetwork& network, const Configs &config);
37
38     void AddExtension(InferenceEngine::IExtensionPtr extension)override;
39
40     void SetLogCallback(InferenceEngine::IErrorListener &listener) override;
41
42     void QueryNetwork(const InferenceEngine::ICNNNetwork &network,
43                       const Configs& config, InferenceEngine::QueryNetworkResult &res) const override;
44
45     InferenceEngine::Parameter GetMetric(const std::string& name,
46         const std::map<std::string, InferenceEngine::Parameter> & options) const override;
47
48     InferenceEngine::Parameter GetConfig(const std::string& name,
49         const std::map<std::string, InferenceEngine::Parameter> & options) const override;
50
51     InferenceEngine::InferencePlugin GetDevicePlugin(const std::string& device) const;
52
53     Plugins GetDevicePlugins(const std::string& targetFallback);
54
55     Plugins GetDevicePlugins(const std::string& targetFallback) const;
56
57     static Configs GetSupportedConfig(const Configs& config, const InferenceEngine::InferencePlugin& plugin);
58
59     Plugins                                     _plugins;
60     std::vector<InferenceEngine::IExtensionPtr> _extensions;
61     InferenceEngine::IErrorListener*            _errorListener = nullptr;
62 };
63
64 struct HeteroLayerColorer {
65     explicit HeteroLayerColorer(const std::vector<std::string>& devices);
66
67     void operator() (const CNNLayerPtr layer,
68                     ordered_properties &printed_properties,
69                     ordered_properties &node_properties);
70
71     std::unordered_map<std::string, std::string> deviceColorMap;
72 };
73
74 }  // namespace HeteroPlugin