diff options
author | Francis Murtagh <francis.murtagh@arm.com> | 2022-06-21 13:16:23 +0000 |
---|---|---|
committer | Francis Murtagh <francis.murtagh@arm.com> | 2022-06-22 08:36:28 +0000 |
commit | 626bd90378670eb5fd76f94526395430b752ad9e (patch) | |
tree | fa3c41a9ed7506f0bf5eb2b940f8661d2bf47adf /src/armnn/Network.cpp | |
parent | b9570c1a5b938aea20964e3b6a8164e9bf096b4c (diff) | |
download | armnn-626bd90378670eb5fd76f94526395430b752ad9e.tar.gz |
Revert "Revert "IVGCVSW-6873 Import inputs but don't export outputs fails.""
This reverts commit a0f8b15d4ddb5075f380003ff31b271d389d3b66.
Reason for revert: <Test ClDmaBufInternalTests review >
Change-Id: Ibc4a77fa008643849da7330391942e4c87b941e2
Diffstat (limited to 'src/armnn/Network.cpp')
-rw-r--r-- | src/armnn/Network.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
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<ITensorHandleFactory::FactoryId, int> 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<std::vector<std::string>&> 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> graph = std::make_unique<Graph>(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 |