diff options
-rw-r--r-- | src/backends/cl/test/ClImportTensorHandleTests.cpp | 4 | ||||
-rw-r--r-- | src/backends/cl/workloads/ClConvolution2dWorkload.hpp | 14 | ||||
-rw-r--r-- | 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<ClImportTensorHandle*>(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<ClImportTensorHandle*>(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<uintptr_t>(memory) % m_TypeAlignment) + if (source != MemorySource::Malloc || reinterpret_cast<uintptr_t>(memory) % m_TypeAlignment) { return false; } |