IVGCVSW-6786 Add import if memory aligned option to ExecuteNetwork
Change-Id: Ib038e7b2616195a64715e3a7126da1368bbca1d3
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
diff --git a/tests/InferenceModel.hpp b/tests/InferenceModel.hpp
index bddaf55..e2a1a97 100644
--- a/tests/InferenceModel.hpp
+++ b/tests/InferenceModel.hpp
@@ -111,6 +111,7 @@
std::string m_MLGOTuningFilePath;
bool m_AsyncEnabled;
size_t m_ThreadPoolSize;
+ bool m_ImportInputsIfAligned;
Params()
@@ -132,6 +133,7 @@
, m_MLGOTuningFilePath("")
, m_AsyncEnabled(false)
, m_ThreadPoolSize(0)
+ , m_ImportInputsIfAligned(false)
{}
};
@@ -438,8 +440,9 @@
const std::string& dynamicBackendsPath,
const std::shared_ptr<armnn::IRuntime>& runtime = nullptr)
: m_EnableProfiling(enableProfiling),
- m_ProfilingDetailsMethod(armnn::ProfilingDetailsMethod::Undefined)
- , m_DynamicBackendsPath(dynamicBackendsPath)
+ m_ProfilingDetailsMethod(armnn::ProfilingDetailsMethod::Undefined),
+ m_DynamicBackendsPath(dynamicBackendsPath),
+ m_ImportInputsIfAligned(params.m_ImportInputsIfAligned)
{
if (runtime)
{
@@ -612,9 +615,27 @@
// Start timer to record inference time in EnqueueWorkload (in milliseconds)
const auto start_time = armnn::GetTimeNow();
- armnn::Status ret = m_Runtime->EnqueueWorkload(m_NetworkIdentifier,
- MakeInputTensors(inputContainers),
- MakeOutputTensors(outputContainers));
+ armnn::Status ret;
+ if (m_ImportInputsIfAligned)
+ {
+ std::vector<armnn::ImportedInputId> importedInputIds = m_Runtime->ImportInputs(
+ m_NetworkIdentifier, MakeInputTensors(inputContainers), armnn::MemorySource::Malloc);
+
+ std::vector<armnn::ImportedOutputId> importedOutputIds = m_Runtime->ImportOutputs(
+ m_NetworkIdentifier, MakeOutputTensors(outputContainers), armnn::MemorySource::Malloc);
+
+ ret = m_Runtime->EnqueueWorkload(m_NetworkIdentifier,
+ MakeInputTensors(inputContainers),
+ MakeOutputTensors(outputContainers),
+ importedInputIds,
+ importedOutputIds);
+ }
+ else
+ {
+ ret = m_Runtime->EnqueueWorkload(m_NetworkIdentifier,
+ MakeInputTensors(inputContainers),
+ MakeOutputTensors(outputContainers));
+ }
const auto duration = armnn::GetTimeDuration(start_time);
// if profiling is enabled print out the results
@@ -784,6 +805,7 @@
bool m_EnableProfiling;
armnn::ProfilingDetailsMethod m_ProfilingDetailsMethod;
std::string m_DynamicBackendsPath;
+ bool m_ImportInputsIfAligned;
template<typename TContainer>
armnn::InputTensors MakeInputTensors(const std::vector<TContainer>& inputDataContainers)