From 8ab5dbade0cb9fd6df37526ef6ade237da7064ed Mon Sep 17 00:00:00 2001 From: Ilya Churaev Date: Fri, 1 Apr 2022 10:16:14 +0300 Subject: [PATCH] Revert "Add constant folding to hetero to avoid dynamism on GPU (#10572)" (#11370) This reverts commit 5b18677f1bb2a7e5561cd4786e77b93491c9ff3d. --- src/plugins/hetero/executable_network.cpp | 31 +++++++++-------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/src/plugins/hetero/executable_network.cpp b/src/plugins/hetero/executable_network.cpp index 58e1c87d726..6c587add0a7 100644 --- a/src/plugins/hetero/executable_network.cpp +++ b/src/plugins/hetero/executable_network.cpp @@ -39,7 +39,6 @@ #include "plugin.hpp" #include -#include #include #include #include @@ -48,7 +47,6 @@ #include #include #include -#include // clang-format on using namespace InferenceEngine; @@ -60,22 +58,17 @@ using namespace InferenceEngine::HeteroConfigParams; template using NodeMap = std::unordered_map; -HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwork& originalNetwork, +HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwork& network, const Engine::Configs& config, Engine* plugin) : InferenceEngine::ExecutableNetworkThreadSafeDefault(nullptr, std::make_shared()), _heteroPlugin{plugin}, - _name{originalNetwork.getName()}, + _name{network.getName()}, _config{config} { - auto clonned_network = InferenceEngine::details::cloneNetwork(originalNetwork); - auto clonned_function = clonned_network.getFunction(); - IE_ASSERT(clonned_function != nullptr); - - ngraph::pass::Manager manager; - manager.register_pass(); - manager.run_passes(clonned_function); - + auto function = network.getFunction(); + IE_ASSERT(function != nullptr); + auto clonedFunction = ngraph::clone_function(*function); bool dumpDotFile = false; if (std::getenv("OPENVINO_HETERO_VISUALIZE")) { dumpDotFile = true; @@ -85,7 +78,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo } QueryNetworkResult queryNetworkResult; - auto orderedOps = clonned_function->get_ordered_ops(); + auto orderedOps = clonedFunction->get_ordered_ops(); bool allEmpty = true; // Get user defined affinity for (auto&& node : orderedOps) { @@ -104,7 +97,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo it = _config.find(ov::device::priorities.name()); } if (it != _config.end()) { - queryNetworkResult = _heteroPlugin->QueryNetwork(clonned_network, _config); + queryNetworkResult = _heteroPlugin->QueryNetwork(network, _config); } else { IE_THROW() << "The '" << ov::device::priorities.name() << "' option was not defined for heterogeneous plugin"; @@ -120,7 +113,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo }; // 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 (!contains(queryNetworkResult.supportedLayersMap, node->get_friendly_name())) { auto& nodeWithAffinityName = @@ -201,7 +194,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo colorIndex++; } }} - .run_on_model(ngraph::clone_function(*clonned_function)); + .run_on_model(ngraph::clone_function(*function)); } NodeMap nodeInputDependencies; @@ -334,7 +327,7 @@ HeteroExecutableNetwork::HeteroExecutableNetwork(const InferenceEngine::CNNNetwo itLabel->pop_back(); (*itLabel) += label; }} - .run_on_model(std::const_pointer_cast(clonned_function)); + .run_on_model(std::const_pointer_cast(function)); } // 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)); } while (!allSubgraphs.empty()); - InputsDataMap externalInputsData = clonned_network.getInputsInfo(); - OutputsDataMap externalOutputsData = clonned_network.getOutputsInfo(); + InputsDataMap externalInputsData = network.getInputsInfo(); + OutputsDataMap externalOutputsData = network.getOutputsInfo(); _networks.resize(orderedSubgraphs.size()); std::vector> subFunctions(orderedSubgraphs.size()); int id = 0;