From 626bd90378670eb5fd76f94526395430b752ad9e Mon Sep 17 00:00:00 2001 From: Francis Murtagh Date: Tue, 21 Jun 2022 13:16:23 +0000 Subject: Revert "Revert "IVGCVSW-6873 Import inputs but don't export outputs fails."" This reverts commit a0f8b15d4ddb5075f380003ff31b271d389d3b66. Reason for revert: Change-Id: Ibc4a77fa008643849da7330391942e4c87b941e2 --- src/armnn/Network.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'src/armnn/Network.cpp') diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp index f2ba94f597..9520c1399e 100644 --- a/src/armnn/Network.cpp +++ b/src/armnn/Network.cpp @@ -1362,7 +1362,7 @@ ITensorHandleFactory::FactoryId CalculateSlotOptionForOutput(BackendsMap& backen ITensorHandleFactory::FactoryId CalculateSlotOption(BackendsMap& backends, OutputSlot& outputSlot, TensorHandleFactoryRegistry& registry, - bool importEnabled) + bool exportEnabled) { // First ensure the from backends can support the TensorHandeAPI Layer& layer = outputSlot.GetOwningLayer(); @@ -1390,7 +1390,7 @@ ITensorHandleFactory::FactoryId CalculateSlotOption(BackendsMap& backends, std::map factoryScores; for (auto&& pref : srcPrefs) { - if (importEnabled) + if (exportEnabled) { ITensorHandleFactory* factory = registry.GetFactory(pref); if (outputConnection) @@ -1602,12 +1602,13 @@ OptimizationResult SelectTensorHandleStrategy(Graph& optGraph, BackendsMap& backends, TensorHandleFactoryRegistry& registry, bool importEnabled, + bool exportEnabled, Optional&> errMessages) { ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "Optimizer_SelectTensorHandleStrategy"); OptimizationResult result; - optGraph.ForEachLayer([&backends, ®istry, &result, &errMessages, importEnabled](Layer* layer) + optGraph.ForEachLayer([&backends, ®istry, &result, &errMessages, importEnabled, exportEnabled](Layer* layer) { ARMNN_ASSERT(layer); @@ -1632,7 +1633,7 @@ OptimizationResult SelectTensorHandleStrategy(Graph& optGraph, slotOption = CalculateSlotOptionForOutput(backends, outputSlot, registry); break; default: - slotOption = CalculateSlotOption(backends, outputSlot, registry, importEnabled); + slotOption = CalculateSlotOption(backends, outputSlot, registry, exportEnabled); break; } outputSlot.SetTensorHandleFactory(slotOption); @@ -1696,7 +1697,15 @@ IOptimizedNetworkPtr Optimize(const Graph& inGraph, std::unique_ptr graph = std::make_unique(inGraph); - auto optNet = IOptimizedNetworkPtr(new IOptimizedNetwork(std::move(graph), options.m_ModelOptions), + // We need to pass on the information about whether import and export is enabled to the LoadNetwork phase. + // The mechanism to do that is to add model options to the optimized network. + armnn::BackendOptions importExport("Global", + {{"ImportEnabled", options.m_ImportEnabled}, + {"ExportEnabled", options.m_ExportEnabled}}); + ModelOptions optimizedOptions(options.m_ModelOptions); + optimizedOptions.push_back(importExport); + + auto optNet = IOptimizedNetworkPtr(new IOptimizedNetwork(std::move(graph), optimizedOptions), &IOptimizedNetwork::Destroy); IOptimizedNetwork* optNetObjPtr = optNet.get(); @@ -1819,7 +1828,9 @@ IOptimizedNetworkPtr Optimize(const Graph& inGraph, backends, tensorHandleFactoryRegistry, options.m_ImportEnabled, + options.m_ExportEnabled, messages); + if (strategyResult.m_Error) { // Failed to apply the backend-specific optimizations -- cgit v1.2.1