From 03bf98a8bc51ad20eef4b9ca5fbf6ce15e063721 Mon Sep 17 00:00:00 2001 From: Colm Donelan Date: Mon, 30 May 2022 15:20:36 +0100 Subject: IVGCVSW-6873 Import inputs but don't export outputs fails. Only one bool is used to indicate whether inputs should be imported. However, its possible for the user to want to import inputs but not export outputs. In addition it's possible for a user to enabled import during optimize but then pass a memory source that does not require import. * Add m_ExportEnabled to INetwork.hpp. * Modify Network::dNetwork to consider both m_ImportEnabled and m_ExportEnabled. * Add ValidateSourcesMatchOptimizedNetwork to LoadedNetwork to validate import options between optimize and network load. * Update the TfLite delegate consider exportEnabled flag in the optimizer. !armnn-internal-tests:425350 Signed-off-by: Colm Donelan Change-Id: I776eab81595898e43f91ab40306962eae61329f4 --- src/backends/cl/test/ClCustomAllocatorTests.cpp | 1 + src/backends/cl/test/ClFallbackTests.cpp | 2 ++ src/backends/cl/test/ClImportTensorHandleTests.cpp | 7 +++++++ src/backends/cl/test/ClOptimizedNetworkTests.cpp | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) (limited to 'src/backends/cl') diff --git a/src/backends/cl/test/ClCustomAllocatorTests.cpp b/src/backends/cl/test/ClCustomAllocatorTests.cpp index 139e688dc2..251c98fcad 100644 --- a/src/backends/cl/test/ClCustomAllocatorTests.cpp +++ b/src/backends/cl/test/ClCustomAllocatorTests.cpp @@ -120,6 +120,7 @@ TEST_CASE("ClCustomAllocatorTest") // Optimise ArmNN network OptimizerOptions optOptions; optOptions.m_ImportEnabled = true; + optOptions.m_ExportEnabled = true; armnn::IOptimizedNetworkPtr optNet = Optimize(*myNetwork, {"GpuAcc"}, run->GetDeviceSpec(), optOptions); CHECK(optNet); diff --git a/src/backends/cl/test/ClFallbackTests.cpp b/src/backends/cl/test/ClFallbackTests.cpp index 6ac94337ba..51a983a681 100644 --- a/src/backends/cl/test/ClFallbackTests.cpp +++ b/src/backends/cl/test/ClFallbackTests.cpp @@ -50,6 +50,7 @@ TEST_CASE("ClImportEnabledFallbackToNeon") // optimize the network OptimizerOptions optOptions; optOptions.m_ImportEnabled = true; + optOptions.m_ExportEnabled = true; IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec(), optOptions); Graph& graph = GetGraphForTesting(optNet.get()); @@ -330,6 +331,7 @@ TEST_CASE("ClImportEnabledFallbackSubgraphToNeon") // optimize the network OptimizerOptions optOptions; optOptions.m_ImportEnabled = true; + optOptions.m_ExportEnabled = true; IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec(), optOptions); Graph& graph = GetGraphForTesting(optNet.get()); diff --git a/src/backends/cl/test/ClImportTensorHandleTests.cpp b/src/backends/cl/test/ClImportTensorHandleTests.cpp index 20537b3c81..9a075d2b7d 100644 --- a/src/backends/cl/test/ClImportTensorHandleTests.cpp +++ b/src/backends/cl/test/ClImportTensorHandleTests.cpp @@ -142,6 +142,7 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClImportEndToEnd") // Optimize the network OptimizerOptions optOptions; optOptions.m_ImportEnabled = true; + optOptions.m_ExportEnabled = true; std::vector backends = {armnn::Compute::GpuAcc}; IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec(), optOptions); CHECK(optNet); @@ -338,6 +339,7 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportConv2dEndToEnd") // Optimize the network OptimizerOptions optOptions; optOptions.m_ImportEnabled = false; + optOptions.m_ExportEnabled = false; std::vector backends = {armnn::Compute::GpuAcc}; IOptimizedNetworkPtr optNet = Optimize(*network, backends, runtime->GetDeviceSpec(), optOptions); CHECK(optNet); @@ -470,6 +472,7 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportConvertFp16toFp32EndToE // Optimize the network OptimizerOptions optOptions; optOptions.m_ImportEnabled = false; + optOptions.m_ExportEnabled = false; std::vector backends = {armnn::Compute::GpuAcc}; IOptimizedNetworkPtr optNet = Optimize(network.GetGraph(), backends, runtime->GetDeviceSpec(), optOptions); CHECK(optNet); @@ -613,6 +616,7 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportConvertFp32toFp16EndToE // Optimize the network OptimizerOptions optOptions; optOptions.m_ImportEnabled = false; + optOptions.m_ExportEnabled = false; std::vector backends = {armnn::Compute::GpuAcc}; IOptimizedNetworkPtr optNet = Optimize(network.GetGraph(), backends, runtime->GetDeviceSpec(), optOptions); CHECK(optNet); @@ -747,6 +751,7 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportSimpleConvertFp32toFp16 // Optimize the network OptimizerOptions optOptions; optOptions.m_ImportEnabled = false; + optOptions.m_ExportEnabled = false; std::vector backends = {armnn::Compute::GpuAcc}; IOptimizedNetworkPtr optNet = Optimize(network.GetGraph(), backends, runtime->GetDeviceSpec(), optOptions); CHECK(optNet); @@ -896,6 +901,7 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportRepeatedInferencesEndTo // Optimize the network OptimizerOptions optOptions; optOptions.m_ImportEnabled = false; + optOptions.m_ExportEnabled = false; std::vector backends = {armnn::Compute::GpuAcc}; IOptimizedNetworkPtr optNet = Optimize(*network, backends, runtime->GetDeviceSpec(), optOptions); CHECK(optNet); @@ -1117,6 +1123,7 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClForceImportRepeatedInferencesInver // Optimize the network OptimizerOptions optOptions; optOptions.m_ImportEnabled = false; + optOptions.m_ExportEnabled = false; std::vector backends = {armnn::Compute::GpuAcc}; IOptimizedNetworkPtr optNet = Optimize(*network, backends, runtime->GetDeviceSpec(), optOptions); CHECK(optNet); diff --git a/src/backends/cl/test/ClOptimizedNetworkTests.cpp b/src/backends/cl/test/ClOptimizedNetworkTests.cpp index cf17eae208..6648759a9a 100644 --- a/src/backends/cl/test/ClOptimizedNetworkTests.cpp +++ b/src/backends/cl/test/ClOptimizedNetworkTests.cpp @@ -130,7 +130,7 @@ TEST_CASE("FastMathEnabledTestOnGpuAcc") auto modelOptionsOut = GetModelOptionsForTesting(optimizedNet.get()); - CHECK(modelOptionsOut.size() == 1); + CHECK(modelOptionsOut.size() == 2); // FastMathEnabled and the Global to hold the import export values. CHECK(modelOptionsOut[0].GetOption(0).GetName() == "FastMathEnabled"); CHECK(modelOptionsOut[0].GetOption(0).GetValue().AsBool() == true); } -- cgit v1.2.1