aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/LoadedNetwork.hpp
diff options
context:
space:
mode:
authorFinn Williams <Finn.Williams@arm.com>2021-09-01 18:06:04 +0100
committerJim Flynn <jim.flynn@arm.com>2021-09-15 11:23:05 +0000
commitf37b970ff96b98310309e78aeea8a2e9df27b15a (patch)
tree73f1e3db6552649ac57901fd3df7fadc9742385e /src/armnn/LoadedNetwork.hpp
parentfc8d434bb318aebb433a2f6d8ce9c066cd9c1b1e (diff)
downloadarmnn-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.hpp23
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;
};
}