+++ /dev/null
-/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __INTERNAL_ARM_COMPUTE_KERNEL_VIEW_H__
-#define __INTERNAL_ARM_COMPUTE_KERNEL_VIEW_H__
-
-#include "misc/kernel/Shape.h"
-#include "misc/kernel/Reader.h"
-#include "backend/interface/operand/ITensor.h"
-#include "util/feature/Coordinate4D.h"
-
-#include <cassert>
-
-namespace internal
-{
-namespace arm_compute
-{
-namespace kernel
-{
-
-template <typename T> class View;
-
-template <> class View<float> final : public nnfw::misc::kernel::Reader<float>
-{
-public:
- View(::neurun::backend::operand::ITensor *tensor) : _tensor{tensor}
- {
- _shape.N = tensor->dimension(3);
- _shape.C = tensor->dimension(2);
- _shape.H = tensor->dimension(1);
- _shape.W = tensor->dimension(0);
- }
-
-public:
- const ::nnfw::misc::kernel::Shape &shape(void) const { return _shape; }
-
-public:
- float at(uint32_t nth, uint32_t ch, uint32_t row, uint32_t col) const override
- {
- const auto offset = kernel_index_to_byte_offset(nth, ch, row, col);
-
- float *ptr = reinterpret_cast<float *>(_tensor->buffer() + offset);
-
- return *ptr;
- }
-
-public:
- float &at(uint32_t nth, uint32_t ch, uint32_t row, uint32_t col)
- {
- const auto offset = kernel_index_to_byte_offset(nth, ch, row, col);
-
- float *ptr = reinterpret_cast<float *>(_tensor->buffer() + offset);
-
- return *ptr;
- }
-
-private:
- size_t kernel_index_to_byte_offset(uint32_t nth, uint32_t ch, uint32_t row, uint32_t col) const
- {
- return _tensor->calcOffset(
- neurun::util::feature::Coordinate4D{static_cast<int32_t>(nth), static_cast<int32_t>(row),
- static_cast<int32_t>(col), static_cast<int32_t>(ch)});
- }
-
-private:
- ::nnfw::misc::kernel::Shape _shape;
- ::neurun::backend::operand::ITensor *_tensor;
-};
-
-} // namespace kernel
-} // namespace arm_compute
-} // namespace internal
-
-#endif // __INTERNAL_ARM_COMPUTE_FEATURE_VIEW_H__
#include <arm_compute/runtime/CL/CLScheduler.h>
-#include "backend/acl_cl/kernel/View.h"
+#include "util/feature/nchw/View.h"
#include "logging.h"
namespace
auto &queue = ::arm_compute::CLScheduler::get().queue();
_output_alloc->map(queue);
- ::internal::arm_compute::kernel::View<float> output_view{_output_alloc};
+ util::feature::nchw::View<float> output_view{_output_alloc};
for (auto input : _input_allocs)
{
input->map(queue);
- const ::internal::arm_compute::kernel::View<float> input_reader{input};
+ const util::feature::nchw::View<float> input_reader{input};
for (uint32_t n = 0; n < input_reader.shape().N; n++)
{
#define __NEURUN_UTIL_FEATURE_NCHW_VIEW_H__
#include "misc/feature/Reader.h"
+#include "misc/feature/Shape.h"
#include "backend/interface/operand/ITensor.h"
#include "util/feature/Coordinate4D.h"
View(::neurun::backend::operand::ITensor *tensor) : _tensor{tensor}
{
// TODO Validate whether tensor is a feature map, or not
-
+ _shape.N = tensor->dimension(3);
_shape.C = tensor->dimension(2);
_shape.H = tensor->dimension(1);
_shape.W = tensor->dimension(0);