aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorFinn Williams <finn.williams@arm.com>2022-02-15 20:47:34 +0000
committerFinn Williams <finn.williams@arm.com>2022-02-16 19:30:43 +0000
commit73c547da9b403ff19adb94032db51d8d0f1ee767 (patch)
treeb652d41a2ed99e20b5c4478a646ae0764cf22506 /include
parentbb6c6490b43036400e3c2ff90d3beafe074ab0b1 (diff)
downloadarmnn-73c547da9b403ff19adb94032db51d8d0f1ee767.tar.gz
Refactor Forced Import
* Find and replace all workloads associated with imported IO * Only attempt tensorhandle replacement if supported by all workloads * Add new RefBaseWorkload to enable forced input for ref backend * Store imported tensorhandles in preImportedTensorhandles instead of outputHandles * Create pre-imported tensorhandles at network load-time * Front load import workload validation to load network time * Only call ReplaceTensorHandle when needed Change-Id: I3816a71b7f57ae90388bb16462a75d4ef3544fa7 Signed-off-by: Finn Williams <finn.williams@arm.com>
Diffstat (limited to 'include')
-rw-r--r--include/armnn/backends/IWorkload.hpp4
-rw-r--r--include/armnn/backends/Workload.hpp11
2 files changed, 13 insertions, 2 deletions
diff --git a/include/armnn/backends/IWorkload.hpp b/include/armnn/backends/IWorkload.hpp
index d63e0acc72..ce3914bc5a 100644
--- a/include/armnn/backends/IWorkload.hpp
+++ b/include/armnn/backends/IWorkload.hpp
@@ -31,6 +31,10 @@ public:
virtual profiling::ProfilingGuid GetGuid() const = 0;
+ // SupportsTensorHandleReplacement signals that a given workload is capable of
+ // replacing any of its I/O tensors via ReplaceInput/OutputTensorHandle
+ virtual bool SupportsTensorHandleReplacement() const = 0;
+
// Replace input tensor handle with the given TensorHandle
virtual void ReplaceInputTensorHandle(ITensorHandle* /*input*/, unsigned int /*slot*/) = 0;
diff --git a/include/armnn/backends/Workload.hpp b/include/armnn/backends/Workload.hpp
index 07e1abb392..21109480dc 100644
--- a/include/armnn/backends/Workload.hpp
+++ b/include/armnn/backends/Workload.hpp
@@ -54,16 +54,23 @@ public:
profiling::ProfilingGuid GetGuid() const final { return m_Guid; }
+ virtual bool SupportsTensorHandleReplacement() const override
+ {
+ return false;
+ }
+
// Replace input tensor handle with the given TensorHandle
void ReplaceInputTensorHandle(ITensorHandle* tensorHandle, unsigned int slot) override
{
- m_Data.m_Inputs[slot] = tensorHandle;
+ armnn::IgnoreUnused(tensorHandle, slot);
+ throw armnn::UnimplementedException("ReplaceInputTensorHandle not implemented for this workload");
}
// Replace output tensor handle with the given TensorHandle
void ReplaceOutputTensorHandle(ITensorHandle* tensorHandle, unsigned int slot) override
{
- m_Data.m_Outputs[slot] = tensorHandle;
+ armnn::IgnoreUnused(tensorHandle, slot);
+ throw armnn::UnimplementedException("ReplaceOutputTensorHandle not implemented for this workload");
}
protected: