diff options
Diffstat (limited to 'src')
-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 | ||||
-rw-r--r-- | src/backends/backendsCommon/test/OptimizedNetworkTests.cpp | 28 | ||||
-rw-r--r-- | src/backends/neon/test/NeonOptimizedNetworkTests.cpp | 14 |
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) |