From a045ac07f8613edc4e0027b226eadd72e7a423ec Mon Sep 17 00:00:00 2001 From: Sadik Armagan Date: Fri, 1 Jul 2022 14:32:05 +0100 Subject: IVGCVSW-6957 'Import Host Memory in SL' * Enabled import host memory in SL as default * Updated import host memory functionality in GpuAcc Signed-off-by: Sadik Armagan Change-Id: I22132b1e1008159b0e7247219762e3e9ae5eba10 --- shim/sl/canonical/ArmnnDriver.hpp | 6 ----- shim/sl/canonical/ArmnnDriverImpl.cpp | 14 ----------- shim/sl/canonical/ArmnnDriverImpl.hpp | 6 ----- shim/sl/canonical/ArmnnPreparedModel.cpp | 43 +++++++++++++------------------- 4 files changed, 17 insertions(+), 52 deletions(-) (limited to 'shim') diff --git a/shim/sl/canonical/ArmnnDriver.hpp b/shim/sl/canonical/ArmnnDriver.hpp index 877faa667e..c33c61a65b 100644 --- a/shim/sl/canonical/ArmnnDriver.hpp +++ b/shim/sl/canonical/ArmnnDriver.hpp @@ -39,12 +39,6 @@ public: ~ArmnnDriver() { VLOG(DRIVER) << "ArmnnDriver::~ArmnnDriver()"; - // Unload the networks - for (auto& netId : ArmnnDriverImpl::GetLoadedNetworks()) - { - m_Runtime->UnloadNetwork(netId); - } - ArmnnDriverImpl::ClearNetworks(); } public: diff --git a/shim/sl/canonical/ArmnnDriverImpl.cpp b/shim/sl/canonical/ArmnnDriverImpl.cpp index 3223d9e8bf..8706c382b0 100644 --- a/shim/sl/canonical/ArmnnDriverImpl.cpp +++ b/shim/sl/canonical/ArmnnDriverImpl.cpp @@ -114,11 +114,6 @@ bool ArmnnDriverImpl::ValidateDataCacheHandle(const std::vector& d return ValidateSharedHandle(dataCacheHandle[0]); } -std::vector& ArmnnDriverImpl::GetLoadedNetworks() -{ - return m_NetworkIDs; -} - GeneralResult ArmnnDriverImpl::PrepareArmnnModel( const armnn::IRuntimePtr& runtime, const armnn::IGpuAccTunedParametersPtr& clTunedParameters, @@ -317,7 +312,6 @@ GeneralResult ArmnnDriverImpl::PrepareArmnnModel( options.GetBackends().end(), armnn::Compute::GpuAcc) != options.GetBackends().end()); - m_NetworkIDs.push_back(netId); auto preparedModel = std::make_shared(netId, runtime.get(), model, @@ -356,8 +350,6 @@ GeneralResult ArmnnDriverImpl::PrepareArmnnModel( return std::move(preparedModel); } -std::vector ArmnnDriverImpl::m_NetworkIDs = {}; - GeneralResult ArmnnDriverImpl::PrepareArmnnModelFromCache( const armnn::IRuntimePtr& runtime, const armnn::IGpuAccTunedParametersPtr& clTunedParameters, @@ -537,7 +529,6 @@ GeneralResult ArmnnDriverImpl::PrepareArmnnModelFromCache( return NN_ERROR(ErrorStatus::GENERAL_FAILURE) << message.str(); } - m_NetworkIDs.push_back(netId); return std::make_shared(netId, runtime.get(), options.GetRequestInputsAndOutputsDumpDir(), @@ -553,9 +544,4 @@ const Capabilities& ArmnnDriverImpl::GetCapabilities(const armnn::IRuntimePtr& r return theCapabilities; } -void ArmnnDriverImpl::ClearNetworks() -{ - m_NetworkIDs.clear(); -} - } // namespace armnn_driver diff --git a/shim/sl/canonical/ArmnnDriverImpl.hpp b/shim/sl/canonical/ArmnnDriverImpl.hpp index 836bf469cc..6af0ab285d 100644 --- a/shim/sl/canonical/ArmnnDriverImpl.hpp +++ b/shim/sl/canonical/ArmnnDriverImpl.hpp @@ -45,15 +45,9 @@ public: static const Capabilities& GetCapabilities(const armnn::IRuntimePtr& runtime); - static std::vector& GetLoadedNetworks(); - - static void ClearNetworks(); - private: static bool ValidateSharedHandle(const SharedHandle& sharedHandle); static bool ValidateDataCacheHandle(const std::vector& dataCacheHandle, const size_t dataSize); - - static std::vector m_NetworkIDs; }; } // namespace armnn_driver \ No newline at end of file diff --git a/shim/sl/canonical/ArmnnPreparedModel.cpp b/shim/sl/canonical/ArmnnPreparedModel.cpp index c0ce3e41a1..54a019004c 100644 --- a/shim/sl/canonical/ArmnnPreparedModel.cpp +++ b/shim/sl/canonical/ArmnnPreparedModel.cpp @@ -93,21 +93,21 @@ bool IsPointerTypeMemory(const Request& request) { for (auto& input : request.inputs) { - if (input.lifetime == Request::Argument::LifeTime::POINTER) + if (input.lifetime != Request::Argument::LifeTime::POINTER) { - return true; + return false; } } for (auto& output: request.outputs) { - if (output.lifetime == Request::Argument::LifeTime::POINTER) + if (output.lifetime != Request::Argument::LifeTime::POINTER) { - return true; + return false; } } - return false; + return true; } } // anonymous namespace @@ -318,7 +318,8 @@ ExecutionResult, Timing>> ArmnnPreparedModel: } VLOG(DRIVER) << "ArmnnPreparedModel::execute(): " << GetModelSummary(m_Model).c_str(); } - if (hasDeadlinePassed(deadline)) { + if (hasDeadlinePassed(deadline)) + { return NN_ERROR(ErrorStatus::MISSED_DEADLINE_PERSISTENT); } @@ -381,7 +382,8 @@ ErrorStatus ArmnnPreparedModel::ExecuteGraph( VLOG(DRIVER) << "ArmnnPreparedModel::ExecuteGraph(...)"; DumpTensorsIfRequired("Input", inputTensors); - + std::vector importedInputIds; + std::vector importedOutputIds; try { if (ctx.measureTimings == MeasureTiming::YES) @@ -390,24 +392,13 @@ ErrorStatus ArmnnPreparedModel::ExecuteGraph( } armnn::Status status; VLOG(DRIVER) << "ArmnnPreparedModel::ExecuteGraph m_AsyncModelExecutionEnabled false"; - - if (pointerMemory) - { - std::vector importedInputIds; - importedInputIds = m_Runtime->ImportInputs(m_NetworkId, inputTensors, armnn::MemorySource::Malloc); - - std::vector importedOutputIds; - importedOutputIds = m_Runtime->ImportOutputs(m_NetworkId, outputTensors, armnn::MemorySource::Malloc); - status = m_Runtime->EnqueueWorkload(m_NetworkId, - inputTensors, - outputTensors, - importedInputIds, - importedOutputIds); - } - else - { - status = m_Runtime->EnqueueWorkload(m_NetworkId, inputTensors, outputTensors); - } + importedInputIds = m_Runtime->ImportInputs(m_NetworkId, inputTensors, armnn::MemorySource::Malloc); + importedOutputIds = m_Runtime->ImportOutputs(m_NetworkId, outputTensors, armnn::MemorySource::Malloc); + status = m_Runtime->EnqueueWorkload(m_NetworkId, + inputTensors, + outputTensors, + importedInputIds, + importedOutputIds); if (ctx.measureTimings == MeasureTiming::YES) { @@ -430,7 +421,7 @@ ErrorStatus ArmnnPreparedModel::ExecuteGraph( return ErrorStatus::GENERAL_FAILURE; } - if (!pointerMemory) + if (!pointerMemory && (!importedInputIds.empty() || !importedOutputIds.empty())) { CommitPools(*pMemPools); } -- cgit v1.2.1