aboutsummaryrefslogtreecommitdiff
path: root/ArmnnPreparedModel_1_3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ArmnnPreparedModel_1_3.cpp')
-rw-r--r--ArmnnPreparedModel_1_3.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/ArmnnPreparedModel_1_3.cpp b/ArmnnPreparedModel_1_3.cpp
index 63918725..cd3df516 100644
--- a/ArmnnPreparedModel_1_3.cpp
+++ b/ArmnnPreparedModel_1_3.cpp
@@ -169,7 +169,8 @@ ArmnnPreparedModel_1_3<HalVersion>::ArmnnPreparedModel_1_3(armnn::NetworkId netw
const std::string& requestInputsAndOutputsDumpDir,
const bool gpuProfilingEnabled,
V1_3::Priority priority,
- const bool asyncModelExecutionEnabled)
+ const bool asyncModelExecutionEnabled,
+ const unsigned int numberOfThreads)
: m_NetworkId(networkId)
, m_Runtime(runtime)
, m_Model(model)
@@ -184,7 +185,14 @@ ArmnnPreparedModel_1_3<HalVersion>::ArmnnPreparedModel_1_3(armnn::NetworkId netw
if (asyncModelExecutionEnabled)
{
- m_WorkingMemHandle = m_Runtime->CreateWorkingMemHandle(networkId);
+ std::vector<std::shared_ptr<armnn::IWorkingMemHandle>> memHandles;
+ for (int i=0; i < numberOfThreads; ++i)
+ {
+ memHandles.emplace_back(m_Runtime->CreateWorkingMemHandle(networkId));
+ }
+
+ m_WorkingMemHandle = memHandles.back();
+ m_Threadpool = std::make_unique<armnn::Threadpool>(numberOfThreads, runtime, memHandles);
}
}
@@ -821,11 +829,11 @@ void ArmnnPreparedModel_1_3<HalVersion>::ScheduleGraphForExecution(
outputTensors,
callbackContext);
- m_Runtime->Schedule(m_NetworkId,
- *tpCb->m_InputTensors,
- *tpCb->m_OutputTensors,
- priority,
- tpCb);
+ m_Threadpool->Schedule(m_NetworkId,
+ *tpCb->m_InputTensors,
+ *tpCb->m_OutputTensors,
+ priority,
+ tpCb);
ALOGV("ArmnnPreparedModel_1_3::ScheduleGraphForExecution end");
}