aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/armnn/Network.cpp8
-rw-r--r--src/armnn/test/EndToEndTest.cpp14
-rw-r--r--src/armnn/test/FlowControl.cpp14
-rw-r--r--src/armnn/test/RuntimeTests.cpp18
-rw-r--r--src/backends/backendsCommon/test/OptimizedNetworkTests.cpp28
-rw-r--r--src/backends/neon/test/NeonOptimizedNetworkTests.cpp14
6 files changed, 74 insertions, 22 deletions
diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp
index 1f59ed51a2..668b634bc7 100644
--- a/src/armnn/Network.cpp
+++ b/src/armnn/Network.cpp
@@ -1018,7 +1018,7 @@ IOptimizedNetworkPtr Optimize(const INetwork& inNetwork,
{
if (backendPreferences.empty())
{
- throw armnn::InvalidArgumentException("Invoked Optimize with no backends specified");
+ throw InvalidArgumentException("Invoked Optimize with no backends specified");
}
if (options.m_ReduceFp32ToFp16 && options.m_ReduceFp32ToBf16)
@@ -1082,7 +1082,7 @@ IOptimizedNetworkPtr Optimize(const INetwork& inNetwork,
failureMsg << "None of the preferred backends " << backendPreferences
<< " are supported. Current platform provides " << backendSettings.m_SupportedBackends;
ReportError(failureMsg.str(), messages);
- return IOptimizedNetworkPtr(nullptr, &IOptimizedNetwork::Destroy);
+ throw InvalidArgumentException(failureMsg.str());
}
// Create a map to temporarily hold initialized backend objects
@@ -1100,7 +1100,7 @@ IOptimizedNetworkPtr Optimize(const INetwork& inNetwork,
if (assignBackendsResult.m_Error)
{
// Failed to assign a backend to each layer
- return IOptimizedNetworkPtr(nullptr, &IOptimizedNetwork::Destroy);
+ throw InvalidArgumentException("Failed to assign a backend to each layer");
}
Optimizer::Pass(optGraph, MakeOptimizations(OptimizeInverseConversionsFp16(),
@@ -1114,7 +1114,7 @@ IOptimizedNetworkPtr Optimize(const INetwork& inNetwork,
if (backendOptimizationResult.m_Error)
{
// Failed to apply the backend-specific optimizations
- return IOptimizedNetworkPtr(nullptr, &IOptimizedNetwork::Destroy);
+ throw InvalidArgumentException("Failed to apply the backend-specific optimizations");
}
// If the debug flag is set, then insert a DebugLayer after each layer
diff --git a/src/armnn/test/EndToEndTest.cpp b/src/armnn/test/EndToEndTest.cpp
index a8192a6480..56ff454703 100644
--- a/src/armnn/test/EndToEndTest.cpp
+++ b/src/armnn/test/EndToEndTest.cpp
@@ -42,8 +42,18 @@ BOOST_AUTO_TEST_CASE(ErrorOnLoadNetwork)
// optimize the network
std::vector<BackendId> backends = {Compute::CpuAcc};
- IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
- BOOST_CHECK(!optNet);
+ std::vector<std::string> errMessages;
+
+ try
+ {
+ Optimize(*net, backends, runtime->GetDeviceSpec(), OptimizerOptions(), errMessages);
+ BOOST_FAIL("Should have thrown an exception.");
+ }
+ catch (const InvalidArgumentException& e)
+ {
+ // Different exceptions are thrown on different backends
+ }
+ BOOST_CHECK(errMessages.size() > 0);
}
BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/armnn/test/FlowControl.cpp b/src/armnn/test/FlowControl.cpp
index 6198ca8a24..b0667a3778 100644
--- a/src/armnn/test/FlowControl.cpp
+++ b/src/armnn/test/FlowControl.cpp
@@ -51,8 +51,18 @@ BOOST_AUTO_TEST_CASE(ErrorOnLoadNetwork)
// optimize the network
std::vector<BackendId> backends = {Compute::CpuRef};
- IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
- BOOST_CHECK(!optNet); // Should have failed to optimise, as flow control is not yet implemented
+ std::vector<std::string> errMessages;
+
+ try
+ {
+ Optimize(*net, backends, runtime->GetDeviceSpec(), OptimizerOptions(), errMessages);
+ BOOST_FAIL("Should have thrown an exception.");
+ }
+ catch (const InvalidArgumentException& e)
+ {
+ // Different exceptions are thrown on different backends
+ }
+ BOOST_TEST(errMessages.size() > 1);
}
BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/armnn/test/RuntimeTests.cpp b/src/armnn/test/RuntimeTests.cpp
index 12ec8b1ece..b3a8bbd6a6 100644
--- a/src/armnn/test/RuntimeTests.cpp
+++ b/src/armnn/test/RuntimeTests.cpp
@@ -262,17 +262,21 @@ BOOST_AUTO_TEST_CASE(IVGCVSW_1929_QuantizedSoftmaxIssue)
std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
std::vector<std::string> errMessages;
- armnn::IOptimizedNetworkPtr optNet = Optimize(*net,
+
+ try
+ {
+ armnn::IOptimizedNetworkPtr optNet = Optimize(*net,
backends,
runtime->GetDeviceSpec(),
OptimizerOptions(),
errMessages);
-
- BOOST_TEST(errMessages.size() == 1);
- BOOST_TEST(errMessages[0] ==
- "ERROR: output 0 of layer Softmax (softmax) is of type "
- "Quantized 8 bit but its scale parameter has not been set");
- BOOST_TEST(!optNet);
+ BOOST_FAIL("An exception should have been thrown");
+ }
+ catch (const InvalidArgumentException& e)
+ {
+ // Different exceptions are thrown on different backends
+ }
+ BOOST_CHECK(errMessages.size() > 0);
}
BOOST_AUTO_TEST_CASE(RuntimeBackendOptions)
diff --git a/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp b/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp
index d82ee0e2fc..c8986f5d4d 100644
--- a/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp
+++ b/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp
@@ -84,8 +84,18 @@ BOOST_AUTO_TEST_CASE(OptimizeValidateDeviceNonSupportLayerNoFallback)
armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
- armnn::IOptimizedNetworkPtr optNet = armnn::Optimize(*net, backends, runtime->GetDeviceSpec());
- BOOST_CHECK(!optNet);
+ std::vector<std::string> errMessages;
+
+ try
+ {
+ Optimize(*net, backends, runtime->GetDeviceSpec(), armnn::OptimizerOptions(), errMessages);
+ BOOST_FAIL("Should have thrown an exception.");
+ }
+ catch (const armnn::InvalidArgumentException& e)
+ {
+ // Different exceptions are thrown on different backends
+ }
+ BOOST_CHECK(errMessages.size() > 0);
}
BOOST_AUTO_TEST_CASE(OptimizeValidateDeviceNonSupportLayerWithFallback)
@@ -190,10 +200,18 @@ BOOST_AUTO_TEST_CASE(OptimizeValidateWorkloadsUndefinedComputeDevice)
armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
std::vector<armnn::BackendId> backends = { armnn::Compute::Undefined };
+ std::vector<std::string> errMessages;
- armnn::IOptimizedNetworkPtr optNet = armnn::Optimize(net, backends, runtime->GetDeviceSpec());
- BOOST_CHECK(!optNet);
-
+ try
+ {
+ Optimize(net, backends, runtime->GetDeviceSpec(), armnn::OptimizerOptions(), errMessages);
+ BOOST_FAIL("Should have thrown an exception.");
+ }
+ catch (const armnn::InvalidArgumentException& e)
+ {
+ // Different exceptions are thrown on different backends
+ }
+ BOOST_CHECK(errMessages.size() > 0);
}
BOOST_AUTO_TEST_CASE(OptimizeValidateWorkloadsUndefinedComputeDeviceWithFallback)
diff --git a/src/backends/neon/test/NeonOptimizedNetworkTests.cpp b/src/backends/neon/test/NeonOptimizedNetworkTests.cpp
index 4c27aca6c3..302711029e 100644
--- a/src/backends/neon/test/NeonOptimizedNetworkTests.cpp
+++ b/src/backends/neon/test/NeonOptimizedNetworkTests.cpp
@@ -66,8 +66,18 @@ BOOST_AUTO_TEST_CASE(OptimizeValidateDeviceNonSupportLayerNoFallback)
armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
- armnn::IOptimizedNetworkPtr optNet = armnn::Optimize(*net, backends, runtime->GetDeviceSpec());
- BOOST_CHECK(!optNet);
+ std::vector<std::string> errMessages;
+
+ try
+ {
+ Optimize(*net, backends, runtime->GetDeviceSpec(), armnn::OptimizerOptions(), errMessages);
+ BOOST_FAIL("Should have thrown an exception.");
+ }
+ catch (const armnn::InvalidArgumentException& e)
+ {
+ // Different exceptions are thrown on different backends
+ }
+ BOOST_CHECK(errMessages.size() > 0);
}
BOOST_AUTO_TEST_CASE(FastMathEnabledTestOnCpuAcc)