From a004251094074d7453531a25342d19dd66ee115f Mon Sep 17 00:00:00 2001 From: Sadik Armagan Date: Tue, 30 Mar 2021 11:05:36 +0100 Subject: IVGCVSW-5799 'Create Pimpl Idiom for Async prototype' * Implemented Pimpl Idiom for IAsyncNetwork Signed-off-by: Sadik Armagan Change-Id: Ic7311880563568b014a27f6347f8d41f2ad96df6 --- include/armnn/IAsyncNetwork.hpp | 31 ++++++++++++++++++++++--------- include/armnn/INetwork.hpp | 4 ++-- 2 files changed, 24 insertions(+), 11 deletions(-) (limited to 'include/armnn') diff --git a/include/armnn/IAsyncNetwork.hpp b/include/armnn/IAsyncNetwork.hpp index 7ef83bbff1..c234ae55ac 100644 --- a/include/armnn/IAsyncNetwork.hpp +++ b/include/armnn/IAsyncNetwork.hpp @@ -17,33 +17,46 @@ namespace armnn { +struct INetworkProperties; + +namespace profiling +{ +class ProfilingService; +} namespace experimental { +class AsyncNetworkImpl; class IAsyncNetwork { public: - virtual ~IAsyncNetwork() {}; + IAsyncNetwork(std::unique_ptr net, + const INetworkProperties& networkProperties, + profiling::ProfilingService& profilingService); + ~IAsyncNetwork(); - virtual TensorInfo GetInputTensorInfo(LayerBindingId layerId) const = 0; - virtual TensorInfo GetOutputTensorInfo(LayerBindingId layerId) const = 0; + 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) = 0; + 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. - virtual std::unique_ptr CreateWorkingMemHandle() = 0; + std::unique_ptr CreateWorkingMemHandle(); /// Get the profiler used for this network - virtual std::shared_ptr GetProfiler() const = 0; + std::shared_ptr GetProfiler() const; /// Register a debug callback function to be used with this network - virtual void RegisterDebugCallback(const DebugCallbackFunction& func) = 0; + void RegisterDebugCallback(const DebugCallbackFunction& func); + +private: + std::unique_ptr pAsyncNetworkImpl; }; } // end experimental namespace diff --git a/include/armnn/INetwork.hpp b/include/armnn/INetwork.hpp index 2db6d5de83..5d2b4edb00 100644 --- a/include/armnn/INetwork.hpp +++ b/include/armnn/INetwork.hpp @@ -706,7 +706,7 @@ protected: namespace experimental { -class AsyncNetwork; +class AsyncNetworkImpl; class WorkingMemHandle; } @@ -730,7 +730,7 @@ public: protected: friend class LoadedNetwork; - friend class experimental::AsyncNetwork; + friend class experimental::AsyncNetworkImpl; friend class experimental::WorkingMemHandle; friend Graph& GetGraphForTesting(IOptimizedNetwork* optNetPtr); -- cgit v1.2.1