From 55a8ffda24fff5515803df10fb4863d46a1effdf Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Wed, 7 Apr 2021 20:10:49 +0100 Subject: IVGCVSW-5823 Refactor Async Network API * Moved IAsyncNetwork into IRuntime. * All LoadedNetworks can be executed Asynchronously. Signed-off-by: Mike Kelly Change-Id: Ibbc901ab9110dc2f881425b75489bccf9ad54169 --- src/armnn/AsyncNetwork.hpp | 106 --------------------------------------------- 1 file changed, 106 deletions(-) delete mode 100644 src/armnn/AsyncNetwork.hpp (limited to 'src/armnn/AsyncNetwork.hpp') diff --git a/src/armnn/AsyncNetwork.hpp b/src/armnn/AsyncNetwork.hpp deleted file mode 100644 index 9bdc7eebd7..0000000000 --- a/src/armnn/AsyncNetwork.hpp +++ /dev/null @@ -1,106 +0,0 @@ -// -// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include -#include -#include - -#include "LayerFwd.hpp" -#include "Network.hpp" -#include "Profiling.hpp" -#include "WorkingMemHandle.hpp" - -#include -#include -#include -#include -#include -#include - -#include - -namespace armnn -{ - -namespace experimental -{ - -class AsyncNetworkImpl final -{ -public: - using WorkloadQueue = std::vector>; - - AsyncNetworkImpl(std::unique_ptr net, - const INetworkProperties &networkProperties, - profiling::ProfilingService &profilingService); - - ~AsyncNetworkImpl() { FreeWorkingMemory(); } - - TensorInfo GetInputTensorInfo(LayerBindingId layerId) const; - TensorInfo GetOutputTensorInfo(LayerBindingId layerId) const; - - /// Thread safe execution of the network. Returns once execution is complete. - /// Will block until this and any other thread using the same workingMem object completes. - virtual Status Execute(const InputTensors& inputTensors, - const OutputTensors& outputTensors, - IWorkingMemHandle& workingMemHandle); - - /// Create a new unique WorkingMemHandle object. Create multiple handles if you wish to have - /// overlapped Execution by calling this function from different threads. - std::unique_ptr CreateWorkingMemHandle(); - - /// Get the profiler used for this network - std::shared_ptr GetProfiler() const; - - /// Register a debug callback function to be used with this network - void RegisterDebugCallback(const DebugCallbackFunction& func); - -private: - void FreeWorkingMemory(); - - void CollectInputTensorHandles(std::unordered_map >& tensorHandles, - std::vector& inputs, - const armnn::Layer* layer, - const TensorHandleFactoryRegistry& registry, - const bool isMemoryManaged = false); - - void CreateOutputTensorHandles(std::unordered_map >& tensorHandles, - std::vector& outputs, - const armnn::Layer* layer, - const TensorHandleFactoryRegistry& registry, - const bool isMemoryManaged = false); - - void EnqueueInput(const BindableLayer& layer, const ConstTensor& inputTensor, WorkingMemHandle& handle); - - void EnqueueOutput(const BindableLayer& layer, const Tensor& outputTensor, WorkingMemHandle& handle); - - using BackendPtrMap = std::unordered_map; - - using WorkloadFactoryWithMemoryManager = - std::pair; - - using WorkloadFactoryMap = std::unordered_map; - - const IWorkloadFactory& GetWorkloadFactory(const Layer& layer) const; - - BackendPtrMap m_Backends; - WorkloadFactoryMap m_WorkloadFactories; - - std::unique_ptr m_OptimizedNetwork; - INetworkProperties m_NetworkProperties; - WorkloadQueue m_WorkloadQueue; - std::shared_ptr m_Profiler; - - TensorHandleFactoryRegistry m_TensorHandleFactoryRegistry; - - /// Profiling Service Instance - profiling::ProfilingService& m_ProfilingService; -}; - -} // end experimental namespace - -} // end armnn namespace -- cgit v1.2.1