From 56055193e82471a70b82e4eb11a8884c5904af75 Mon Sep 17 00:00:00 2001 From: Aron Virginas-Tar Date: Mon, 12 Nov 2018 18:10:43 +0000 Subject: IVGCVSW-2066: Add IMemoryManager and integrate into the backends framework Change-Id: I93223c8678165cbc3d39f461c36bb8610dc81c05 --- src/backends/neon/NeonWorkloadFactory.cpp | 267 +++--------------------------- 1 file changed, 22 insertions(+), 245 deletions(-) (limited to 'src/backends/neon/NeonWorkloadFactory.cpp') diff --git a/src/backends/neon/NeonWorkloadFactory.cpp b/src/backends/neon/NeonWorkloadFactory.cpp index f0d916b63b..65844476e4 100644 --- a/src/backends/neon/NeonWorkloadFactory.cpp +++ b/src/backends/neon/NeonWorkloadFactory.cpp @@ -2,24 +2,23 @@ // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // -#include "NeonWorkloadFactory.hpp" + #include "NeonBackendId.hpp" -#include -#include +#include "NeonTensorHandle.hpp" +#include "NeonWorkloadFactory.hpp" + #include -#ifdef ARMCOMPUTENEON_ENABLED -#include +#include +#include +#include #include -#include "NeonTensorHandle.hpp" -#include "workloads/NeonWorkloadUtils.hpp" -#include "workloads/NeonWorkloads.hpp" - -#endif -#include +#include +#include +#include #include namespace armnn @@ -42,10 +41,8 @@ const BackendId& NeonWorkloadFactory::GetBackendId() const return s_Id; } -#ifdef ARMCOMPUTENEON_ENABLED - -NeonWorkloadFactory::NeonWorkloadFactory() - : m_MemoryManager(std::make_unique(), BaseMemoryManager::MemoryAffinity::Offset) +NeonWorkloadFactory::NeonWorkloadFactory(const std::shared_ptr& memoryManager) + : m_MemoryManager(memoryManager) { } @@ -71,7 +68,7 @@ std::unique_ptr NeonWorkloadFactory::CreateSubTensorHandle(ITenso std::unique_ptr NeonWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo) const { auto tensorHandle = std::make_unique(tensorInfo); - tensorHandle->SetMemoryGroup(m_MemoryManager.GetInterLayerMemoryGroup()); + tensorHandle->SetMemoryGroup(m_MemoryManager->GetInterLayerMemoryGroup()); return tensorHandle; } @@ -80,7 +77,7 @@ std::unique_ptr NeonWorkloadFactory::CreateTensorHandle(const Ten DataLayout dataLayout) const { auto tensorHandle = std::make_unique(tensorInfo, dataLayout); - tensorHandle->SetMemoryGroup(m_MemoryManager.GetInterLayerMemoryGroup()); + tensorHandle->SetMemoryGroup(m_MemoryManager->GetInterLayerMemoryGroup()); return tensorHandle; } @@ -107,7 +104,7 @@ std::unique_ptr NeonWorkloadFactory::CreateSoftmax(const SoftmaxQueue const WorkloadInfo& info) const { return MakeWorkloadHelper(descriptor, info, - m_MemoryManager.GetIntraLayerManager()); + m_MemoryManager->GetIntraLayerManager()); } std::unique_ptr NeonWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& descriptor, @@ -126,7 +123,7 @@ std::unique_ptr NeonWorkloadFactory::CreateFullyConnected( const FullyConnectedQueueDescriptor& descriptor, const WorkloadInfo& info) const { return MakeWorkloadHelper(descriptor, info, - m_MemoryManager.GetIntraLayerManager()); + m_MemoryManager->GetIntraLayerManager()); } std::unique_ptr NeonWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& descriptor, @@ -145,7 +142,7 @@ std::unique_ptr NeonWorkloadFactory::CreateConvolution2d( const Convolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const { return std::make_unique(descriptor, info, - m_MemoryManager.GetIntraLayerManager()); + m_MemoryManager->GetIntraLayerManager()); } std::unique_ptr NeonWorkloadFactory::CreateDepthwiseConvolution2d( @@ -158,7 +155,7 @@ std::unique_ptr NeonWorkloadFactory::CreateNormalization( const NormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const { return MakeWorkloadHelper(descriptor, info, - m_MemoryManager.GetIntraLayerManager()); + m_MemoryManager->GetIntraLayerManager()); } std::unique_ptr NeonWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor, @@ -220,7 +217,7 @@ std::unique_ptr NeonWorkloadFactory::CreateL2Normalization(const L2No const WorkloadInfo& info) const { return MakeWorkloadHelper(descriptor, info, - m_MemoryManager.GetIntraLayerManager()); + m_MemoryManager->GetIntraLayerManager()); } std::unique_ptr NeonWorkloadFactory::CreateConstant(const ConstantQueueDescriptor& descriptor, @@ -287,232 +284,12 @@ std::unique_ptr NeonWorkloadFactory::CreateBatchToSpaceNd(const Batch void NeonWorkloadFactory::Release() { - m_MemoryManager.Release(); + m_MemoryManager->Release(); } void NeonWorkloadFactory::Acquire() { - m_MemoryManager.Acquire(); -} - -#else // Compiled without ArmCompute libs - -NeonWorkloadFactory::NeonWorkloadFactory() -{ -} - -std::unique_ptr NeonWorkloadFactory::CreateSubTensorHandle(ITensorHandle& parent, - TensorShape const& subTensorShape, - unsigned int const* subTensorOrigin) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateTensorHandle(const TensorInfo& tensorInfo, - DataLayout dataLayout) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateInput(const InputQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateOutput(const OutputQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateMerger(const MergerQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreatePooling2d(const Pooling2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateDepthwiseConvolution2d( - const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateNormalization(const NormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; + m_MemoryManager->Acquire(); } -std::unique_ptr NeonWorkloadFactory::CreateBatchNormalization(const BatchNormalizationQueueDescriptor& data, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateMultiplication(const MultiplicationQueueDescriptor& data, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateMemCopy(const MemCopyQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateResizeBilinear(const ResizeBilinearQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateFakeQuantization( - const FakeQuantizationQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateConstant(const ConstantQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateReshape(const ReshapeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateFloor(const FloorQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateLstm(const LstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateConvertFp16ToFp32( - const ConvertFp16ToFp32QueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateConvertFp32ToFp16( - const ConvertFp32ToFp16QueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateDivision(const DivisionQueueDescriptor& data, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateSubtraction(const SubtractionQueueDescriptor& data, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateMean(const MeanQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreatePad(const PadQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -std::unique_ptr NeonWorkloadFactory::CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return nullptr; -} - -void NeonWorkloadFactory::Release() -{} - -void NeonWorkloadFactory::Acquire() -{} - -#endif - -} //namespace armnn +} // namespace armnn -- cgit v1.2.1