diff options
Diffstat (limited to 'src/backends/neon/test')
-rw-r--r-- | src/backends/neon/test/NeonCreateWorkloadTests.cpp | 52 | ||||
-rw-r--r-- | src/backends/neon/test/NeonLayerTests.cpp | 66 |
2 files changed, 118 insertions, 0 deletions
diff --git a/src/backends/neon/test/NeonCreateWorkloadTests.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp index 49c5a72a90..ac7eb253c2 100644 --- a/src/backends/neon/test/NeonCreateWorkloadTests.cpp +++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp @@ -19,6 +19,12 @@ BOOST_AUTO_TEST_SUITE(CreateWorkloadNeon) namespace { +boost::test_tools::predicate_result CompareIAclTensorHandleShape(IAclTensorHandle* tensorHandle, + std::initializer_list<unsigned int> expectedDimensions) +{ + return CompareTensorHandleShape<IAclTensorHandle>(tensorHandle, expectedDimensions); +} + bool TestNeonTensorHandleInfo(armnn::IAclTensorHandle* handle, const armnn::TensorInfo& expectedInfo) { using namespace armnn::armcomputetensorutils; @@ -493,6 +499,52 @@ BOOST_AUTO_TEST_CASE(CreateReshapeUint8Workload) NeonCreateReshapeWorkloadTest<DataType::QuantisedAsymm8>(); } +template <typename ResizeWorkloadType, armnn::DataType DataType> +static void NeonCreateResizeWorkloadTest(DataLayout dataLayout) +{ + Graph graph; + NeonWorkloadFactory factory = + NeonWorkloadFactoryHelper::GetFactory(NeonWorkloadFactoryHelper::GetMemoryManager()); + auto workload = CreateResizeBilinearWorkloadTest<ResizeWorkloadType, DataType>(factory, graph, dataLayout); + + auto queueDescriptor = workload->GetData(); + + auto inputHandle = boost::polymorphic_downcast<IAclTensorHandle*>(queueDescriptor.m_Inputs[0]); + auto outputHandle = boost::polymorphic_downcast<IAclTensorHandle*>(queueDescriptor.m_Outputs[0]); + + switch (dataLayout) + { + case DataLayout::NHWC: + BOOST_TEST(CompareIAclTensorHandleShape(inputHandle, { 2, 4, 4, 3 })); + BOOST_TEST(CompareIAclTensorHandleShape(outputHandle, { 2, 2, 2, 3 })); + break; + case DataLayout::NCHW: + default: + BOOST_TEST(CompareIAclTensorHandleShape(inputHandle, { 2, 3, 4, 4 })); + BOOST_TEST(CompareIAclTensorHandleShape(outputHandle, { 2, 3, 2, 2 })); + } +} + +BOOST_AUTO_TEST_CASE(CreateResizeFloat32NchwWorkload) +{ + NeonCreateResizeWorkloadTest<NeonResizeWorkload, armnn::DataType::Float32>(DataLayout::NCHW); +} + +BOOST_AUTO_TEST_CASE(CreateResizeUint8NchwWorkload) +{ + NeonCreateResizeWorkloadTest<NeonResizeWorkload, armnn::DataType::QuantisedAsymm8>(DataLayout::NCHW); +} + +BOOST_AUTO_TEST_CASE(CreateResizeFloat32NhwcWorkload) +{ + NeonCreateResizeWorkloadTest<NeonResizeWorkload, armnn::DataType::Float32>(DataLayout::NHWC); +} + +BOOST_AUTO_TEST_CASE(CreateResizeUint8NhwcWorkload) +{ + NeonCreateResizeWorkloadTest<NeonResizeWorkload, armnn::DataType::QuantisedAsymm8>(DataLayout::NHWC); +} + template <typename SoftmaxWorkloadType, typename armnn::DataType DataType> static void NeonCreateSoftmaxWorkloadTest() { diff --git a/src/backends/neon/test/NeonLayerTests.cpp b/src/backends/neon/test/NeonLayerTests.cpp index 586e994db5..aeebd4fd9e 100644 --- a/src/backends/neon/test/NeonLayerTests.cpp +++ b/src/backends/neon/test/NeonLayerTests.cpp @@ -616,6 +616,72 @@ ARMNN_AUTO_TEST_CASE(ResizeBilinearMagUint8Nhwc, ResizeBilinearMagTest<armnn::DataType::QuantisedAsymm8>, armnn::DataLayout::NHWC) +// Resize NearestNeighbor - NCHW +ARMNN_AUTO_TEST_CASE(SimpleResizeNearestNeighbor, + SimpleResizeNearestNeighborTest<armnn::DataType::Float32>, + armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborNop, + ResizeNearestNeighborNopTest<armnn::DataType::Float32>, + armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborSqMin, + ResizeNearestNeighborSqMinTest<armnn::DataType::Float32>, + armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborMin, + ResizeNearestNeighborMinTest<armnn::DataType::Float32>, + armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborMag, + ResizeNearestNeighborMagTest<armnn::DataType::Float32>, + armnn::DataLayout::NCHW, 0.1f, 50, 0.1f, 50) + +ARMNN_AUTO_TEST_CASE(SimpleResizeNearestNeighborUint8, + SimpleResizeNearestNeighborTest<armnn::DataType::QuantisedAsymm8>, + armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborNopUint8, + ResizeNearestNeighborNopTest<armnn::DataType::QuantisedAsymm8>, + armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborSqMinUint8, + ResizeNearestNeighborSqMinTest<armnn::DataType::QuantisedAsymm8>, + armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborMinUint8, + ResizeNearestNeighborMinTest<armnn::DataType::QuantisedAsymm8>, + armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborMagUint8, + ResizeNearestNeighborMagTest<armnn::DataType::QuantisedAsymm8>, + armnn::DataLayout::NCHW, 0.1f, 50, 0.1f, 50) + +// Resize NearestNeighbor - NHWC +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborNopNhwc, + ResizeNearestNeighborNopTest<armnn::DataType::Float32>, + armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(SimpleResizeNearestNeighborNhwc, + SimpleResizeNearestNeighborTest<armnn::DataType::Float32>, + armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborSqMinNhwc, + ResizeNearestNeighborSqMinTest<armnn::DataType::Float32>, + armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborMinNhwc, + ResizeNearestNeighborMinTest<armnn::DataType::Float32>, + armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborMagNhwc, + ResizeNearestNeighborMagTest<armnn::DataType::Float32>, + armnn::DataLayout::NHWC, 0.1f, 50, 0.1f, 50) + +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborNopUint8Nhwc, + ResizeNearestNeighborNopTest<armnn::DataType::QuantisedAsymm8>, + armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(SimpleResizeNearestNeighborUint8Nhwc, + SimpleResizeNearestNeighborTest<armnn::DataType::QuantisedAsymm8>, + armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborSqMinUint8Nhwc, + ResizeNearestNeighborSqMinTest<armnn::DataType::QuantisedAsymm8>, + armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborMinUint8Nhwc, + ResizeNearestNeighborMinTest<armnn::DataType::QuantisedAsymm8>, + armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(ResizeNearestNeighborMagUint8Nhwc, + ResizeNearestNeighborMagTest<armnn::DataType::QuantisedAsymm8>, + armnn::DataLayout::NHWC, 0.1f, 50, 0.1f, 50) + // Quantize ARMNN_AUTO_TEST_CASE(QuantizeSimpleUint8, QuantizeSimpleUint8Test) ARMNN_AUTO_TEST_CASE(QuantizeClampUint8, QuantizeClampUint8Test) |