aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2019-12-12 15:10:38 +0000
committerNarumol Prangnawarat <narumol.prangnawarat@arm.com>2019-12-19 16:42:29 +0000
commitf2fa51031b0cf64a93da1dec9d3abd8c4ee3a13c (patch)
tree06f3728ca077bf57ee52cd948ade88f5049f62e0
parente56fb45b81b11e205f01094a54f5c1803a871005 (diff)
downloadarmnn-f2fa51031b0cf64a93da1dec9d3abd8c4ee3a13c.tar.gz
IVGCVSW-4214 Add README for standalone dynamic backend developer guide
* Add README of an example how to build standalone dynamic backends * Change the links to public API for backends Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: I32ee15ba1b9ea3a6317ae184de8d28bb31eb5d9d
-rw-r--r--src/backends/README.md6
-rw-r--r--src/dynamic/README.md33
2 files changed, 36 insertions, 3 deletions
diff --git a/src/backends/README.md b/src/backends/README.md
index 4c59222097..6005facacb 100644
--- a/src/backends/README.md
+++ b/src/backends/README.md
@@ -105,7 +105,7 @@ with previous Arm NN versions.
## The IBackendInternal interface
-All backends need to implement the [IBackendInternal](backendsCommon/IBackendInternal.hpp) interface.
+All backends need to implement the [IBackendInternal](../../include/armnn/backends/IBackendInternal.hpp) interface.
The interface functions to be implemented are:
```c++
@@ -152,7 +152,7 @@ it sees fit and it keeps these objects for a short period of time. Examples:
As mentioned above, all backends need to be registered through the BackendRegistry so Arm NN knows
about them. Registration requires a unique backend ID string and a lambda function that
-returns a unique pointer to the [IBackendInternal interface](backendsCommon/IBackendInternal.hpp).
+returns a unique pointer to the [IBackendInternal interface](../../include/armnn/backends/IBackendInternal.hpp).
For registering a backend only this lambda function needs to exist, not the actual backend. This
allows dynamically creating the backend objects when they are needed.
@@ -215,7 +215,7 @@ is still in place for backward compatibility, but it's now considered deprecated
## The IBackendContext interface
Backends may need to be notified whenever a network is loaded or unloaded. To support that, one can implement the optional
-[IBackendContext](backendsCommon/IBackendContext.hpp) interface. The framework calls the ```CreateBackendContext(...)```
+[IBackendContext](../../include/armnn/backends/IBackendContext.hpp) interface. The framework calls the ```CreateBackendContext(...)```
method for each backend in the Runtime. If the backend returns a valid unique pointer to a backend context, then the
runtime will hold this for its entire lifetime. It then calls the following interface functions for each stored context:
diff --git a/src/dynamic/README.md b/src/dynamic/README.md
new file mode 100644
index 0000000000..ccdb668e73
--- /dev/null
+++ b/src/dynamic/README.md
@@ -0,0 +1,33 @@
+# Standalone dynamic backend developer guide
+
+Arm NN allows adding new dynamic backends. Dynamic Backends can be compiled as standalone against Arm NN
+and can be loaded by Arm NN dynamically at runtime.
+
+To be properly loaded and used, the backend instances must comply to the standard interface for dynamic backends
+and to the versioning rules that enforce ABI compatibility.
+The details of how to add dynamic backends can be found in [src/backends/README.md](../backends/README.md).
+
+
+## Standalone dynamic backend example
+
+The source code includes an example that is used to generate a dynamic implementation of the reference backend
+is provided at
+
+[RefDynamicBackend.hpp](./reference/RefDynamicBackend.hpp)
+[RefDynamicBackend.cpp](./reference/RefDynamicBackend.cpp)
+
+The makefile used for building the standalone reference dynamic backend is also provided:
+[CMakeLists.txt](./reference/CMakeLists.txt)
+
+
+## Dynamic backend loading paths
+
+During the creation of the Runtime, Arm NN will scan a given set of paths searching for suitable dynamic backend objects to load.
+A list of (absolute) paths can be specified at compile-time by setting a define named ```DYNAMIC_BACKEND_PATHS```
+ in the form of a colon-separated list of strings.
+
+```shell
+-DDYNAMIC_BACKEND_PATHS="PATH_1:PATH_2...:PATH_N"
+```
+
+The paths will be processed in the same order as they are indicated in the macro.