diff options
Diffstat (limited to 'src/armnn')
-rw-r--r-- | src/armnn/Network.cpp | 8 | ||||
-rw-r--r-- | src/armnn/test/EndToEndTest.cpp | 14 | ||||
-rw-r--r-- | src/armnn/test/FlowControl.cpp | 14 | ||||
-rw-r--r-- | src/armnn/test/RuntimeTests.cpp | 18 |
4 files changed, 39 insertions, 15 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) |