diff options
Diffstat (limited to 'runtime/neurun/backend/cpu/kernel/DepthwiseConvolutionLayer.cc')
-rw-r--r-- | runtime/neurun/backend/cpu/kernel/DepthwiseConvolutionLayer.cc | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/runtime/neurun/backend/cpu/kernel/DepthwiseConvolutionLayer.cc b/runtime/neurun/backend/cpu/kernel/DepthwiseConvolutionLayer.cc deleted file mode 100644 index e33e3465e..000000000 --- a/runtime/neurun/backend/cpu/kernel/DepthwiseConvolutionLayer.cc +++ /dev/null @@ -1,143 +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 "DepthwiseConvolutionLayer.h" - -#include <cker/operation/DepthwiseConv.h> - -namespace neurun -{ -namespace backend -{ -namespace cpu -{ -namespace kernel -{ - -DepthwiseConvolutionLayer::DepthwiseConvolutionLayer() - : _inputData(), _kernelData(), _outputData(), _biasData(), _inputDescr(), _kernelDescr(), - _outputDescr(), _biasDescr(), _paddingLeft(0), _paddingTop(0), _paddingRight(0), - _paddingBottom(0), _strideWidth(0), _strideHeight(0), _multiplier(0), - _activation(ir::Activation::NONE), _inputType(OperandType::FLOAT32) -{ - // DO NOTHING -} - -void DepthwiseConvolutionLayer::convFloat32() -{ - float output_activation_min, output_activation_max; - CalculateActivationRangeFloat(_activation, &output_activation_min, &output_activation_max); - - nnfw::cker::DepthwiseConvParams op_params; - op_params.stride_width = _strideWidth; - op_params.stride_height = _strideHeight; - op_params.dilation_width_factor = 1; - op_params.dilation_height_factor = 1; - op_params.padding_values.width = _paddingLeft; - op_params.padding_values.height = _paddingTop; - op_params.depth_multiplier = _multiplier; - op_params.float_activation_min = output_activation_min; - op_params.float_activation_max = output_activation_max; - - nnfw::cker::DepthwiseConv(op_params, convertTensorDescriptorToCkerShape(_inputDescr), - _inputData.f, convertTensorDescriptorToCkerShape(_kernelDescr), - _kernelData.f, convertTensorDescriptorToCkerShape(_biasDescr), - _biasData.f, convertTensorDescriptorToCkerShape(_outputDescr), - _outputData.f); -} - -void DepthwiseConvolutionLayer::convQuant8() -{ - int32_t output_activation_min = 0; - int32_t output_activation_max = 0; - CalculateActivationRangeUint8(_activation, _outputDescr, &output_activation_min, - &output_activation_max); - - float real_multiplier = 0.0; - int32_t output_multiplier = 0; - int32_t output_shift = 0; - GetQuantizedConvolutionMultiplier(_inputDescr, _kernelDescr, _biasDescr, _outputDescr, - &real_multiplier); - QuantizeMultiplier(real_multiplier, &output_multiplier, &output_shift); - - nnfw::cker::DepthwiseConvParams op_params; - op_params.stride_width = _strideWidth; - op_params.stride_height = _strideHeight; - op_params.dilation_width_factor = 1; - op_params.dilation_height_factor = 1; - op_params.padding_values.width = _paddingLeft; - op_params.padding_values.height = _paddingTop; - op_params.depth_multiplier = _multiplier; - op_params.input_offset = -_inputDescr.offset; - op_params.weights_offset = -_kernelDescr.offset; - op_params.output_offset = _outputDescr.offset; - op_params.output_multiplier = output_multiplier; - op_params.output_shift = output_shift; - op_params.quantized_activation_min = output_activation_min; - op_params.quantized_activation_max = output_activation_max; - - nnfw::cker::DepthwiseConv(op_params, convertTensorDescriptorToCkerShape(_inputDescr), - _inputData.u8, convertTensorDescriptorToCkerShape(_kernelDescr), - _kernelData.u8, convertTensorDescriptorToCkerShape(_biasDescr), - _biasData.i32, convertTensorDescriptorToCkerShape(_outputDescr), - _outputData.u8); -} - -void DepthwiseConvolutionLayer::configure(uint8_t *inputData, const TensorDescriptor inputDescr, - uint8_t *kernelData, const TensorDescriptor kernelDescr, - uint8_t *biasData, const TensorDescriptor biasDescr, - const uint32_t paddingLeft, const uint32_t paddingRight, - const uint32_t paddingTop, const uint32_t paddingBottom, - const uint32_t strideWidth, const uint32_t strideHeight, - const uint32_t multiplier, - const ir::Activation activation, uint8_t *outputData, - const TensorDescriptor outputDescr) -{ - _inputData.u8 = inputData; - _inputDescr = inputDescr; - _inputType = inputDescr.type; - _kernelData.u8 = kernelData; - _kernelDescr = kernelDescr; - _biasData.u8 = biasData; - _biasDescr = biasDescr; - _paddingLeft = paddingLeft; - _paddingRight = paddingRight; - _paddingTop = paddingTop; - _paddingBottom = paddingBottom; - _strideWidth = strideWidth; - _strideHeight = strideHeight; - _multiplier = multiplier; - _activation = activation; - _outputData.u8 = outputData; - _outputDescr = outputDescr; -} - -void DepthwiseConvolutionLayer::run() -{ - if (_inputType == OperandType::FLOAT32) - { - convFloat32(); - } - else if (_inputType == OperandType::QUANT8_ASYMM) - { - convQuant8(); - } -} - -} // namespace kernel -} // namespace cpu -} // namespace backend -} // namespace neurun |