diff options
author | Ellen Norris-Thompson <ellen.norris-thompson@arm.com> | 2019-06-26 16:40:36 +0100 |
---|---|---|
committer | James Conroy <james.conroy@arm.com> | 2019-07-09 13:29:58 +0000 |
commit | 2979457c5974e298033c387a5cd33f95e3301623 (patch) | |
tree | df7b6b54def6c608602f487e4cffa0b1dc187a3f /src/backends/neon/test | |
parent | 39f4639a79625c8f37c6ca547dadc7925378ee3e (diff) | |
download | armnn-2979457c5974e298033c387a5cd33f95e3301623.tar.gz |
IVGCVSW-3355 Add NeonSpaceToDepthWorkload
* Add Neon backend support for SpaceToDepth
* Enabled Neon Unit, CreateWorkload and
EndToEnd tests for SpaceToDepth.
* Added QSymm16 support to NeonTensorHandle.
Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com>
Change-Id: Ibbb0bce5ad77dace2bf4c4c111006d2fadf844e8
Diffstat (limited to 'src/backends/neon/test')
-rw-r--r-- | src/backends/neon/test/NeonCreateWorkloadTests.cpp | 37 | ||||
-rw-r--r-- | src/backends/neon/test/NeonEndToEndTests.cpp | 21 | ||||
-rw-r--r-- | src/backends/neon/test/NeonLayerTests.cpp | 13 |
3 files changed, 71 insertions, 0 deletions
diff --git a/src/backends/neon/test/NeonCreateWorkloadTests.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp index 19b520d1e9..4968d0ed90 100644 --- a/src/backends/neon/test/NeonCreateWorkloadTests.cpp +++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp @@ -522,6 +522,43 @@ BOOST_AUTO_TEST_CASE(CreateSoftmaxFloatWorkload) NeonCreateSoftmaxWorkloadTest<NeonSoftmaxFloatWorkload, DataType::Float32>(); } +template <typename SpaceToDepthWorkloadType, typename armnn::DataType DataType> +static void NeonSpaceToDepthWorkloadTest() +{ + Graph graph; + NeonWorkloadFactory factory = + NeonWorkloadFactoryHelper::GetFactory(NeonWorkloadFactoryHelper::GetMemoryManager()); + + auto workload = CreateSpaceToDepthWorkloadTest<SpaceToDepthWorkloadType, DataType>(factory, graph); + + SpaceToDepthQueueDescriptor queueDescriptor = workload->GetData(); + auto inputHandle = boost::polymorphic_downcast<IAclTensorHandle*>(queueDescriptor.m_Inputs[0]); + auto outputHandle = boost::polymorphic_downcast<IAclTensorHandle*>(queueDescriptor.m_Outputs[0]); + + BOOST_TEST(TestNeonTensorHandleInfo(inputHandle, TensorInfo({ 1, 2, 2, 1 }, DataType))); + BOOST_TEST(TestNeonTensorHandleInfo(outputHandle, TensorInfo({ 1, 1, 1, 4 }, DataType))); +} + +BOOST_AUTO_TEST_CASE(CreateSpaceToDepthFloat32Workload) +{ + NeonSpaceToDepthWorkloadTest<NeonSpaceToDepthWorkload, armnn::DataType::Float32>(); +} + +BOOST_AUTO_TEST_CASE(CreateSpaceToDepthFloat16Workload) +{ + NeonSpaceToDepthWorkloadTest<NeonSpaceToDepthWorkload, armnn::DataType::Float16>(); +} + +BOOST_AUTO_TEST_CASE(CreateSpaceToDepthQAsymm8Workload) +{ + NeonSpaceToDepthWorkloadTest<NeonSpaceToDepthWorkload, armnn::DataType::QuantisedAsymm8>(); +} + +BOOST_AUTO_TEST_CASE(CreateSpaceToDepthQSymm16Workload) +{ + NeonSpaceToDepthWorkloadTest<NeonSpaceToDepthWorkload, armnn::DataType::QuantisedSymm16>(); +} + BOOST_AUTO_TEST_CASE(CreateSplitterWorkload) { Graph graph; diff --git a/src/backends/neon/test/NeonEndToEndTests.cpp b/src/backends/neon/test/NeonEndToEndTests.cpp index 7a22b458c9..66cace6908 100644 --- a/src/backends/neon/test/NeonEndToEndTests.cpp +++ b/src/backends/neon/test/NeonEndToEndTests.cpp @@ -8,6 +8,7 @@ #include <backendsCommon/test/ArithmeticTestImpl.hpp> #include <backendsCommon/test/ConcatTestImpl.hpp> #include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp> +#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp> #include <backendsCommon/test/SplitterEndToEndTestImpl.hpp> #include <boost/test/unit_test.hpp> @@ -135,6 +136,26 @@ BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest) DequantizeEndToEndOffset<armnn::DataType::QuantisedAsymm8>(defaultBackends); } +BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNHWCEndToEndTest1) +{ + SpaceToDepthNHWCEndToEndTest1(defaultBackends); +} + +BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNCHWEndToEndTest1) +{ + SpaceToDepthNCHWEndToEndTest1(defaultBackends); +} + +BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNHWCEndToEndTest2) +{ + SpaceToDepthNHWCEndToEndTest2(defaultBackends); +} + +BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNCHWEndToEndTest2) +{ + SpaceToDepthNCHWEndToEndTest2(defaultBackends); +} + BOOST_AUTO_TEST_CASE(NeonSplitter1dEndToEndTest) { Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends); diff --git a/src/backends/neon/test/NeonLayerTests.cpp b/src/backends/neon/test/NeonLayerTests.cpp index 078016a1de..162aaadd67 100644 --- a/src/backends/neon/test/NeonLayerTests.cpp +++ b/src/backends/neon/test/NeonLayerTests.cpp @@ -302,6 +302,19 @@ ARMNN_AUTO_TEST_CASE(Simple3dSoftmaxBeta1Uint8, Simple3dSoftmaxUint8Test, 1.0f) ARMNN_AUTO_TEST_CASE(Simple4dSoftmaxBeta1, Simple4dSoftmaxTest, 1.0f) ARMNN_AUTO_TEST_CASE(Simple4dSoftmaxBeta1Uint8, Simple4dSoftmaxUint8Test, 1.0f) +// SpaceToDepth +ARMNN_AUTO_TEST_CASE(SpaceToDepthNCHWAsymmQ8, SpaceToDepthNCHWAsymmQ8Test) +ARMNN_AUTO_TEST_CASE(SpaceToDepthNHWCAsymmQ8, SpaceToDepthNHWCAsymmQ8Test) + +ARMNN_AUTO_TEST_CASE(SpaceToDepthNHWC1Float32, SpaceToDepthNHWCFloat32Test1) +ARMNN_AUTO_TEST_CASE(SpaceToDepthNCHW1Float32, SpaceToDepthNCHWFloat32Test1) + +ARMNN_AUTO_TEST_CASE(SpaceToDepthNHWC2Float32, SpaceToDepthNHWCFloat32Test2) +ARMNN_AUTO_TEST_CASE(SpaceToDepthNCHW2Float32, SpaceToDepthNCHWFloat32Test2) + +ARMNN_AUTO_TEST_CASE(SpaceToDepthNHWCQSymm16, SpaceToDepthNHWCQSymm16Test) +ARMNN_AUTO_TEST_CASE(SpaceToDepthNCHWQSymm16, SpaceToDepthNCHWQSymm16Test) + // Splitter ARMNN_AUTO_TEST_CASE(SimpleSplitter, SplitterTest) ARMNN_AUTO_TEST_CASE(SimpleSplitterUint8, SplitterUint8Test) |