Bugfix: Allow use of dynamic backendId in execute network

 * Stops execute network rejecting backendId based on BackendRegistry
 * Dynamically loaded backends arent visible yet as runtime isn't initialized

Change-Id: I87adfd137b2225ab07f8c3e996db9565caf276eb
Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
diff --git a/tests/ExecuteNetwork/ExecuteNetworkParams.cpp b/tests/ExecuteNetwork/ExecuteNetworkParams.cpp
index c298bd6..ccf8064 100644
--- a/tests/ExecuteNetwork/ExecuteNetworkParams.cpp
+++ b/tests/ExecuteNetwork/ExecuteNetworkParams.cpp
@@ -125,14 +125,18 @@
 
 void ExecuteNetworkParams::ValidateParams()
 {
-    // Check compute devices
-    std::string invalidBackends;
-    if (!CheckRequestedBackendsAreValid(m_ComputeDevices, armnn::Optional<std::string&>(invalidBackends)))
+    if (m_DynamicBackendsPath=="")
     {
-        throw armnn::InvalidArgumentException(fmt::format("Some of the requested compute devices are invalid. "
-                                                          "\nInvalid devices: {} \nAvailable devices are: {}",
-                                                          invalidBackends,
-                                                          armnn::BackendRegistryInstance().GetBackendIdsAsString()));
+        // Check compute devices are valid unless they are dynamically loaded at runtime
+        std::string invalidBackends;
+        if (!CheckRequestedBackendsAreValid(m_ComputeDevices, armnn::Optional<std::string&>(invalidBackends)))
+        {
+            throw armnn::InvalidArgumentException(
+                    fmt::format("Some of the requested compute devices are invalid. "
+                                "\nInvalid devices: {} \nAvailable devices are: {}",
+                                invalidBackends,
+                                armnn::BackendRegistryInstance().GetBackendIdsAsString()));
+        }
     }
 
     CheckClTuningParameter(m_TuningLevel, m_TuningPath, m_ComputeDevices);
diff --git a/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp b/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp
index 8434adf..72b784c 100644
--- a/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp
+++ b/tests/ExecuteNetwork/ExecuteNetworkProgramOptions.cpp
@@ -371,6 +371,7 @@
             ParseStringList(GetOptionValue<std::string>("write-outputs-to-file", m_CxxResult), ",");
     m_ExNetParams.m_GenerateTensorData =
             m_ExNetParams.m_InputTensorDataFilePaths.empty();
+    m_ExNetParams.m_DynamicBackendsPath = m_RuntimeOptions.m_DynamicBackendsPath;
 
     // Parse input tensor shape from the string we got from the command-line.
     std::vector<std::string> inputTensorShapesVector =