diff options
Diffstat (limited to 'runtime/neurun/backend/srcn/kernel/TransposeConvLayer.cc')
-rw-r--r-- | runtime/neurun/backend/srcn/kernel/TransposeConvLayer.cc | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/runtime/neurun/backend/srcn/kernel/TransposeConvLayer.cc b/runtime/neurun/backend/srcn/kernel/TransposeConvLayer.cc deleted file mode 100644 index 26469f728..000000000 --- a/runtime/neurun/backend/srcn/kernel/TransposeConvLayer.cc +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2019 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 "TransposeConvLayer.h" - -#include <cstring> -#include "OperationUtils.h" -#include "ncnn/srcn/srcn_conv.h" - -namespace neurun -{ -namespace backend -{ -namespace srcn -{ -namespace kernel -{ - -TransposeConvLayer::TransposeConvLayer() - : _inputData(), _kernelData(), _outputData(), _inputDescr(), _kernelDescr(), _outputDescr(), - _paddingType(0), _paddingLeft(0), _paddingTop(0), _paddingRight(0), _paddingBottom(0), - _strideWidth(0), _strideHeight(0), _inputType(OperandType::FLOAT32), - _layout(nnfw::srcn::col_major) -{ - // DO NOTHING -} - -void TransposeConvLayer::convFloat32() -{ - nnfw::srcn::convMat_t in_mat, out_mat, kernel_mat; - nnfw::srcn::convParams_t in_param; - - assert(_layout == nnfw::srcn::col_major || _layout == nnfw::srcn::row_major); - size_t height_index = _layout == nnfw::srcn::col_major ? 1 : 2; - size_t width_index = _layout == nnfw::srcn::col_major ? 2 : 3; - size_t depth_index = _layout == nnfw::srcn::col_major ? 3 : 1; - size_t kernel_input_depth_index = _layout == nnfw::srcn::col_major ? 3 : 1; - size_t kernel_output_depth_index = 0; - const int batches = MatchingDim(_inputDescr, 0, _outputDescr, 0); - const int input_height = _inputDescr.dimensions[height_index]; - const int input_width = _inputDescr.dimensions[width_index]; - const int input_depth = - MatchingDim(_inputDescr, depth_index, _kernelDescr, kernel_input_depth_index); - in_mat.c = input_depth; - in_mat.w = input_width; - in_mat.h = input_height; - in_mat.n = batches; - in_mat.data = _inputData.f; - - const int output_height = _outputDescr.dimensions[height_index]; - const int output_width = _outputDescr.dimensions[width_index]; - const int output_depth = - MatchingDim(_kernelDescr, kernel_output_depth_index, _outputDescr, depth_index); - out_mat.c = output_depth; - out_mat.w = output_width; - out_mat.h = output_height; - out_mat.n = batches; - out_mat.data = _outputData.f; - - const int ker_height = _kernelDescr.dimensions[height_index]; - const int ker_width = _kernelDescr.dimensions[width_index]; - kernel_mat.c = input_depth; - kernel_mat.w = ker_width; - kernel_mat.h = ker_height; - kernel_mat.n = output_depth; - kernel_mat.data = _kernelData.f; - - in_param.kernel_w = ker_width; - in_param.kernel_h = ker_height; - in_param.stride_w = _strideWidth; - in_param.stride_h = _strideHeight; - in_param.padding = _paddingType; - in_param.pad_w = _paddingLeft; - in_param.pad_h = _paddingTop; - in_param.dilation_w = 1; - in_param.dilation_h = 1; - - memset(_outputData.f, 0, out_mat.n * out_mat.h * out_mat.w * out_mat.c * sizeof(float)); - - nnfw::srcn::srcn_deconvolution2D(in_mat, kernel_mat, out_mat, in_param, 4, _layout); -} - -void TransposeConvLayer::configure(uint8_t *inputData, const TensorDescriptor inputDescr, - uint8_t *kernelData, const TensorDescriptor kernelDescr, - const uint32_t paddingType, const uint32_t paddingLeft, - const uint32_t paddingRight, const uint32_t paddingTop, - const uint32_t paddingBottom, const uint32_t strideWidth, - const uint32_t strideHeight, uint8_t *outputData, - const TensorDescriptor outputDescr, ir::Layout layout) -{ - _layout = convertLayout(layout); - _inputData.u8 = inputData; - _inputDescr = inputDescr; - _inputType = inputDescr.type; - _kernelData.u8 = kernelData; - _kernelDescr = kernelDescr; - _paddingType = paddingType; - _paddingLeft = paddingLeft; - _paddingRight = paddingRight; - _paddingTop = paddingTop; - _paddingBottom = paddingBottom; - _strideWidth = strideWidth; - _strideHeight = strideHeight; - _outputData.u8 = outputData; - _outputDescr = outputDescr; -} - -void TransposeConvLayer::run() -{ - if (_inputType == OperandType::FLOAT32) - { - convFloat32(); - } - else if (_inputType == OperandType::QUANT8_ASYMM) - { - throw std::runtime_error("NYI"); - } -} - -} // namespace kernel -} // namespace srcn -} // namespace backend -} // namespace neurun |