From 6095ba5f097345510bcae7804bcf4ae123b4f98f Mon Sep 17 00:00:00 2001 From: Sadik Armagan Date: Fri, 13 Sep 2019 17:07:19 +0100 Subject: IVGCVSW-3660 Add SQRT unit tests for Neon and CL backends Signed-off-by: Sadik Armagan Change-Id: Iaaff33f578c4d88f6c03c8de4af71d5347178eaa --- .../test/layerTests/ActivationTestImpl.cpp | 56 ++++++++++++++++++++++ .../test/layerTests/ActivationTestImpl.hpp | 4 ++ src/backends/cl/test/ClLayerTests.cpp | 4 ++ src/backends/neon/test/NeonLayerTests.cpp | 4 ++ src/backends/reference/test/RefLayerTests.cpp | 1 + 5 files changed, 69 insertions(+) diff --git a/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.cpp index c05dfd6170..075c29de67 100644 --- a/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.cpp +++ b/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.cpp @@ -786,6 +786,62 @@ LayerTestResult AbsInt16Test( return AbsTestCommon(workloadFactory, memoryManager, 0.1f, 0); } +LayerTestResult SqrtNNTest( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + const int inputDataSize = 120; + std::vector inputData(inputDataSize); + + for (unsigned int i = 0u; i < inputDataSize; ++i) + { + inputData[i] = static_cast(i) / 10; + } + + auto f = [](float value) + { + return std::sqrt(value); + }; + std::vector outputExpectedData(inputDataSize); + std::transform(inputData.begin(), inputData.end(), outputExpectedData.begin(), f); + + armnn::TensorInfo inputTensorInfo( + { 1u, 2u, 3u, 4u, 5u }, armnn::DataType::Float32); + armnn::TensorInfo outputTensorInfo( + { 1u, 2u, 3u, 4u, 5u }, armnn::DataType::Float32); + + LayerTestResult result(inputTensorInfo); + + auto input = MakeTensor(inputTensorInfo, QuantizedVector(0.f, 0.f, inputData)); + + std::unique_ptr inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo); + std::unique_ptr outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo); + + armnn::ActivationQueueDescriptor descriptor; + armnn::WorkloadInfo workloadInfo; + AddInputToWorkload(descriptor, workloadInfo, inputTensorInfo, inputHandle.get()); + AddOutputToWorkload(descriptor, workloadInfo, outputTensorInfo, outputHandle.get()); + + descriptor.m_Parameters.m_Function = armnn::ActivationFunction::Sqrt; + + std::unique_ptr workload = workloadFactory.CreateActivation(descriptor, workloadInfo); + + inputHandle->Allocate(); + outputHandle->Allocate(); + + CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0][0]); + + workload->Execute(); + + CopyDataFromITensorHandle(&result.output[0][0][0][0][0], outputHandle.get()); + + // Calculated manually. + result.outputExpected = MakeTensor(outputTensorInfo, QuantizedVector(0.f, 0.f, + outputExpectedData)); + + return result; +}; + template> LayerTestResult SqrtTestCommon( armnn::IWorkloadFactory& workloadFactory, diff --git a/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp index fc69cfbe14..2d6362f532 100644 --- a/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp +++ b/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp @@ -172,6 +172,10 @@ LayerTestResult SqrtTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); +LayerTestResult SqrtNNTest( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + LayerTestResult SqrtUint8Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); diff --git a/src/backends/cl/test/ClLayerTests.cpp b/src/backends/cl/test/ClLayerTests.cpp index b3f29b6380..6a26a3d144 100644 --- a/src/backends/cl/test/ClLayerTests.cpp +++ b/src/backends/cl/test/ClLayerTests.cpp @@ -42,6 +42,10 @@ ARMNN_AUTO_TEST_CASE(ReLu6Uint8, BoundedReLuUint8UpperBoundOnlyTest) ARMNN_AUTO_TEST_CASE(Logistic, SimpleSigmoidTest) ARMNN_AUTO_TEST_CASE(LogisticUint8, SimpleSigmoidUint8Test) +// Sqrt Activation +ARMNN_AUTO_TEST_CASE(Sqrt, SqrtTest) +ARMNN_AUTO_TEST_CASE(SqrtNN, SqrtNNTest) + // Batch To Space ARMNN_AUTO_TEST_CASE(BatchToSpaceNdNhwcFloat321, BatchToSpaceNdNhwcTest1) ARMNN_AUTO_TEST_CASE(BatchToSpaceNdNhwcFloat322, BatchToSpaceNdNhwcTest2) diff --git a/src/backends/neon/test/NeonLayerTests.cpp b/src/backends/neon/test/NeonLayerTests.cpp index 8a513347cf..dbd2d329fc 100644 --- a/src/backends/neon/test/NeonLayerTests.cpp +++ b/src/backends/neon/test/NeonLayerTests.cpp @@ -354,6 +354,10 @@ ARMNN_AUTO_TEST_CASE(ReLu6Uint8, BoundedReLuUint8UpperBoundOnlyTest) ARMNN_AUTO_TEST_CASE(SimpleSigmoid, SimpleSigmoidTest) ARMNN_AUTO_TEST_CASE(SimpleSigmoidUint8, SimpleSigmoidUint8Test) +// Sqrt Activation +ARMNN_AUTO_TEST_CASE(Sqrt, SqrtTest) +ARMNN_AUTO_TEST_CASE(SqrtNN, SqrtNNTest) + // Softmax ARMNN_AUTO_TEST_CASE(SimpleSoftmaxBeta1, SimpleSoftmaxTest, 1.0f) ARMNN_AUTO_TEST_CASE(SimpleSoftmaxBeta2, SimpleSoftmaxTest, 2.0f) diff --git a/src/backends/reference/test/RefLayerTests.cpp b/src/backends/reference/test/RefLayerTests.cpp index 439ac49121..eb56dde884 100644 --- a/src/backends/reference/test/RefLayerTests.cpp +++ b/src/backends/reference/test/RefLayerTests.cpp @@ -429,6 +429,7 @@ ARMNN_AUTO_TEST_CASE(AbsInt16, AbsInt16Test) // Sqrt Activation ARMNN_AUTO_TEST_CASE(Sqrt, SqrtTest) +ARMNN_AUTO_TEST_CASE(SqrtNN, SqrtNNTest) ARMNN_AUTO_TEST_CASE(SqrtUint8, SqrtUint8Test) ARMNN_AUTO_TEST_CASE(SqrtInt16, SqrtInt16Test) -- cgit v1.2.1