summaryrefslogtreecommitdiff
path: root/runtime/neurun/backend/acl_common/Convert.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/neurun/backend/acl_common/Convert.cc')
-rw-r--r--runtime/neurun/backend/acl_common/Convert.cc193
1 files changed, 0 insertions, 193 deletions
diff --git a/runtime/neurun/backend/acl_common/Convert.cc b/runtime/neurun/backend/acl_common/Convert.cc
deleted file mode 100644
index fc5be72a2..000000000
--- a/runtime/neurun/backend/acl_common/Convert.cc
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * 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.
- */
-
-#include "Convert.h"
-
-#include "Swizzle.h"
-#include "ir/DataType.h"
-#include <cpp14/memory.h>
-
-namespace
-{
-
-::arm_compute::DataLayout asDataLayout(neurun::ir::Layout layout)
-{
- switch (layout)
- {
- case neurun::ir::Layout::NHWC:
- return ::arm_compute::DataLayout::NHWC;
- case neurun::ir::Layout::NCHW:
- return ::arm_compute::DataLayout::NCHW;
- default:
- return ::arm_compute::DataLayout::UNKNOWN;
- }
-}
-
-} // namespace
-
-namespace neurun
-{
-namespace backend
-{
-namespace acl_common
-{
-
-::arm_compute::TensorShape asTensorShape(const ir::Shape &shape, ir::Layout frontend_layout,
- ir::Layout backend_layout, bool apply_dim_correction)
-{
- const uint32_t rank = shape.rank();
-
- ::arm_compute::TensorShape res{};
-
- res.set_num_dimensions(rank);
-
- for (uint32_t axis = 0; axis < rank; ++axis)
- {
- // NOTE In some cases, in incorrect dimensions is required.
- // For example, intput_size is 1 in LSTM. The input-to-input weights([num_units, input_size]) of
- // LSTM is used as the weight of the FullyConnected.
- // The FullyConnected's weight must be greater or equal than 2-dimensions.
- // However, if the dimension correction is applied to input_to_input_weights with input_size
- // equal to 1, it will be changed to 1-D.
- // So input_to_input_weights is not used by the weight of FullyConnected.
- res.set(ToARMComputeAxis(rank, axis, frontend_layout, backend_layout).value(), shape.dim(axis),
- apply_dim_correction);
- }
-
- return res;
-}
-
-::arm_compute::Coordinates asTensorCoordinate(const ::neurun::util::Coordinates &coord,
- ir::Layout frontend_layout, ir::Layout backend_layout)
-{
- const uint32_t rank = coord.size();
-
- ::arm_compute::Coordinates res{};
-
- res.set_num_dimensions(rank);
-
- for (uint32_t axis = 0; axis < rank; ++axis)
- {
- res.set(ToARMComputeAxis(rank, axis, frontend_layout, backend_layout).value(), coord[axis]);
- }
-
- return res;
-}
-
-::arm_compute::DataType asDataType(const ir::DataType type)
-{
- switch (type)
- {
- case ir::DataType::FLOAT32:
- return ::arm_compute::DataType::F32;
- case ir::DataType::INT32:
- return ::arm_compute::DataType::S32;
- case ir::DataType::UINT32:
- return ::arm_compute::DataType::U32;
- case ir::DataType::QUANT8_ASYMM:
- return ::arm_compute::DataType::QASYMM8;
- case ir::DataType::BOOL8:
- case ir::DataType::UINT8:
- return ::arm_compute::DataType::U8;
- case ir::DataType::QUANT8_SYMM:
- return ::arm_compute::DataType::S8;
- default:
- throw std::runtime_error("Not supported, yet");
- break;
- }
-}
-
-::arm_compute::QuantizationInfo asQuantizationInfo(const float scale, const int32_t offset)
-{
- return ::arm_compute::QuantizationInfo(scale, offset);
-}
-
-::arm_compute::TensorInfo asTensorInfo(const ir::Shape &shape, const ir::TypeInfo &typeInfo,
- ir::Layout frontend_layout, ir::Layout backend_layout,
- bool apply_dim_correction)
-{
- ::arm_compute::TensorInfo info(
- asTensorShape(shape, frontend_layout, backend_layout, apply_dim_correction), 1,
- asDataType(typeInfo.type()), asQuantizationInfo(typeInfo.scale(), typeInfo.offset()));
- info.set_data_layout(asDataLayout(backend_layout));
- return info;
-}
-
-::arm_compute::PadStrideInfo asPadStrideInfo(const ir::ExplicitPadding &padding,
- const ir::Stride &stride)
-{
- return ::arm_compute::PadStrideInfo{stride.horizontal,
- stride.vertical,
- padding.left,
- padding.right,
- padding.top,
- padding.bottom,
- ::arm_compute::DimensionRoundingType::FLOOR};
-}
-
-::arm_compute::ActivationLayerInfo asActivationLayerInfo(const ir::Activation act_code)
-{
- switch (act_code)
- {
- case ir::Activation::NONE:
- return ::arm_compute::ActivationLayerInfo{};
- case ir::Activation::RELU:
- return ::arm_compute::ActivationLayerInfo{
- ::arm_compute::ActivationLayerInfo::ActivationFunction::RELU};
- case ir::Activation::RELU1:
- return ::arm_compute::ActivationLayerInfo{
- ::arm_compute::ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, 1.0f, -1.0f};
- case ir::Activation::RELU6:
- return ::arm_compute::ActivationLayerInfo{
- ::arm_compute::ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, 6.0f, 0.0f};
- // Cases for activation of LSTM.
- case ir::Activation::TANH:
- return ::arm_compute::ActivationLayerInfo{
- ::arm_compute::ActivationLayerInfo::ActivationFunction::TANH, 1.0f, 1.0f};
- case ir::Activation::SIGMOID:
- // NOTE The sigmoid function is a special case of the Logistic function when L=1, k=1, x0=0.
- // TODO In ACL and nnapi sepc, currently, Logistic's L always is 1, k always is 1, x0 always
- // 0(always sigmoid) regardless of values of the parameter.
- // If ACL support non-sigmoid logistic, should fix param values.
- return ::arm_compute::ActivationLayerInfo{
- ::arm_compute::ActivationLayerInfo::ActivationFunction::LOGISTIC, 0.0f, 0.0f};
- default:
- throw std::runtime_error{"Not supported, yet"};
- break;
- }
-}
-
-std::unique_ptr<AclFunction> asAclFunction(std::unique_ptr<::arm_compute::IFunction> &&layer)
-{
- return nnfw::cpp14::make_unique<AclFunction>(std::move(layer));
-}
-
-ir::Layout asRuntimeLayout(::arm_compute::DataLayout data_layout)
-{
- switch (data_layout)
- {
- case ::arm_compute::DataLayout::NHWC:
- return ir::Layout::NHWC;
- case ::arm_compute::DataLayout::NCHW:
- return ir::Layout::NCHW;
- default:
- return ir::Layout::UNKNOWN;
- }
-}
-
-} // namespace acl_common
-} // namespace backend
-} // namespace neurun