1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
6 * @brief a header file for ExecutableNetwork
7 * @file dlia_executable_network.hpp
15 #include <unordered_map>
16 #include <unordered_set>
18 #include <ie_common.h>
19 #include <cpp/ie_plugin_cpp.hpp>
20 #include <cpp_interfaces/impl/ie_executable_network_thread_safe_default.hpp>
22 #include "hetero_infer_request.hpp"
23 #include "ie_icore.hpp"
24 #include "cnn_network_impl.hpp"
25 #include "hetero_async_infer_request.hpp"
27 namespace HeteroPlugin {
32 * @class ExecutableNetwork
33 * @brief Interface of executable network
35 class HeteroExecutableNetwork : public InferenceEngine::ExecutableNetworkThreadSafeDefault {
37 typedef std::shared_ptr<HeteroExecutableNetwork> Ptr;
42 HeteroExecutableNetwork(InferenceEngine::ICNNNetwork& network,
43 const std::map<std::string, std::string>& config,
46 virtual ~HeteroExecutableNetwork() = default;
48 InferenceEngine::InferRequestInternal::Ptr CreateInferRequestImpl(InferenceEngine::InputsDataMap networkInputs,
49 InferenceEngine::OutputsDataMap networkOutputs) override;
51 void CreateInferRequest(InferenceEngine::IInferRequest::Ptr &asyncRequest) override;
53 void GetConfig(const std::string &name, InferenceEngine::Parameter &result, InferenceEngine::ResponseDesc *resp) const override;
55 void GetMetric(const std::string &name, InferenceEngine::Parameter &result, InferenceEngine::ResponseDesc *resp) const override;
60 InferenceEngine::details::CNNNetworkImplPtr _clonedNetwork;
61 InferenceEngine::ExecutableNetwork network;
62 std::unordered_set<std::string> _oNames;
63 std::unordered_set<std::string> _iNames;
65 std::vector<NetworkDesc> networks;
69 std::vector<std::string> _affinities;
70 std::map<std::string, std::string> _config;
73 } // namespace HeteroPlugin