diff options
Diffstat (limited to 'src/armnn/backends/RefWorkloads/Splitter.hpp')
-rw-r--r-- | src/armnn/backends/RefWorkloads/Splitter.hpp | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/src/armnn/backends/RefWorkloads/Splitter.hpp b/src/armnn/backends/RefWorkloads/Splitter.hpp deleted file mode 100644 index e9c0379c9e..0000000000 --- a/src/armnn/backends/RefWorkloads/Splitter.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include "RefWorkloadUtils.hpp" - -#include "backends/WorkloadData.hpp" - -#include <armnn/Tensor.hpp> - -#include <boost/assert.hpp> - -namespace armnn -{ - -template <typename DataType> -void Splitter(const SplitterQueueDescriptor& data) -{ - const TensorInfo& inputInfo0 = GetTensorInfo(data.m_Inputs[0]); - - for (unsigned int index = 0; index < inputInfo0.GetNumElements(); ++index) - { - unsigned int indices[MaxNumOfTensorDimensions] = { 0 }; - - unsigned int indexRemainder = index; - unsigned int dimensionStride = inputInfo0.GetNumElements(); - - for (unsigned int i = 0; i<inputInfo0.GetNumDimensions(); i++) - { - dimensionStride /= inputInfo0.GetShape()[i]; - indices[i] = indexRemainder / dimensionStride; // Use integer division to round down. - indexRemainder -= indices[i] * dimensionStride; - } - - for (unsigned int viewIdx = 0; viewIdx < data.m_ViewOrigins.size(); ++viewIdx) - { - SplitterQueueDescriptor::ViewOrigin const& view = data.m_ViewOrigins[viewIdx]; - - //Split view extents are defined by the size of (the corresponding) input tensor. - const TensorInfo& outputInfo = GetTensorInfo(data.m_Outputs[viewIdx]); - BOOST_ASSERT(outputInfo.GetNumDimensions() == inputInfo0.GetNumDimensions()); - - // Check all dimensions to see if this element is inside the given input view. - bool insideView = true; - for (unsigned int i = 0; i<outputInfo.GetNumDimensions(); i++) - { - if (indices[i] < view.m_Origin[i]) - { - insideView = false; - } - if (indices[i] >= view.m_Origin[i] + outputInfo.GetShape()[i]) - { - insideView = false; - } - } - - if (insideView) - { - unsigned int outIndex = 0; - unsigned int dimensionStride = 1; - - for (unsigned int i = outputInfo.GetNumDimensions(); i-- > 0;) - { - outIndex += dimensionStride * (indices[i] - view.m_Origin[i]); - dimensionStride *= outputInfo.GetShape()[i]; - } - - //We are within the view, to copy input data to the output corresponding to this view. - DataType* outputData = GetOutputTensorData<DataType>(viewIdx, data); - BOOST_ASSERT(outputData); - - const DataType* inputData = GetInputTensorData<DataType>(0, data); - BOOST_ASSERT(inputData); - - outputData[outIndex] = inputData[index]; - } - } - } -} - -} //namespace armnn |