diff options
Diffstat (limited to 'src/backends/reference')
-rw-r--r-- | src/backends/reference/test/RefLayerTests.cpp | 29 | ||||
-rw-r--r-- | src/backends/reference/workloads/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/backends/reference/workloads/ElementwiseFunction.cpp | 6 | ||||
-rw-r--r-- | src/backends/reference/workloads/Log.hpp | 23 | ||||
-rw-r--r-- | src/backends/reference/workloads/RefElementwiseUnaryWorkload.cpp | 16 | ||||
-rw-r--r-- | src/backends/reference/workloads/Sin.hpp | 22 |
6 files changed, 96 insertions, 2 deletions
diff --git a/src/backends/reference/test/RefLayerTests.cpp b/src/backends/reference/test/RefLayerTests.cpp index 6bc6f8aa05..1cc6fa8d36 100644 --- a/src/backends/reference/test/RefLayerTests.cpp +++ b/src/backends/reference/test/RefLayerTests.cpp @@ -2235,6 +2235,35 @@ ARMNN_AUTO_TEST_CASE_WITH_THF(Exp3dQuantisedAsymm8, Exp3dTest<DataType::QAsymmU8 ARMNN_AUTO_TEST_CASE_WITH_THF(Exp2dQuantisedSymm16, Exp2dTest<DataType::QSymmS16>) ARMNN_AUTO_TEST_CASE_WITH_THF(Exp3dQuantisedSymm16, Exp3dTest<DataType::QSymmS16>) +// Log +ARMNN_AUTO_TEST_CASE_WITH_THF(Log2d, Log2dTest<DataType::Float32>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Log3d, Log3dTest<DataType::Float32>) +ARMNN_AUTO_TEST_CASE_WITH_THF(LogZero, LogZeroTest<DataType::Float32>) +ARMNN_AUTO_TEST_CASE_WITH_THF(LogNegative, LogNegativeTest<DataType::Float32>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Log2dFloat16, Log2dTest<DataType::Float16>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Log3dFloat16, Log3dTest<DataType::Float16>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Log2dQuantisedAsymmS8, Log2dTest<DataType::QAsymmS8>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Log3dQuantisedAsymmS8, Log3dTest<DataType::QAsymmS8>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Log2dQuantisedAsymm8, Log2dTest<DataType::QAsymmU8>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Log3dQuantisedAsymm8, Log3dTest<DataType::QAsymmU8>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Log2dQuantisedSymm16, Log2dTest<DataType::QSymmS16>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Log3dQuantisedSymm16, Log3dTest<DataType::QSymmS16>) + +// Sin +ARMNN_AUTO_TEST_CASE_WITH_THF(Sin2d, Sin2dTest<DataType::Float32>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Sin3d, Sin3dTest<DataType::Float32>) +ARMNN_AUTO_TEST_CASE_WITH_THF(SinZero, SinZeroTest<DataType::Float32>) +ARMNN_AUTO_TEST_CASE_WITH_THF(SinNegative, SinNegativeTest<DataType::Float32>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Sin2dFloat16, Sin2dTest<DataType::Float16>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Sin3dFloat16, Sin3dTest<DataType::Float16>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Sin2dQuantisedAsymmS8, Sin2dTest<DataType::QAsymmS8>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Sin3dQuantisedAsymmS8, Sin3dTest<DataType::QAsymmS8>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Sin2dQuantisedAsymm8, Sin2dTest<DataType::QAsymmU8>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Sin3dQuantisedAsymm8, Sin3dTest<DataType::QAsymmU8>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Sin2dQuantisedSymm16, Sin2dTest<DataType::QSymmS16>) +ARMNN_AUTO_TEST_CASE_WITH_THF(Sin3dQuantisedSymm16, Sin3dTest<DataType::QSymmS16>) + +//Logical ARMNN_AUTO_TEST_CASE_WITH_THF(LogicalNot, LogicalNotTest) ARMNN_AUTO_TEST_CASE_WITH_THF(LogicalNotInt, LogicalNotIntTest) ARMNN_AUTO_TEST_CASE_WITH_THF(LogicalAnd, LogicalAndTest) diff --git a/src/backends/reference/workloads/CMakeLists.txt b/src/backends/reference/workloads/CMakeLists.txt index dadedf995a..09e02e67bd 100644 --- a/src/backends/reference/workloads/CMakeLists.txt +++ b/src/backends/reference/workloads/CMakeLists.txt @@ -39,6 +39,7 @@ list(APPEND armnnRefBackendWorkloads_sources Gather.hpp InstanceNorm.cpp InstanceNorm.hpp + Log.hpp LogSoftmax.cpp LogSoftmax.hpp LstmUtils.hpp @@ -165,6 +166,7 @@ list(APPEND armnnRefBackendWorkloads_sources Resize.cpp Resize.hpp Rsqrt.hpp + Sin.hpp Slice.cpp Slice.hpp Softmax.cpp diff --git a/src/backends/reference/workloads/ElementwiseFunction.cpp b/src/backends/reference/workloads/ElementwiseFunction.cpp index d6f3f42478..82bcf99287 100644 --- a/src/backends/reference/workloads/ElementwiseFunction.cpp +++ b/src/backends/reference/workloads/ElementwiseFunction.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd. All rights reserved. +// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -10,7 +10,9 @@ #include "Maximum.hpp" #include "Abs.hpp" #include "Exp.hpp" +#include "Log.hpp" #include "Rsqrt.hpp" +#include "Sin.hpp" #include "Sqrt.hpp" @@ -84,8 +86,10 @@ template struct armnn::ElementwiseBinaryFunction<std::not_equal_to<float>>; // Unary template struct armnn::ElementwiseUnaryFunction<armnn::abs<float>>; template struct armnn::ElementwiseUnaryFunction<armnn::exp<float>>; +template struct armnn::ElementwiseUnaryFunction<armnn::log<float>>; template struct armnn::ElementwiseUnaryFunction<std::negate<float>>; template struct armnn::ElementwiseUnaryFunction<armnn::rsqrt<float>>; +template struct armnn::ElementwiseUnaryFunction<armnn::sin<float>>; template struct armnn::ElementwiseUnaryFunction<armnn::sqrt<float>>; // Logical Unary diff --git a/src/backends/reference/workloads/Log.hpp b/src/backends/reference/workloads/Log.hpp new file mode 100644 index 0000000000..98b6b824cc --- /dev/null +++ b/src/backends/reference/workloads/Log.hpp @@ -0,0 +1,23 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <iostream> + +namespace armnn +{ + template<typename T> +struct log : public std::unary_function<T, T> + { + T + operator () (const T& inputData) const + { + // computes natural logarithm of inputData + return std::log(inputData); + } + }; + +} //namespace armnn diff --git a/src/backends/reference/workloads/RefElementwiseUnaryWorkload.cpp b/src/backends/reference/workloads/RefElementwiseUnaryWorkload.cpp index b442f25c2a..be153636f9 100644 --- a/src/backends/reference/workloads/RefElementwiseUnaryWorkload.cpp +++ b/src/backends/reference/workloads/RefElementwiseUnaryWorkload.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd. All rights reserved. +// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -11,7 +11,9 @@ #include "RefWorkloadUtils.hpp" #include "Abs.hpp" #include "Exp.hpp" +#include "Log.hpp" #include "Rsqrt.hpp" +#include "Sin.hpp" #include "Sqrt.hpp" #include <Profiling.hpp> @@ -54,8 +56,10 @@ void RefElementwiseUnaryWorkload::Execute(std::vector<ITensorHandle*> inputs, st using AbsFunction = ElementwiseUnaryFunction<abs<InType>>; using ExpFunction = ElementwiseUnaryFunction<exp<InType>>; + using LogFunction = ElementwiseUnaryFunction<log<InType>>; using NegFunction = ElementwiseUnaryFunction<std::negate<InType>>; using RsqrtFunction = ElementwiseUnaryFunction<rsqrt<InType>>; + using SinFunction = ElementwiseUnaryFunction<sin<InType>>; using SqrtFunction = ElementwiseUnaryFunction<sqrt<InType>>; switch (m_Data.m_Parameters.m_Operation) @@ -70,6 +74,11 @@ void RefElementwiseUnaryWorkload::Execute(std::vector<ITensorHandle*> inputs, st ExpFunction(inShape, outShape, *input, *output); break; } + case UnaryOperation::Log: + { + LogFunction(inShape, outShape, *input, *output); + break; + } case UnaryOperation::Neg: { NegFunction(inShape, outShape, *input, *output); @@ -80,6 +89,11 @@ void RefElementwiseUnaryWorkload::Execute(std::vector<ITensorHandle*> inputs, st RsqrtFunction(inShape, outShape, *input, *output); break; } + case UnaryOperation::Sin: + { + SinFunction(inShape, outShape, *input, *output); + break; + } case UnaryOperation::Sqrt: { SqrtFunction(inShape, outShape, *input, *output); diff --git a/src/backends/reference/workloads/Sin.hpp b/src/backends/reference/workloads/Sin.hpp new file mode 100644 index 0000000000..b71c33bbf3 --- /dev/null +++ b/src/backends/reference/workloads/Sin.hpp @@ -0,0 +1,22 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <iostream> + +namespace armnn +{ + template<typename T> +struct sin : public std::unary_function<T, T> + { + T + operator () (const T& inputData) const + { + return std::sin(inputData); + } + }; + +} //namespace armnn |