aboutsummaryrefslogtreecommitdiff
path: root/src/backends/RefWorkloads/Merger.hpp
diff options
context:
space:
mode:
authorDavid Beck <david.beck@arm.com>2018-09-24 13:18:27 +0100
committerMatthew Bentham <matthew.bentham@arm.com>2018-10-10 16:16:57 +0100
commitb4540bef0b0327683fe8e63f727c1212800dc2a9 (patch)
treee1ea8bb6ee981640a1c469ceb556ed648ffde411 /src/backends/RefWorkloads/Merger.hpp
parent2d9dd36fb6bc20b370701ab15463359b9db35f18 (diff)
downloadarmnn-b4540bef0b0327683fe8e63f727c1212800dc2a9.tar.gz
IVGCVSW-1898 : Ref backend folder structure
* Reference backend is renamed to backends/reference as per https://confluence.arm.com/display/MLENG/Pluggable+backends Change-Id: I27a13c274eb60995dfb459e3c49c0e2f60bcd32c
Diffstat (limited to 'src/backends/RefWorkloads/Merger.hpp')
-rw-r--r--src/backends/RefWorkloads/Merger.hpp82
1 files changed, 0 insertions, 82 deletions
diff --git a/src/backends/RefWorkloads/Merger.hpp b/src/backends/RefWorkloads/Merger.hpp
deleted file mode 100644
index 867925faa2..0000000000
--- a/src/backends/RefWorkloads/Merger.hpp
+++ /dev/null
@@ -1,82 +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>
-
-namespace armnn
-{
-
-template <typename DataType>
-void Merger(const MergerQueueDescriptor& data)
-{
- const TensorInfo& outputInfo0 = GetTensorInfo(data.m_Outputs[0]);
-
- for (unsigned int index = 0 ; index < outputInfo0.GetNumElements(); ++index)
- {
- unsigned int indices[MaxNumOfTensorDimensions] = { 0 };
-
- unsigned int indexRemainder = index;
- unsigned int dimensionStride = outputInfo0.GetNumElements();
-
- for (unsigned int i=0; i<outputInfo0.GetNumDimensions(); i++)
- {
- dimensionStride /= outputInfo0.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)
- {
- MergerQueueDescriptor::ViewOrigin const& view = data.m_ViewOrigins[viewIdx];
-
- //Split view extents are defined by the size of (the corresponding) input tensor.
- const TensorInfo& inputInfo = GetTensorInfo(data.m_Inputs[viewIdx]);
- BOOST_ASSERT(inputInfo.GetNumDimensions() == outputInfo0.GetNumDimensions());
-
- // Check all dimensions to see if this element is inside the given input view.
- bool insideView = true;
- for (unsigned int i=0; i<inputInfo.GetNumDimensions(); i++)
- {
- if (indices[i] < view.m_Origin[i])
- {
- insideView = false;
- }
- if (indices[i] >= view.m_Origin[i] + inputInfo.GetShape()[i])
- {
- insideView = false;
- }
- }
-
- if (insideView)
- {
- unsigned int inIndex = 0;
- unsigned int dimensionStride = 1;
-
- for (unsigned int i = inputInfo.GetNumDimensions(); i-- > 0;)
- {
- inIndex += dimensionStride * (indices[i] - view.m_Origin[i]);
- dimensionStride *= inputInfo.GetShape()[i];
- }
-
- //We are within the view, copy input data to the output corresponding to this view.
- (GetOutputTensorData<DataType>(0, data))[index] =
- (GetInputTensorData<DataType>(viewIdx, data))[inIndex];
-
- //What should we do if input views overlap on the output tensor?
- //We could error, take the average, or shm else...
- //For now just stop after finding first view (input) that matches.
- break;
- }
- }
- }
-}
-
-} //namespace armnn