diff options
Diffstat (limited to 'runtime/neurun/backend/cpu/kernel/ConvolutionLayer.cc')
-rw-r--r-- | runtime/neurun/backend/cpu/kernel/ConvolutionLayer.cc | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/runtime/neurun/backend/cpu/kernel/ConvolutionLayer.cc b/runtime/neurun/backend/cpu/kernel/ConvolutionLayer.cc deleted file mode 100644 index 2fdb0baf7..000000000 --- a/runtime/neurun/backend/cpu/kernel/ConvolutionLayer.cc +++ /dev/null @@ -1,140 +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 "ConvolutionLayer.h" - -#include <cker/operation/Conv.h> - -#include "OperationUtils.h" - -namespace neurun -{ -namespace backend -{ -namespace cpu -{ -namespace kernel -{ -ConvolutionLayer::ConvolutionLayer() - : _inputData(), _kernelData(), _outputData(), _biasData(), _inputDescr(), _kernelDescr(), - _outputDescr(), _biasDescr(), _paddingLeft(0), _paddingTop(0), _paddingRight(0), - _paddingBottom(0), _strideWidth(0), _strideHeight(0), _activation(ir::Activation::NONE), - _inputType(OperandType::FLOAT32) -{ - // DO NOTHING -} - -void ConvolutionLayer::convFloat32() -{ - float output_activation_min, output_activation_max; - CalculateActivationRangeFloat(_activation, &output_activation_min, &output_activation_max); - - nnfw::cker::ConvParams op_params; - op_params.padding_values.width = _paddingLeft; - op_params.padding_values.height = _paddingTop; - op_params.stride_width = _strideWidth; - op_params.stride_height = _strideHeight; - op_params.dilation_width_factor = 1; - op_params.dilation_height_factor = 1; - op_params.float_activation_min = output_activation_min; - op_params.float_activation_max = output_activation_max; - - nnfw::cker::Conv(op_params, convertTensorDescriptorToCkerShape(_inputDescr), _inputData.f, - convertTensorDescriptorToCkerShape(_kernelDescr), _kernelData.f, - convertTensorDescriptorToCkerShape(_biasDescr), _biasData.f, - convertTensorDescriptorToCkerShape(_outputDescr), _outputData.f); -} - -void ConvolutionLayer::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::ConvParams 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.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::Conv(op_params, convertTensorDescriptorToCkerShape(_inputDescr), _inputData.u8, - convertTensorDescriptorToCkerShape(_kernelDescr), _kernelData.u8, - convertTensorDescriptorToCkerShape(_biasDescr), _biasData.i32, - convertTensorDescriptorToCkerShape(_outputDescr), _outputData.u8); -} - -void ConvolutionLayer::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 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; - _activation = activation; - _outputData.u8 = outputData; - _outputDescr = outputDescr; -} - -void ConvolutionLayer::run() -{ - if (_inputType == OperandType::FLOAT32) - { - convFloat32(); - } - else if (_inputType == OperandType::QUANT8_ASYMM) - { - convQuant8(); - } -} - -#undef ANDROID_NN_CONV_PARAMETERS - -} // namespace kernel -} // namespace cpu -} // namespace backend -} // namespace neurun |