This reverts commit 5b18677f1b.
This commit is contained in:
parent
070f27a089
commit
8ab5dbade0
|
|
@ -39,7 +39,6 @@
|
||||||
#include "plugin.hpp"
|
#include "plugin.hpp"
|
||||||
#include <ie_algorithm.hpp>
|
#include <ie_algorithm.hpp>
|
||||||
|
|
||||||
#include <ngraph/pass/manager.hpp>
|
|
||||||
#include <ngraph/function.hpp>
|
#include <ngraph/function.hpp>
|
||||||
#include <ngraph/variant.hpp>
|
#include <ngraph/variant.hpp>
|
||||||
#include <ngraph/graph_util.hpp>
|
#include <ngraph/graph_util.hpp>
|
||||||
|
|
@ -48,7 +47,6 @@
|
||||||
#include <ngraph/op/util/op_types.hpp>
|
#include <ngraph/op/util/op_types.hpp>
|
||||||
#include <ngraph/rt_info.hpp>
|
#include <ngraph/rt_info.hpp>
|
||||||
#include <ngraph/pass/visualize_tree.hpp>
|
#include <ngraph/pass/visualize_tree.hpp>
|
||||||
#include <ngraph/pass/constant_folding.hpp>
|
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
using namespace InferenceEngine;
|
using namespace InferenceEngine;
|
||||||
|
|
@ -60,22 +58,17 @@ using namespace InferenceEngine::HeteroConfigParams;
|
||||||
template <typename T>
|
template <typename T>
|
||||||
using NodeMap = std::unordered_map<ngraph::Node*, T>;
|
using NodeMap = std::unordered_map<ngraph::Node*, T>;
|
||||||
|
|
||||||
HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwork& originalNetwork,
|
HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwork& network,
|
||||||
const Engine::Configs& config,
|
const Engine::Configs& config,
|
||||||
Engine* plugin)
|
Engine* plugin)
|
||||||
: InferenceEngine::ExecutableNetworkThreadSafeDefault(nullptr,
|
: InferenceEngine::ExecutableNetworkThreadSafeDefault(nullptr,
|
||||||
std::make_shared<InferenceEngine::ImmediateExecutor>()),
|
std::make_shared<InferenceEngine::ImmediateExecutor>()),
|
||||||
_heteroPlugin{plugin},
|
_heteroPlugin{plugin},
|
||||||
_name{originalNetwork.getName()},
|
_name{network.getName()},
|
||||||
_config{config} {
|
_config{config} {
|
||||||
auto clonned_network = InferenceEngine::details::cloneNetwork(originalNetwork);
|
auto function = network.getFunction();
|
||||||
auto clonned_function = clonned_network.getFunction();
|
IE_ASSERT(function != nullptr);
|
||||||
IE_ASSERT(clonned_function != nullptr);
|
auto clonedFunction = ngraph::clone_function(*function);
|
||||||
|
|
||||||
ngraph::pass::Manager manager;
|
|
||||||
manager.register_pass<ngraph::pass::ConstantFolding>();
|
|
||||||
manager.run_passes(clonned_function);
|
|
||||||
|
|
||||||
bool dumpDotFile = false;
|
bool dumpDotFile = false;
|
||||||
if (std::getenv("OPENVINO_HETERO_VISUALIZE")) {
|
if (std::getenv("OPENVINO_HETERO_VISUALIZE")) {
|
||||||
dumpDotFile = true;
|
dumpDotFile = true;
|
||||||
|
|
@ -85,7 +78,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryNetworkResult queryNetworkResult;
|
QueryNetworkResult queryNetworkResult;
|
||||||
auto orderedOps = clonned_function->get_ordered_ops();
|
auto orderedOps = clonedFunction->get_ordered_ops();
|
||||||
bool allEmpty = true;
|
bool allEmpty = true;
|
||||||
// Get user defined affinity
|
// Get user defined affinity
|
||||||
for (auto&& node : orderedOps) {
|
for (auto&& node : orderedOps) {
|
||||||
|
|
@ -104,7 +97,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo
|
||||||
it = _config.find(ov::device::priorities.name());
|
it = _config.find(ov::device::priorities.name());
|
||||||
}
|
}
|
||||||
if (it != _config.end()) {
|
if (it != _config.end()) {
|
||||||
queryNetworkResult = _heteroPlugin->QueryNetwork(clonned_network, _config);
|
queryNetworkResult = _heteroPlugin->QueryNetwork(network, _config);
|
||||||
} else {
|
} else {
|
||||||
IE_THROW() << "The '" << ov::device::priorities.name()
|
IE_THROW() << "The '" << ov::device::priorities.name()
|
||||||
<< "' option was not defined for heterogeneous plugin";
|
<< "' option was not defined for heterogeneous plugin";
|
||||||
|
|
@ -120,7 +113,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo
|
||||||
};
|
};
|
||||||
|
|
||||||
// Set results, constants and parameters affinity
|
// Set results, constants and parameters affinity
|
||||||
for (auto&& node : clonned_function->get_ops()) {
|
for (auto&& node : clonedFunction->get_ops()) {
|
||||||
if (ngraph::op::is_constant(node) || ngraph::op::is_output(node) || ngraph::op::is_parameter(node)) {
|
if (ngraph::op::is_constant(node) || ngraph::op::is_output(node) || ngraph::op::is_parameter(node)) {
|
||||||
if (!contains(queryNetworkResult.supportedLayersMap, node->get_friendly_name())) {
|
if (!contains(queryNetworkResult.supportedLayersMap, node->get_friendly_name())) {
|
||||||
auto& nodeWithAffinityName =
|
auto& nodeWithAffinityName =
|
||||||
|
|
@ -201,7 +194,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo
|
||||||
colorIndex++;
|
colorIndex++;
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
.run_on_model(ngraph::clone_function(*clonned_function));
|
.run_on_model(ngraph::clone_function(*function));
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeMap<InputSet> nodeInputDependencies;
|
NodeMap<InputSet> nodeInputDependencies;
|
||||||
|
|
@ -334,7 +327,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo
|
||||||
itLabel->pop_back();
|
itLabel->pop_back();
|
||||||
(*itLabel) += label;
|
(*itLabel) += label;
|
||||||
}}
|
}}
|
||||||
.run_on_model(std::const_pointer_cast<ov::Model>(clonned_function));
|
.run_on_model(std::const_pointer_cast<ov::Model>(function));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Break graph using insertion of result parameter split
|
// Break graph using insertion of result parameter split
|
||||||
|
|
@ -451,8 +444,8 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo
|
||||||
std::move(std::begin(newOrderedSubgraphs), std::end(newOrderedSubgraphs), std::back_inserter(orderedSubgraphs));
|
std::move(std::begin(newOrderedSubgraphs), std::end(newOrderedSubgraphs), std::back_inserter(orderedSubgraphs));
|
||||||
} while (!allSubgraphs.empty());
|
} while (!allSubgraphs.empty());
|
||||||
|
|
||||||
InputsDataMap externalInputsData = clonned_network.getInputsInfo();
|
InputsDataMap externalInputsData = network.getInputsInfo();
|
||||||
OutputsDataMap externalOutputsData = clonned_network.getOutputsInfo();
|
OutputsDataMap externalOutputsData = network.getOutputsInfo();
|
||||||
_networks.resize(orderedSubgraphs.size());
|
_networks.resize(orderedSubgraphs.size());
|
||||||
std::vector<std::shared_ptr<ngraph::Function>> subFunctions(orderedSubgraphs.size());
|
std::vector<std::shared_ptr<ngraph::Function>> subFunctions(orderedSubgraphs.size());
|
||||||
int id = 0;
|
int id = 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue