aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/LoadedNetwork.cpp
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2022-02-04 17:50:20 +0000
committerTeresaARM <teresa.charlinreyes@arm.com>2022-02-06 19:20:11 +0000
commitec5463d394453d268706ee6213b1c6a7619d4a5d (patch)
tree98d17988da24affbe57a324241d9407ae3345f83 /src/armnn/LoadedNetwork.cpp
parent23c26277086c78704a17f0dae86da947816320c0 (diff)
downloadarmnn-ec5463d394453d268706ee6213b1c6a7619d4a5d.tar.gz
IVGCVSW-6747 Call Cl sync after EnqueueWorkload
* Add AfterEnqueueWorkload to IBackendContext * Implement AfterEnqueueWorkload in ClBackendContext to call Cl sync * Set allocated data on outputhandler only once * Handle PreImportedHandles and CurImportedId the same way as Async Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: I9f59d57e298d4a494569faec3078d66af799f77b
Diffstat (limited to 'src/armnn/LoadedNetwork.cpp')
-rw-r--r--src/armnn/LoadedNetwork.cpp30
1 files changed, 23 insertions, 7 deletions
diff --git a/src/armnn/LoadedNetwork.cpp b/src/armnn/LoadedNetwork.cpp
index 45891f7dc3..48a3040b23 100644
--- a/src/armnn/LoadedNetwork.cpp
+++ b/src/armnn/LoadedNetwork.cpp
@@ -699,7 +699,7 @@ Status LoadedNetwork::EnqueueWorkload(const InputTensors& inputTensors,
for (const BindableLayer* inputLayer : graph.GetInputLayers())
{
- if (preImportedInputIds.size() != m_PreImportedInputHandles.size())
+ if (preImportedInputIds.size() > graph.GetNumInputs())
{
throw InvalidArgumentException("Invalid number of preImportedInputIds");
}
@@ -727,7 +727,7 @@ Status LoadedNetwork::EnqueueWorkload(const InputTensors& inputTensors,
for (const BindableLayer* outputLayer : graph.GetOutputLayers())
{
- if (preImportedOutputIds.size() != m_PreImportedOutputHandles.size())
+ if (preImportedOutputIds.size() > graph.GetNumOutputs())
{
throw InvalidArgumentException("Invalid number of preImportedOutputIds");
}
@@ -770,11 +770,6 @@ Status LoadedNetwork::EnqueueWorkload(const InputTensors& inputTensors,
}
}
}
- // Clear m_PreImportedInputHandles and m_PreImportedOutputHandles
- m_PreImportedInputHandles.clear();
- m_PreImportedOutputHandles.clear();
- m_CurImportedInputId = 0;
- m_CurImportedOutputId = 0;
std::unique_ptr<TimelineUtilityMethods> timelineUtils =
TimelineUtilityMethods::GetTimelineUtils(m_ProfilingService);
@@ -1271,6 +1266,16 @@ std::vector<ImportedInputId> LoadedNetwork::ImportInputs(const InputTensors& inp
{
// Cannot import, use allocated data
handler.UseAllocatedData();
+ // Ensure that the workload get correct tensor
+ try
+ {
+ m_WorkloadQueue[m_InputWorkloadSlotPairs[layerBindingId].first].get()->ReplaceInputTensorHandle(
+ handler.GetData(), m_InputWorkloadSlotPairs[layerBindingId].second);
+ }
+ catch(armnn::UnimplementedException& e)
+ {
+ IgnoreUnused(e);
+ }
}
}
@@ -1437,6 +1442,17 @@ std::vector<ImportedOutputId> LoadedNetwork::ImportOutputs(const OutputTensors&
{
// Cannot import, use allocated memory
outputHandler.UseAllocatedData();
+ // Ensure that the workload get correct tensor
+ try
+ {
+ m_WorkloadQueue[m_OutputWorkloadSlotPairs[layerBindingId].first].get()->
+ ReplaceOutputTensorHandle(outputHandler.GetData(),
+ m_OutputWorkloadSlotPairs[layerBindingId].second);
+ }
+ catch(armnn::UnimplementedException& e)
+ {
+ IgnoreUnused(e);
+ }
}
}
return importedOutputs;