diff options
author | Finn Williams <Finn.Williams@arm.com> | 2021-06-11 15:04:02 +0100 |
---|---|---|
committer | Finn Williams <Finn.Williams@arm.com> | 2021-06-23 13:21:01 +0100 |
commit | ca3a3e0fd86a07de9e073ba31dc2b42d6ca84536 (patch) | |
tree | 755d270b8c743a24e7ead37dc84f6ca69ad783c4 /ArmnnPreparedModel_1_2.cpp | |
parent | dc873f6309784d5fd6914ca5432d32ae6c3de0c2 (diff) | |
download | android-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_1_2.cpp')
-rw-r--r-- | ArmnnPreparedModel_1_2.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/ArmnnPreparedModel_1_2.cpp b/ArmnnPreparedModel_1_2.cpp index 83e4aac5..07fd5a6d 100644 --- a/ArmnnPreparedModel_1_2.cpp +++ b/ArmnnPreparedModel_1_2.cpp @@ -148,7 +148,8 @@ ArmnnPreparedModel_1_2<HalVersion>::ArmnnPreparedModel_1_2(armnn::NetworkId netw const V1_2::Model& 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) @@ -162,7 +163,14 @@ ArmnnPreparedModel_1_2<HalVersion>::ArmnnPreparedModel_1_2(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); } } @@ -661,11 +669,11 @@ void ArmnnPreparedModel_1_2<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_1_2::ScheduleGraphForExecution end"); } |