aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadik Armagan <sadik.armagan@arm.com>2019-09-13 17:07:19 +0100
committerSadik Armagan <sadik.armagan@arm.com>2019-09-16 10:17:55 +0100
commit6095ba5f097345510bcae7804bcf4ae123b4f98f (patch)
tree7f53a056a87d802bc7cf100d4dddcf7f34ac3b36
parent019c4b1cd87849194cd30cb5bfd0e5d68089df08 (diff)
downloadarmnn-6095ba5f097345510bcae7804bcf4ae123b4f98f.tar.gz
IVGCVSW-3660 Add SQRT unit tests for Neon and CL backends
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com> Change-Id: Iaaff33f578c4d88f6c03c8de4af71d5347178eaa
-rw-r--r--src/backends/backendsCommon/test/layerTests/ActivationTestImpl.cpp56
-rw-r--r--src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp4
-rw-r--r--src/backends/cl/test/ClLayerTests.cpp4
-rw-r--r--src/backends/neon/test/NeonLayerTests.cpp4
-rw-r--r--src/backends/reference/test/RefLayerTests.cpp1
5 files changed, 69 insertions, 0 deletions
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<int16_t, 4> AbsInt16Test(
return AbsTestCommon<armnn::DataType::QuantisedSymm16>(workloadFactory, memoryManager, 0.1f, 0);
}
+LayerTestResult<float, 5> SqrtNNTest(
+ armnn::IWorkloadFactory& workloadFactory,
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
+{
+ const int inputDataSize = 120;
+ std::vector<float> inputData(inputDataSize);
+
+ for (unsigned int i = 0u; i < inputDataSize; ++i)
+ {
+ inputData[i] = static_cast<float>(i) / 10;
+ }
+
+ auto f = [](float value)
+ {
+ return std::sqrt(value);
+ };
+ std::vector<float> 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<float, 5> result(inputTensorInfo);
+
+ auto input = MakeTensor<float, 5>(inputTensorInfo, QuantizedVector<float>(0.f, 0.f, inputData));
+
+ std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
+ std::unique_ptr<armnn::ITensorHandle> 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<armnn::IWorkload> 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<float, 5>(outputTensorInfo, QuantizedVector<float>(0.f, 0.f,
+ outputExpectedData));
+
+ return result;
+};
+
template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
LayerTestResult<T, 4> 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<float, 4> SqrtTest(
armnn::IWorkloadFactory& workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
+LayerTestResult<float, 5> SqrtNNTest(
+ armnn::IWorkloadFactory& workloadFactory,
+ const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
+
LayerTestResult<uint8_t, 4> 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<DataType::Float32>)
ARMNN_AUTO_TEST_CASE(BatchToSpaceNdNhwcFloat322, BatchToSpaceNdNhwcTest2<DataType::Float32>)
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)