diff options
author | Ryan OShea <Ryan.OShea2@arm.com> | 2020-06-10 11:33:37 +0100 |
---|---|---|
committer | Keith Davis <keith.davis@arm.com> | 2020-06-15 12:07:38 +0100 |
commit | f4bfa6ae12d0f6385b2017c1d98ba9c2ec0d59f4 (patch) | |
tree | 5b7ab1106180deafaf88900b22231f6da60ae50e /src/backends/reference/workloads | |
parent | d0aa456dae928d54fb68eeac2ae75198b9f8e2d6 (diff) | |
download | armnn-f4bfa6ae12d0f6385b2017c1d98ba9c2ec0d59f4.tar.gz |
IVGCVSW-4620 Add Fill Reference Implementation
* Add Fill Reference Implementation
* Refactor FP converter to use static_cast
Signed-off-by: Ryan OShea <Ryan.OShea2@arm.com>
Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: I532e2f982981d047690755fac43a0e9cf8b17dcd
Diffstat (limited to 'src/backends/reference/workloads')
-rw-r--r-- | src/backends/reference/workloads/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/backends/reference/workloads/Fill.cpp | 24 | ||||
-rw-r--r-- | src/backends/reference/workloads/Fill.hpp | 22 | ||||
-rw-r--r-- | src/backends/reference/workloads/RefFillWorkload.cpp | 29 | ||||
-rw-r--r-- | src/backends/reference/workloads/RefFillWorkload.hpp | 21 | ||||
-rw-r--r-- | src/backends/reference/workloads/RefWorkloads.hpp | 1 |
6 files changed, 101 insertions, 0 deletions
diff --git a/src/backends/reference/workloads/CMakeLists.txt b/src/backends/reference/workloads/CMakeLists.txt index 94c8513b12..d51db365cc 100644 --- a/src/backends/reference/workloads/CMakeLists.txt +++ b/src/backends/reference/workloads/CMakeLists.txt @@ -33,6 +33,8 @@ list(APPEND armnnRefBackendWorkloads_sources ElementwiseFunction.hpp Encoders.hpp Exp.hpp + Fill.cpp + Fill.hpp FullyConnected.cpp FullyConnected.hpp Gather.cpp @@ -95,6 +97,8 @@ list(APPEND armnnRefBackendWorkloads_sources RefElementwiseUnaryWorkload.hpp RefFakeQuantizationFloat32Workload.cpp RefFakeQuantizationFloat32Workload.hpp + RefFillWorkload.cpp + RefFillWorkload.hpp RefFloorWorkload.cpp RefFloorWorkload.hpp RefFullyConnectedWorkload.cpp diff --git a/src/backends/reference/workloads/Fill.cpp b/src/backends/reference/workloads/Fill.cpp new file mode 100644 index 0000000000..a166a61ea4 --- /dev/null +++ b/src/backends/reference/workloads/Fill.cpp @@ -0,0 +1,24 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "Fill.hpp" + +#include "RefWorkloadUtils.hpp" + +namespace armnn +{ + +void Fill(Encoder<float>& output, + const TensorShape& desiredOutputShape, + const float value) +{ + for(unsigned int i = 0; i < desiredOutputShape.GetNumElements(); ++i) + { + output[i]; + output.Set(value); + } +} + +} //namespace armnn diff --git a/src/backends/reference/workloads/Fill.hpp b/src/backends/reference/workloads/Fill.hpp new file mode 100644 index 0000000000..379eb04458 --- /dev/null +++ b/src/backends/reference/workloads/Fill.hpp @@ -0,0 +1,22 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "BaseIterator.hpp" +#include "Decoders.hpp" +#include "Encoders.hpp" +#include <armnn/Tensor.hpp> +#include <backendsCommon/WorkloadData.hpp> + +namespace armnn +{ + +/// Creates a tensor and fills it with a scalar value. +void Fill(Encoder<float>& output, + const TensorShape& desiredOutputShape, + const float value); + +} //namespace armnn diff --git a/src/backends/reference/workloads/RefFillWorkload.cpp b/src/backends/reference/workloads/RefFillWorkload.cpp new file mode 100644 index 0000000000..991ab45396 --- /dev/null +++ b/src/backends/reference/workloads/RefFillWorkload.cpp @@ -0,0 +1,29 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "RefFillWorkload.hpp" +#include "Fill.hpp" + +#include "Decoders.hpp" +#include "Encoders.hpp" +#include "RefWorkloadUtils.hpp" +#include "Profiling.hpp" + +namespace armnn +{ + +void RefFillWorkload::Execute() const +{ + ARMNN_SCOPED_PROFILING_EVENT(Compute::CpuRef, "RefFillWorkload_Execute"); + + const TensorInfo &outputTensorInfo = GetTensorInfo(m_Data.m_Outputs[0]); + + std::unique_ptr<Encoder<float>> encoderPtr = MakeEncoder<float>(outputTensorInfo, m_Data.m_Outputs[0]->Map()); + Encoder<float> &encoder = *encoderPtr; + + Fill(encoder, outputTensorInfo.GetShape(), m_Data.m_Parameters.m_Value); +} + +} //namespace armnn diff --git a/src/backends/reference/workloads/RefFillWorkload.hpp b/src/backends/reference/workloads/RefFillWorkload.hpp new file mode 100644 index 0000000000..9be773c50b --- /dev/null +++ b/src/backends/reference/workloads/RefFillWorkload.hpp @@ -0,0 +1,21 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <backendsCommon/Workload.hpp> +#include <backendsCommon/WorkloadData.hpp> + +namespace armnn +{ + +class RefFillWorkload : public BaseWorkload<FillQueueDescriptor> +{ +public: + using BaseWorkload<FillQueueDescriptor>::BaseWorkload; + virtual void Execute() const override; +}; + +} //namespace armnn diff --git a/src/backends/reference/workloads/RefWorkloads.hpp b/src/backends/reference/workloads/RefWorkloads.hpp index e396a6ba3c..951e3a1e29 100644 --- a/src/backends/reference/workloads/RefWorkloads.hpp +++ b/src/backends/reference/workloads/RefWorkloads.hpp @@ -34,6 +34,7 @@ #include "RefDequantizeWorkload.hpp" #include "RefElementwiseWorkload.hpp" #include "RefElementwiseUnaryWorkload.hpp" +#include "RefFillWorkload.hpp" #include "RefFullyConnectedWorkload.hpp" #include "RefFloorWorkload.hpp" #include "RefFakeQuantizationFloat32Workload.hpp" |