diff options
Diffstat (limited to 'runtimes/pure_arm_compute/src/internal/layers/SimpleUnpackLayer.cc')
-rw-r--r-- | runtimes/pure_arm_compute/src/internal/layers/SimpleUnpackLayer.cc | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/runtimes/pure_arm_compute/src/internal/layers/SimpleUnpackLayer.cc b/runtimes/pure_arm_compute/src/internal/layers/SimpleUnpackLayer.cc deleted file mode 100644 index 910595a44..000000000 --- a/runtimes/pure_arm_compute/src/internal/layers/SimpleUnpackLayer.cc +++ /dev/null @@ -1,74 +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 "internal/arm_compute.h" -#include "SimpleUnpackLayer.h" - -void SimpleUnpackLayer::configure(::arm_compute::ICLTensor *input, - const std::vector<::arm_compute::ICLTensor *> &output_vector, - int32_t axis) -{ - uint32_t nr_outputs = output_vector.size(); - _cl_permuted_vector.resize(nr_outputs); - _cl_permute_vector.resize(nr_outputs); - uint32_t input_rank = input->info()->num_dimensions(); - const ::arm_compute::PermutationVector pv{2, 0, 1}; - _input = input; - // Negatige axis is supported, -1 implies R-1 axis where R is input rank - if (axis < 0) - { - axis += input_rank; - } - _axis = ToARMComputeAxis(input_rank, axis).value(); - _cl_reshape_vector.resize(nr_outputs); - - ::arm_compute::TensorShape subTensor_shape{}; - for (int i = 0; i < input_rank; i++) - { - if (i != _axis) - { - subTensor_shape.set(i, _input->info()->tensor_shape()[i]); - } - else - { - subTensor_shape.set(i, 1); - } - } - - auto subTensor_offset = ::arm_compute::Coordinates{}; - subTensor_offset.set_num_dimensions(input_rank); - - for (int i = 0; i < output_vector.size(); i++) - { - _output_vector.push_back(output_vector[i]); - subTensor_offset[_axis] = i; - auto temp_tensor = std::make_shared<::arm_compute::CLSubTensor>( - CAST_CL(_input), subTensor_shape, subTensor_offset, true); - _sub_tensor_vector.push_back(temp_tensor); - // Copies into the subtensor - _cl_permute_vector[i].configure(_sub_tensor_vector[i].get(), &_cl_permuted_vector[i], pv); - _cl_reshape_vector[i].configure(&_cl_permuted_vector[i], CAST_CL(_output_vector[i])); - _cl_permuted_vector[i].allocator()->allocate(); - } -} - -void SimpleUnpackLayer::run(void) -{ - for (int i = 0; i < _output_vector.size(); i++) - { - _cl_permute_vector[i].run(); - _cl_reshape_vector[i].run(); - } -} |