aboutsummaryrefslogtreecommitdiff
path: root/ArmnnPreparedModel.cpp
diff options
context:
space:
mode:
authorFinn Williams <Finn.Williams@arm.com>2021-06-11 15:04:02 +0100
committerFinn Williams <Finn.Williams@arm.com>2021-06-23 13:21:01 +0100
commitca3a3e0fd86a07de9e073ba31dc2b42d6ca84536 (patch)
tree755d270b8c743a24e7ead37dc84f6ca69ad783c4 /ArmnnPreparedModel.cpp
parentdc873f6309784d5fd6914ca5432d32ae6c3de0c2 (diff)
downloadandroid-nn-driver-ca3a3e0fd86a07de9e073ba31dc2b42d6ca84536.tar.gz
IVGCVSW-6062 Rework the async threadpool
!armnn:5801 Signed-off-by: Finn Williams <Finn.Williams@arm.com> Change-Id: I9964d0899ce752441f380edddbd974010257b2dd
Diffstat (limited to 'ArmnnPreparedModel.cpp')
-rw-r--r--ArmnnPreparedModel.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/ArmnnPreparedModel.cpp b/ArmnnPreparedModel.cpp
index 259d1b8c..77709b0e 100644
--- a/ArmnnPreparedModel.cpp
+++ b/ArmnnPreparedModel.cpp
@@ -113,7 +113,8 @@ ArmnnPreparedModel<HalVersion>::ArmnnPreparedModel(armnn::NetworkId networkId,
const HalModel& model,
const std::string& requestInputsAndOutputsDumpDir,
const bool gpuProfilingEnabled,
- const bool asyncModelExecutionEnabled)
+ const bool asyncModelExecutionEnabled,
+ const unsigned int numberOfThreads)
: m_NetworkId(networkId)
, m_Runtime(runtime)
, m_Model(model)
@@ -127,7 +128,14 @@ ArmnnPreparedModel<HalVersion>::ArmnnPreparedModel(armnn::NetworkId networkId,
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);
}
}
@@ -397,11 +405,11 @@ void ArmnnPreparedModel<HalVersion>::ScheduleGraphForExecution(
outputTensors,
callbackContext);
- m_Runtime->Schedule(m_NetworkId,
- *tpCb->m_InputTensors,
- *tpCb->m_OutputTensors,
- armnn::QosExecPriority::High,
- tpCb);
+ m_Threadpool->Schedule(m_NetworkId,
+ *tpCb->m_InputTensors,
+ *tpCb->m_OutputTensors,
+ armnn::QosExecPriority::Medium,
+ tpCb);
ALOGV("ArmnnPreparedModel::ScheduleGraphForExecution end");
}