From 6e0611566c3a4b2de7ee40d4f522204cdf6131f7 Mon Sep 17 00:00:00 2001 From: "Gladilov, Gleb" Date: Tue, 15 Sep 2020 15:28:28 +0300 Subject: [PATCH] [IE][VPU]: Merges transformations calls from LoadExeNetwork and Frontend (#2220) Signed-off-by: Gladilov, Gleb --- .../src/frontend/frontend.cpp | 60 ++++++++++--------- .../src/vpu/myriad_plugin/myriad_plugin.cpp | 26 +------- 2 files changed, 35 insertions(+), 51 deletions(-) diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp index 0a2af54a7cf..6bdcb26095d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp @@ -29,6 +29,9 @@ #include #include #include +#include +#include "vpu/ngraph/transformations/dynamic_to_static_shape.hpp" +#include "vpu/ngraph/transformations/eliminate_shapeof_after_dsr.hpp" #include namespace vpu { @@ -146,40 +149,43 @@ bool FrontEnd::isLayerSupported(const std::string& type) { } ie::ICNNNetwork::Ptr FrontEnd::convertNetwork(ie::ICNNNetwork& network) { - std::shared_ptr convertedNetwork; - // disable transformations for some cases - const auto transformationsPredicate = [](const std::shared_ptr &node) -> bool { - const bool casesWithDynamicOrStaticUsage = std::dynamic_pointer_cast(node) || - std::dynamic_pointer_cast(node); + std::shared_ptr convertedNetwork; + // disable transformations for some cases + const auto transformationsPredicate = [](const std::shared_ptr& node) -> bool { + const bool casesWithDynamicOrStaticUsage = + std::dynamic_pointer_cast(node) || std::dynamic_pointer_cast(node); - const bool casesWithOnlyDynamicUsage = (std::dynamic_pointer_cast(node) || - std::dynamic_pointer_cast(node)) && - std::dynamic_pointer_cast(node->input_value(0).get_node_shared_ptr()); + const bool casesWithOnlyDynamicUsage = + (std::dynamic_pointer_cast(node) || + std::dynamic_pointer_cast(node)) && + std::dynamic_pointer_cast(node->input_value(0).get_node_shared_ptr()); - return casesWithDynamicOrStaticUsage || casesWithOnlyDynamicUsage; - }; + return casesWithDynamicOrStaticUsage || casesWithOnlyDynamicUsage; + }; - auto nGraphFunc = network.getFunction(); - // Disable shape inference (WA for generic operations) - ngraph::op::GenericIE::DisableReshape noReshape(nGraphFunc); + auto nGraphFunc = network.getFunction(); + // Disable shape inference (WA for generic operations) + ngraph::op::GenericIE::DisableReshape noReshape(nGraphFunc); - ngraph::pass::Manager manager; + ngraph::pass::Manager manager; + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.register_pass(); + manager.set_callback(transformationsPredicate); + manager.run_passes(nGraphFunc); - manager.register_pass(); - manager.register_pass(); - manager.register_pass(); - manager.register_pass(); - manager.set_callback(transformationsPredicate); - manager.run_passes(nGraphFunc); + ngraph::pass::Manager ti_manager; + ti_manager.register_pass(manager); + ti_manager.run_passes(nGraphFunc); - ngraph::pass::Manager ti_manager; - ti_manager.register_pass(manager); - ti_manager.run_passes(nGraphFunc); + vpu::MergeSubsequentDSROperations().run_on_function(nGraphFunc); - vpu::MergeSubsequentDSROperations().run_on_function(nGraphFunc); - - convertedNetwork = InferenceEngine::details::convertFunctionToICNNNetwork(nGraphFunc, network); - return convertedNetwork; + convertedNetwork = InferenceEngine::details::convertFunctionToICNNNetwork(nGraphFunc, network); + return convertedNetwork; } std::set FrontEnd::checkSupportedLayers(ie::ICNNNetwork& network) { diff --git a/inference-engine/src/vpu/myriad_plugin/myriad_plugin.cpp b/inference-engine/src/vpu/myriad_plugin/myriad_plugin.cpp index 8f64b5bd547..9992b189d59 100644 --- a/inference-engine/src/vpu/myriad_plugin/myriad_plugin.cpp +++ b/inference-engine/src/vpu/myriad_plugin/myriad_plugin.cpp @@ -20,13 +20,9 @@ #include #include #include -#include #include #include -#include "vpu/ngraph/transformations/dynamic_to_static_shape.hpp" -#include "vpu/ngraph/transformations/eliminate_shapeof_after_dsr.hpp" - #include "generic_ie.hpp" #include "myriad_plugin.h" @@ -37,32 +33,14 @@ using namespace InferenceEngine::VPUConfigParams; using namespace vpu::MyriadPlugin; -ExecutableNetworkInternal::Ptr Engine::LoadExeNetworkImpl( - const ICNNNetwork& network, - const std::map& config) { +ExecutableNetworkInternal::Ptr Engine::LoadExeNetworkImpl(const ICNNNetwork& network, const std::map& config) { VPU_PROFILE(LoadExeNetworkImpl); auto parsedConfigCopy = _parsedConfig; parsedConfigCopy.update(config); auto clonedNetwork = cloneNetwork(network); - if (auto function = clonedNetwork->getFunction()) { - ngraph::op::GenericIE::DisableReshape noReshape(function); - ngraph::pass::Manager manager; - manager.register_pass(); - manager.register_pass(); - manager.register_pass(); - manager.register_pass(); - manager.run_passes(function); - - ngraph::pass::Manager ti_manager; - ti_manager.register_pass(manager); - ti_manager.run_passes(function); - } - - return std::make_shared(*clonedNetwork, - _mvnc, _devicePool, - parsedConfigCopy, GetCore()); + return std::make_shared(*clonedNetwork, _mvnc, _devicePool, parsedConfigCopy, GetCore()); } void Engine::SetConfig(const std::map &config) {