diff options
Diffstat (limited to 'src/runtime/CL')
4 files changed, 40 insertions, 47 deletions
diff --git a/src/runtime/CL/functions/CLConvertFullyConnectedWeights.cpp b/src/runtime/CL/functions/CLConvertFullyConnectedWeights.cpp index c226e56aff..02927e83ad 100644 --- a/src/runtime/CL/functions/CLConvertFullyConnectedWeights.cpp +++ b/src/runtime/CL/functions/CLConvertFullyConnectedWeights.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -23,8 +23,8 @@ */ #include "arm_compute/runtime/CL/functions/CLConvertFullyConnectedWeights.h" -using namespace arm_compute; - +namespace arm_compute +{ void CLConvertFullyConnectedWeights::configure(const ICLTensor *input, ICLTensor *output, const TensorShape &original_input_shape, DataLayout data_layout) { @@ -37,4 +37,5 @@ Status CLConvertFullyConnectedWeights::validate(const ITensorInfo *input, const DataLayout data_layout) { return CLConvertFullyConnectedWeightsKernel::validate(input, output, original_input_shape, data_layout); -}
\ No newline at end of file +} +} // namespace arm_compute
\ No newline at end of file diff --git a/src/runtime/CL/functions/CLDepthToSpaceLayer.cpp b/src/runtime/CL/functions/CLDepthToSpaceLayer.cpp index 08aef92eae..1581dd9c19 100644 --- a/src/runtime/CL/functions/CLDepthToSpaceLayer.cpp +++ b/src/runtime/CL/functions/CLDepthToSpaceLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited. + * Copyright (c) 2019-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -21,33 +21,24 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - #include "arm_compute/runtime/CL/functions/CLDepthToSpaceLayer.h" -#include "arm_compute/core/Error.h" -#include "arm_compute/core/TensorInfo.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/core/Validate.h" -#include "arm_compute/runtime/CL/CLScheduler.h" +#include "arm_compute/core/CL/kernels/CLDepthToSpaceLayerKernel.h" +#include "support/ToolchainSupport.h" -using namespace arm_compute; +#include <utility> -CLDepthToSpaceLayer::CLDepthToSpaceLayer() - : _depth_to_space_kernel() +namespace arm_compute { -} - void CLDepthToSpaceLayer::configure(const ICLTensor *input, ICLTensor *output, int32_t block_shape) { - _depth_to_space_kernel.configure(input, output, block_shape); + auto k = arm_compute::support::cpp14::make_unique<CLDepthToSpaceLayerKernel>(); + k->configure(input, output, block_shape); + _kernel = std::move(k); } Status CLDepthToSpaceLayer::validate(const ITensorInfo *input, const ITensorInfo *output, int32_t block_shape) { return CLDepthToSpaceLayerKernel::validate(input, output, block_shape); } - -void CLDepthToSpaceLayer::run() -{ - CLScheduler::get().enqueue(_depth_to_space_kernel, true); -} +} // namespace arm_compute diff --git a/src/runtime/CL/functions/CLNormalizePlanarYUVLayer.cpp b/src/runtime/CL/functions/CLNormalizePlanarYUVLayer.cpp index 11d70e31fb..c5de591f5c 100644 --- a/src/runtime/CL/functions/CLNormalizePlanarYUVLayer.cpp +++ b/src/runtime/CL/functions/CLNormalizePlanarYUVLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -24,22 +24,18 @@ #include "arm_compute/runtime/CL/functions/CLNormalizePlanarYUVLayer.h" -#include "arm_compute/core/Error.h" -#include "arm_compute/core/TensorInfo.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/core/Validate.h" -#include "arm_compute/runtime/CL/CLScheduler.h" +#include "arm_compute/core/CL/kernels/CLNormalizePlanarYUVLayerKernel.h" +#include "support/ToolchainSupport.h" + +#include <utility> namespace arm_compute { -CLNormalizePlanarYUVLayer::CLNormalizePlanarYUVLayer() - : _norm_kernel() -{ -} - void CLNormalizePlanarYUVLayer::configure(const ICLTensor *input, ICLTensor *output, const ICLTensor *mean, const ICLTensor *std) { - _norm_kernel.configure(input, output, mean, std); + auto k = arm_compute::support::cpp14::make_unique<CLNormalizePlanarYUVLayerKernel>(); + k->configure(input, output, mean, std); + _kernel = std::move(k); } Status CLNormalizePlanarYUVLayer::validate(const ITensorInfo *input, const ITensorInfo *output, @@ -47,9 +43,4 @@ Status CLNormalizePlanarYUVLayer::validate(const ITensorInfo *input, const ITens { return CLNormalizePlanarYUVLayerKernel::validate(input, output, mean, std); } - -void CLNormalizePlanarYUVLayer::run() -{ - CLScheduler::get().enqueue(_norm_kernel, true); -} } // namespace arm_compute diff --git a/src/runtime/CL/functions/CLPoolingLayer.cpp b/src/runtime/CL/functions/CLPoolingLayer.cpp index 086017a7fd..f3ea926ae7 100644 --- a/src/runtime/CL/functions/CLPoolingLayer.cpp +++ b/src/runtime/CL/functions/CLPoolingLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 ARM Limited. + * Copyright (c) 2017-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -28,8 +28,8 @@ #include "arm_compute/runtime/CL/CLScheduler.h" #include "support/ToolchainSupport.h" -using namespace arm_compute; - +namespace arm_compute +{ void CLPoolingLayer::configure(ICLTensor *input, ICLTensor *output, const PoolingLayerInfo &pool_info) { ARM_COMPUTE_ERROR_ON_NULLPTR(input); @@ -40,12 +40,14 @@ void CLPoolingLayer::configure(ICLTensor *input, ICLTensor *output, const Poolin k->configure(input, output, pool_info); _kernel = std::move(k); + const DataType data_type = input->info()->data_type(); + // Configure border depending on operation required (quantize border in case of asymmetric data_type) BorderMode border_mode{}; PixelValue pixel_value(0.f); - if(is_data_type_quantized_asymmetric(input->info()->data_type()) && !pool_info.exclude_padding()) + if(is_data_type_quantized_asymmetric(data_type) && !pool_info.exclude_padding()) { - pixel_value = PixelValue(static_cast<uint32_t>(input->info()->quantization_info().uniform().offset)); + pixel_value = PixelValue(0, data_type, input->info()->quantization_info()); } switch(input->info()->data_layout()) { @@ -54,9 +56,16 @@ void CLPoolingLayer::configure(ICLTensor *input, ICLTensor *output, const Poolin break; case DataLayout::NHWC: border_mode = BorderMode::CONSTANT; - if(PoolingType::MAX == pool_info.pool_type() && !is_data_type_quantized_asymmetric(input->info()->data_type())) + if(PoolingType::MAX == pool_info.pool_type()) { - pixel_value = PixelValue(std::numeric_limits<float>::lowest()); + if(is_data_type_quantized(data_type)) + { + std::tie(pixel_value, std::ignore) = get_min_max(data_type); + } + else + { + pixel_value = PixelValue(std::numeric_limits<float>::lowest()); + } } break; default: @@ -71,4 +80,5 @@ void CLPoolingLayer::configure(ICLTensor *input, ICLTensor *output, const Poolin Status CLPoolingLayer::validate(const ITensorInfo *input, const ITensorInfo *output, const PoolingLayerInfo &pool_info) { return CLPoolingLayerKernel::validate(input, output, pool_info); -}
\ No newline at end of file +} +} // namespace arm_compute
\ No newline at end of file |