aboutsummaryrefslogtreecommitdiff
path: root/include/armnn/backends/IBackendInternal.hpp
diff options
context:
space:
mode:
authorMatthew Bentham <Matthew.Bentham@arm.com>2020-02-04 10:03:55 +0000
committerDerek Lamberti <derek.lamberti@arm.com>2020-02-04 13:13:46 +0000
commit9a61fa6bdc8724cc66eba532360e0e48b6b1a60e (patch)
tree547a2e5db5af7517171a84c9395ac9c42151e6db /include/armnn/backends/IBackendInternal.hpp
parent3d8bc97ff2250b230b105b3df34d1ef3efd82d2c (diff)
downloadarmnn-9a61fa6bdc8724cc66eba532360e0e48b6b1a60e.tar.gz
Github #273 Handle failure to initialise BackendContext in Runtime
Define CreateBackendContext to throw BackendUnavailableException if necessary runtime components are missing. Handle this in the constructor of Runtime by not adding those backends to the internal DeviceSpec owned by the Runtime. Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com> Change-Id: Iadffb5240e32e1f105683c4d361276b92d1e720c
Diffstat (limited to 'include/armnn/backends/IBackendInternal.hpp')
-rw-r--r--include/armnn/backends/IBackendInternal.hpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/armnn/backends/IBackendInternal.hpp b/include/armnn/backends/IBackendInternal.hpp
index 29097b4ae7..6c919ee5d4 100644
--- a/include/armnn/backends/IBackendInternal.hpp
+++ b/include/armnn/backends/IBackendInternal.hpp
@@ -115,9 +115,16 @@ public:
virtual IWorkloadFactoryPtr CreateWorkloadFactory(
class TensorHandleFactoryRegistry& tensorHandleFactoryRegistry) const;
+ /// Create the runtime context of the backend
+ ///
+ /// Implementations may return a default-constructed IBackendContextPtr if
+ /// no context is needed at runtime.
+ /// Implementations must throw BackendUnavailableException if the backend
+ /// cannot be used (for example, necessary accelerator hardware is not present).
+ /// The default implementation always returns a default-constructed pointer.
virtual IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const;
- // Context specifically used for profiling interaction from backends.
+ /// Create context specifically used for profiling interaction from backends.
virtual IBackendProfilingContextPtr CreateBackendProfilingContext(const IRuntime::CreationOptions& creationOptions,
armnn::profiling::IBackendProfiling& backendProfiling) const;