diff options
Diffstat (limited to 'src/dynamic/sample/SampleDynamicAdditionWorkload.cpp')
-rw-r--r-- | src/dynamic/sample/SampleDynamicAdditionWorkload.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/dynamic/sample/SampleDynamicAdditionWorkload.cpp b/src/dynamic/sample/SampleDynamicAdditionWorkload.cpp new file mode 100644 index 0000000000..0fa57a7e07 --- /dev/null +++ b/src/dynamic/sample/SampleDynamicAdditionWorkload.cpp @@ -0,0 +1,54 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include <armnn/backends/ITensorHandle.hpp> + +#include "SampleDynamicAdditionWorkload.hpp" +#include "SampleTensorHandle.hpp" + +namespace armnn +{ + +inline const TensorInfo& GetTensorInfo(const ITensorHandle* tensorHandle) +{ + // We know that reference workloads use RefTensorHandles for inputs and outputs + const SampleTensorHandle* sampleTensorHandle = + static_cast<const SampleTensorHandle*>(tensorHandle); + return sampleTensorHandle->GetTensorInfo(); +} + +const float* GetInputTensorData(unsigned int idx, const AdditionQueueDescriptor& data) +{ + const ITensorHandle* tensorHandle = data.m_Inputs[idx]; + return reinterpret_cast<const float*>(tensorHandle->Map()); +} + +float* GetOutputTensorData(unsigned int idx, const AdditionQueueDescriptor& data) +{ + ITensorHandle* tensorHandle = data.m_Outputs[idx]; + return reinterpret_cast<float*>(tensorHandle->Map()); +} + +SampleDynamicAdditionWorkload::SampleDynamicAdditionWorkload(const AdditionQueueDescriptor& descriptor, + const WorkloadInfo& info) + : BaseWorkload(descriptor, info) +{} + +void SampleDynamicAdditionWorkload::Execute() const +{ + const TensorInfo& info = GetTensorInfo(m_Data.m_Inputs[0]); + unsigned int num = info.GetNumElements(); + + const float* inputData0 = GetInputTensorData(0, m_Data); + const float* inputData1 = GetInputTensorData(1, m_Data); + float* outputData = GetOutputTensorData(0, m_Data); + + for (unsigned int i = 0; i < num; ++i) + { + outputData[i] = inputData0[i] + inputData1[i]; + } +} + +} // namespace armnn |