From 2400b6dd383f40febc78cf71475addd51ae9245f Mon Sep 17 00:00:00 2001 From: Matteo Martincigh Date: Tue, 9 Oct 2018 18:19:20 +0100 Subject: IVGCVSW-1967 Fix L2Norm NHWC unit test * Applying the proper tensor shape during the tests depending on the specific data layout used Change-Id: I9c6c1e077236e84cecc1e10d7b2d0bd901df3ebd --- src/armnn/test/CreateWorkload.hpp | 9 +++++++-- src/backends/cl/test/ClCreateWorkloadTests.cpp | 16 +++++++++++----- src/backends/neon/test/NeonCreateWorkloadTests.cpp | 18 ++++++++++++------ 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/armnn/test/CreateWorkload.hpp b/src/armnn/test/CreateWorkload.hpp index fed9dd6b33..b9735f4f2f 100644 --- a/src/armnn/test/CreateWorkload.hpp +++ b/src/armnn/test/CreateWorkload.hpp @@ -885,9 +885,14 @@ std::unique_ptr CreateL2NormalizationWorkloadTest(armnn Layer* const input = graph.AddLayer(0, "input"); Layer* const output = graph.AddLayer(0, "output"); + TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? + TensorShape{ 5, 20, 50, 67 } : TensorShape{ 5, 50, 67, 20 }; + TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? + TensorShape{ 5, 20, 50, 67 } : TensorShape{ 5, 50, 67, 20 }; + // Connects up. - armnn::TensorInfo inputTensorInfo({ 5, 20, 50, 67 }, DataType); - armnn::TensorInfo outputTensorInfo({ 5, 20, 50, 67 }, DataType); + armnn::TensorInfo inputTensorInfo(inputShape, DataType); + armnn::TensorInfo outputTensorInfo(outputShape, DataType); Connect(input, layer, inputTensorInfo); Connect(layer, output, outputTensorInfo); CreateTensorHandles(graph, factory); diff --git a/src/backends/cl/test/ClCreateWorkloadTests.cpp b/src/backends/cl/test/ClCreateWorkloadTests.cpp index 659ba82e8a..6ec89aa579 100644 --- a/src/backends/cl/test/ClCreateWorkloadTests.cpp +++ b/src/backends/cl/test/ClCreateWorkloadTests.cpp @@ -578,17 +578,23 @@ static void ClL2NormalizationWorkloadTest(DataLayout dataLayout) { Graph graph; ClWorkloadFactory factory; - - auto workload = CreateL2NormalizationWorkloadTest - (factory, graph, dataLayout); + auto workload = + CreateL2NormalizationWorkloadTest(factory, graph, dataLayout); // Checks that inputs/outputs are as we expect them (see definition of CreateNormalizationWorkloadTest). L2NormalizationQueueDescriptor queueDescriptor = workload->GetData(); auto inputHandle = boost::polymorphic_downcast(queueDescriptor.m_Inputs[0]); auto outputHandle = boost::polymorphic_downcast(queueDescriptor.m_Outputs[0]); - BOOST_TEST(CompareIClTensorHandleShape(inputHandle, { 5, 20, 50, 67 })); - BOOST_TEST(CompareIClTensorHandleShape(outputHandle, { 5, 20, 50, 67 })); + std::initializer_list inputShape = (dataLayout == DataLayout::NCHW) + ? std::initializer_list({ 5, 20, 50, 67 }) + : std::initializer_list({ 5, 50, 67, 20 }); + std::initializer_list outputShape = (dataLayout == DataLayout::NCHW) + ? std::initializer_list({ 5, 20, 50, 67 }) + : std::initializer_list({ 5, 50, 67, 20 }); + + BOOST_TEST(CompareIClTensorHandleShape(inputHandle, inputShape)); + BOOST_TEST(CompareIClTensorHandleShape(outputHandle, outputShape)); } BOOST_AUTO_TEST_CASE(CreateL2NormalizationFloatNchwWorkload) diff --git a/src/backends/neon/test/NeonCreateWorkloadTests.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp index d1a5b2a5f2..05281cded2 100644 --- a/src/backends/neon/test/NeonCreateWorkloadTests.cpp +++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp @@ -493,17 +493,23 @@ BOOST_AUTO_TEST_CASE(CreateMemCopyWorkloadsNeon) template static void NeonCreateL2NormalizationWorkloadTest(DataLayout dataLayout) { - Graph graph; - NeonWorkloadFactory factory; - auto workload = CreateL2NormalizationWorkloadTest(factory, graph, dataLayout); + Graph graph; + NeonWorkloadFactory factory; + auto workload = + CreateL2NormalizationWorkloadTest(factory, graph, dataLayout); // Checks that inputs/outputs are as we expect them (see definition of CreateNormalizationWorkloadTest). L2NormalizationQueueDescriptor queueDescriptor = workload->GetData(); auto inputHandle = boost::polymorphic_downcast(queueDescriptor.m_Inputs[0]); auto outputHandle = boost::polymorphic_downcast(queueDescriptor.m_Outputs[0]); - BOOST_TEST(TestNeonTensorHandleInfo(inputHandle, TensorInfo({ 5, 20, 50, 67 }, DataType))); - BOOST_TEST(TestNeonTensorHandleInfo(outputHandle, TensorInfo({ 5, 20, 50, 67 }, DataType))); + + TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? + TensorShape{ 5, 20, 50, 67 } : TensorShape{ 5, 50, 67, 20 }; + TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? + TensorShape{ 5, 20, 50, 67 } : TensorShape{ 5, 50, 67, 20 }; + + BOOST_TEST(TestNeonTensorHandleInfo(inputHandle, TensorInfo(inputShape, DataType))); + BOOST_TEST(TestNeonTensorHandleInfo(outputHandle, TensorInfo(outputShape, DataType))); } #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC -- cgit v1.2.1