From 3826ab6dc5f93deede84f1a41fe8bed1400c3ca9 Mon Sep 17 00:00:00 2001 From: David Monahan Date: Mon, 21 Feb 2022 12:26:16 +0000 Subject: IVGCVSW-6700 Disable importing on ClConv2d when datalayout is NCHW Signed-off-by: David Monahan Change-Id: Ia916219a33535f4c288fa44fdc23961a3e54e788 --- src/backends/cl/test/ClImportTensorHandleTests.cpp | 4 ++-- src/backends/cl/workloads/ClConvolution2dWorkload.hpp | 14 +++++++++++++- src/backends/neon/NeonTensorHandle.hpp | 3 +-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/backends/cl/test/ClImportTensorHandleTests.cpp b/src/backends/cl/test/ClImportTensorHandleTests.cpp index 161765484d..27cd1365fd 100644 --- a/src/backends/cl/test/ClImportTensorHandleTests.cpp +++ b/src/backends/cl/test/ClImportTensorHandleTests.cpp @@ -225,7 +225,7 @@ TEST_CASE_FIXTURE(ClContextControlFixture, "ClCanBeImported") TensorInfo info({ 1, 24, 16, 3 }, DataType::Float32); // create TensorHandle for memory import - auto handle = handleFactory.CreateTensorHandle(info); + auto handle = handleFactory.CreateTensorHandle(info, DataLayout::NHWC); // Get CLtensor arm_compute::CLTensor& tensor = PolymorphicDowncast(handle.get())->GetTensor(); @@ -252,7 +252,7 @@ TEST_CASE("ClCanBeImportedAlignedMemory") TensorInfo info({ 1, 1, 1, 1 }, DataType::Float32); // create TensorHandle (Memory Managed status is irrelevant) - auto handle = handleFactory.CreateTensorHandle(info); + auto handle = handleFactory.CreateTensorHandle(info, DataLayout::NHWC); // Get CLtensor arm_compute::CLTensor& tensor = PolymorphicDowncast(handle.get())->GetTensor(); diff --git a/src/backends/cl/workloads/ClConvolution2dWorkload.hpp b/src/backends/cl/workloads/ClConvolution2dWorkload.hpp index e4177e4327..bba92d2ad0 100644 --- a/src/backends/cl/workloads/ClConvolution2dWorkload.hpp +++ b/src/backends/cl/workloads/ClConvolution2dWorkload.hpp @@ -40,7 +40,19 @@ public: arm_compute::ConvolutionMethod GetConvolutionMethod() const; - bool SupportsTensorHandleReplacement() const override { return true;}; + bool SupportsTensorHandleReplacement() const override + { + // NCHW DataLayout on ACL still uses paddding for alignment on the Conv2d workload so importing is unreliable. + if (m_Data.m_Parameters.m_DataLayout == DataLayout::NCHW) + { + return false; + } + else + { + return true; + } + } + protected: void Reconfigure() override; diff --git a/src/backends/neon/NeonTensorHandle.hpp b/src/backends/neon/NeonTensorHandle.hpp index f40b5fc2e5..9445cb1c75 100644 --- a/src/backends/neon/NeonTensorHandle.hpp +++ b/src/backends/neon/NeonTensorHandle.hpp @@ -116,8 +116,7 @@ public: bool CanBeImported(void* memory, MemorySource source) override { - armnn::IgnoreUnused(source); - if (reinterpret_cast(memory) % m_TypeAlignment) + if (source != MemorySource::Malloc || reinterpret_cast(memory) % m_TypeAlignment) { return false; } -- cgit v1.2.1