diff options
author | Finn Williams <Finn.Williams@arm.com> | 2021-09-01 18:06:04 +0100 |
---|---|---|
committer | Jim Flynn <jim.flynn@arm.com> | 2021-09-15 11:23:05 +0000 |
commit | f37b970ff96b98310309e78aeea8a2e9df27b15a (patch) | |
tree | 73f1e3db6552649ac57901fd3df7fadc9742385e /src/armnn/LoadedNetwork.hpp | |
parent | fc8d434bb318aebb433a2f6d8ce9c066cd9c1b1e (diff) | |
download | armnn-f37b970ff96b98310309e78aeea8a2e9df27b15a.tar.gz |
IVGCVSW-6312 Support pre-importing inputs
Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: Ifc5e6f2e36767cb2a5cbf281d40ec9989b581abc
Diffstat (limited to 'src/armnn/LoadedNetwork.hpp')
-rw-r--r-- | src/armnn/LoadedNetwork.hpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/armnn/LoadedNetwork.hpp b/src/armnn/LoadedNetwork.hpp index 360ad91170..e713be215a 100644 --- a/src/armnn/LoadedNetwork.hpp +++ b/src/armnn/LoadedNetwork.hpp @@ -49,13 +49,16 @@ public: TensorInfo GetInputTensorInfo(LayerBindingId layerId) const; TensorInfo GetOutputTensorInfo(LayerBindingId layerId) const; + std::vector<ImportedInputId> ImportInputs(const InputTensors& inputTensors); + /// Single thread execution of the loaded network Status EnqueueWorkload(const InputTensors& inputTensors, const OutputTensors& outputTensors); /// Thread safe execution of the loaded network Status Execute(const InputTensors& inputTensors, const OutputTensors& outputTensors, - IWorkingMemHandle& workingMemHandle); + IWorkingMemHandle& workingMemHandle, + std::vector<ImportedInputId> preImportedInputs = {}); static std::unique_ptr<LoadedNetwork> MakeLoadedNetwork(std::unique_ptr<IOptimizedNetwork> net, std::string& errorMessage, @@ -100,7 +103,7 @@ private: void EnqueueOutput(const BindableLayer& layer, ITensorHandle* tensorHandle, const TensorInfo& tensorInfo); - void EnqueueInput(const BindableLayer& layer, const ConstTensor& inputTensor, WorkingMemHandle& handle); + void EnqueueInput(const ConstTensor& inputTensor, ITensorHandle* inputTensorHandle); void EnqueueOutput(const BindableLayer& layer, const Tensor& outputTensor, WorkingMemHandle& handle); @@ -130,6 +133,22 @@ private: TensorHandleFactoryRegistry m_TensorHandleFactoryRegistry; profiling::ProfilingService& m_ProfilingService; + + struct ImportedInputHandlePin + { + ImportedInputHandlePin(LayerBindingId layerBindingId, + std::unique_ptr<ITensorHandle> tensorHandle) + : m_LayerBindingId(layerBindingId) + , m_TensorHandle(std::move(tensorHandle)) + {} + + LayerBindingId m_LayerBindingId; + std::unique_ptr<ITensorHandle> m_TensorHandle; + }; + + std::vector<ImportedInputHandlePin> m_PreImportedInputHandles; + + ImportedInputId m_CurImportedInputId = 0; }; } |