From ffab16f9f23868b5b9338a1b63393f3be53211cb Mon Sep 17 00:00:00 2001 From: James Conroy Date: Thu, 7 Nov 2019 14:37:09 +0000 Subject: IVGCVSW-4077 Disable NEON memory import * Temporarily handles cases in CalculateEdgeStrategy where dstFactory pointer is null when import is disabled. * This patch is required for ensuring debug layer works correctly when executing a model on Neon. Signed-off-by: James Conroy Change-Id: I7304723246d362d6d9073c3d0b1224e194a8532c --- src/armnn/Network.cpp | 6 ++++++ src/backends/neon/NeonTensorHandleFactory.cpp | 2 +- src/backends/neon/test/NeonEndToEndTests.cpp | 10 +++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp index f4bfc7a88e..b1cb5a871a 100644 --- a/src/armnn/Network.cpp +++ b/src/armnn/Network.cpp @@ -699,6 +699,12 @@ EdgeStrategy CalculateEdgeStrategy(BackendsMap& backends, for (auto&& pref : dstPrefs) { ITensorHandleFactory* dstFactory = registry.GetFactory(pref); + + // Handles some cases where dstFactory is null when Neon memory import is disabled + if (!dstFactory) { + return EdgeStrategy::CopyToTarget; + } + if ((dstFactory->GetImportFlags() & srcFactory->GetExportFlags()) != 0) { return EdgeStrategy::ExportToTarget; diff --git a/src/backends/neon/NeonTensorHandleFactory.cpp b/src/backends/neon/NeonTensorHandleFactory.cpp index 80f46d2237..d5fef4ea95 100644 --- a/src/backends/neon/NeonTensorHandleFactory.cpp +++ b/src/backends/neon/NeonTensorHandleFactory.cpp @@ -104,7 +104,7 @@ MemorySourceFlags NeonTensorHandleFactory::GetExportFlags() const MemorySourceFlags NeonTensorHandleFactory::GetImportFlags() const { - return static_cast(MemorySource::Malloc); + return 0; } } // namespace armnn diff --git a/src/backends/neon/test/NeonEndToEndTests.cpp b/src/backends/neon/test/NeonEndToEndTests.cpp index 5146a598c7..26c06758a4 100644 --- a/src/backends/neon/test/NeonEndToEndTests.cpp +++ b/src/backends/neon/test/NeonEndToEndTests.cpp @@ -366,27 +366,27 @@ BOOST_AUTO_TEST_CASE(NeonExportNonAlignedOutputPointerTest) ExportNonAlignedOutputPointerTest(defaultBackends); } -BOOST_AUTO_TEST_CASE(NeonImportAlignedPointerTest) +BOOST_AUTO_TEST_CASE(NeonImportAlignedPointerTest, * boost::unit_test::disabled()) { ImportAlignedPointerTest(defaultBackends); } -BOOST_AUTO_TEST_CASE(NeonImportOnlyWorkload) +BOOST_AUTO_TEST_CASE(NeonImportOnlyWorkload, * boost::unit_test::disabled()) { ImportOnlyWorkload(defaultBackends); } -BOOST_AUTO_TEST_CASE(NeonExportOnlyWorkload) +BOOST_AUTO_TEST_CASE(NeonExportOnlyWorkload, * boost::unit_test::disabled()) { ExportOnlyWorkload(defaultBackends); } -BOOST_AUTO_TEST_CASE(NeonImportAndExportWorkload) +BOOST_AUTO_TEST_CASE(NeonImportAndExportWorkload, * boost::unit_test::disabled()) { ImportAndExportWorkload(defaultBackends); } -BOOST_AUTO_TEST_CASE(NeonExportOutputWithSeveralOutputSlotConnectionsTest) +BOOST_AUTO_TEST_CASE(NeonExportOutputWithSeveralOutputSlotConnectionsTest, * boost::unit_test::disabled()) { ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends); } -- cgit v1.2.1