From da953f2e17b401ff595ac88008cd5e90440ebf74 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Tue, 2 Apr 2019 17:27:03 +0100 Subject: COMPMID-2098: Scope handling of memory group resources. Change-Id: Ie945526bd7845301458039edf3129253c1808505 Signed-off-by: Georgios Pinitas Reviewed-on: https://review.mlplatform.org/c/938 Comments-Addressed: Arm Jenkins Reviewed-by: Michele Di Giorgio Tested-by: Arm Jenkins --- src/runtime/NEON/functions/NEArgMinMaxLayer.cpp | 4 +--- src/runtime/NEON/functions/NECannyEdge.cpp | 6 ++---- src/runtime/NEON/functions/NEConvolution.cpp | 6 ++---- src/runtime/NEON/functions/NEDeconvolutionLayer.cpp | 4 +--- src/runtime/NEON/functions/NEDepthwiseConvolutionLayer.cpp | 4 +--- src/runtime/NEON/functions/NEDirectConvolutionLayer.cpp | 5 ++--- src/runtime/NEON/functions/NEFastCorners.cpp | 6 ++---- src/runtime/NEON/functions/NEFullyConnectedLayer.cpp | 6 ++---- src/runtime/NEON/functions/NEGEMM.cpp | 8 ++------ src/runtime/NEON/functions/NEGEMMAssemblyDispatch.cpp | 3 +-- src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp | 4 +--- .../NEON/functions/NEGEMMLowpAssemblyMatrixMultiplyCore.cpp | 7 +++---- src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp | 4 +--- src/runtime/NEON/functions/NEGaussian5x5.cpp | 6 ++---- src/runtime/NEON/functions/NEHOGDescriptor.cpp | 6 ++---- src/runtime/NEON/functions/NEHOGGradient.cpp | 6 ++---- src/runtime/NEON/functions/NEHOGMultiDetection.cpp | 6 ++---- src/runtime/NEON/functions/NEHarrisCorners.cpp | 6 ++---- src/runtime/NEON/functions/NEL2NormalizeLayer.cpp | 6 ++---- src/runtime/NEON/functions/NELSTMLayer.cpp | 6 ++---- src/runtime/NEON/functions/NELocallyConnectedLayer.cpp | 6 ++---- src/runtime/NEON/functions/NENormalizationLayer.cpp | 6 ++---- src/runtime/NEON/functions/NEOpticalFlow.cpp | 6 ++---- src/runtime/NEON/functions/NERNNLayer.cpp | 6 ++---- src/runtime/NEON/functions/NEReduceMean.cpp | 3 +-- src/runtime/NEON/functions/NESobel5x5.cpp | 6 ++---- src/runtime/NEON/functions/NESobel7x7.cpp | 6 ++---- src/runtime/NEON/functions/NESoftmaxLayer.cpp | 4 +--- src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp | 6 ++---- .../functions/assembly/NEDepthwiseConvolutionAssemblyDispatch.cpp | 4 +--- src/runtime/NEON/functions/assembly/NEGEMMInterleavedWrapper.cpp | 3 +-- 31 files changed, 53 insertions(+), 112 deletions(-) (limited to 'src/runtime/NEON') diff --git a/src/runtime/NEON/functions/NEArgMinMaxLayer.cpp b/src/runtime/NEON/functions/NEArgMinMaxLayer.cpp index d33e1342b9..6863bb0b3b 100644 --- a/src/runtime/NEON/functions/NEArgMinMaxLayer.cpp +++ b/src/runtime/NEON/functions/NEArgMinMaxLayer.cpp @@ -57,15 +57,13 @@ Status NEArgMinMaxLayer::validate(const ITensorInfo *input, int axis, const ITen void NEArgMinMaxLayer::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(_run_fill_border) { NEScheduler::get().schedule(&_fill_border_kernel, Window::DimY); } NEScheduler::get().schedule(&_reduction_kernel, Window::DimY); - - _memory_group.release(); } } // namespace arm_compute \ No newline at end of file diff --git a/src/runtime/NEON/functions/NECannyEdge.cpp b/src/runtime/NEON/functions/NECannyEdge.cpp index 0e5d50fd21..032e617b1b 100644 --- a/src/runtime/NEON/functions/NECannyEdge.cpp +++ b/src/runtime/NEON/functions/NECannyEdge.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -162,7 +162,7 @@ void NECannyEdge::run() { ARM_COMPUTE_ERROR_ON_MSG(_sobel == nullptr, "Unconfigured function"); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Run sobelNxN _sobel->run(); @@ -184,6 +184,4 @@ void NECannyEdge::run() // Run edge tracing NEScheduler::get().schedule(&_edge_trace, Window::DimY); - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NEConvolution.cpp b/src/runtime/NEON/functions/NEConvolution.cpp index b84dfd344c..973855e124 100644 --- a/src/runtime/NEON/functions/NEConvolution.cpp +++ b/src/runtime/NEON/functions/NEConvolution.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -103,12 +103,10 @@ void NEConvolutionSquare::run() if(_is_separable) { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); NEScheduler::get().schedule(&_kernel_hor, Window::DimY); NEScheduler::get().schedule(&_kernel_vert, Window::DimY); - - _memory_group.release(); } else { diff --git a/src/runtime/NEON/functions/NEDeconvolutionLayer.cpp b/src/runtime/NEON/functions/NEDeconvolutionLayer.cpp index 44d7197a65..fdc959c4a9 100644 --- a/src/runtime/NEON/functions/NEDeconvolutionLayer.cpp +++ b/src/runtime/NEON/functions/NEDeconvolutionLayer.cpp @@ -159,12 +159,10 @@ void NEDeconvolutionLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); _upsample_f.run(); _conv_f.run(); - - _memory_group.release(); } void NEDeconvolutionLayer::prepare() diff --git a/src/runtime/NEON/functions/NEDepthwiseConvolutionLayer.cpp b/src/runtime/NEON/functions/NEDepthwiseConvolutionLayer.cpp index 5db94a67c0..4f632a20a0 100644 --- a/src/runtime/NEON/functions/NEDepthwiseConvolutionLayer.cpp +++ b/src/runtime/NEON/functions/NEDepthwiseConvolutionLayer.cpp @@ -296,7 +296,7 @@ void NEDepthwiseConvolutionLayer3x3::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Permute input if(_permute) @@ -311,8 +311,6 @@ void NEDepthwiseConvolutionLayer3x3::run() { _activationlayer_function.run(); } - - _memory_group.release(); } void NEDepthwiseConvolutionLayer3x3::prepare() diff --git a/src/runtime/NEON/functions/NEDirectConvolutionLayer.cpp b/src/runtime/NEON/functions/NEDirectConvolutionLayer.cpp index 40e40c8ffa..322bb2c425 100644 --- a/src/runtime/NEON/functions/NEDirectConvolutionLayer.cpp +++ b/src/runtime/NEON/functions/NEDirectConvolutionLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -105,7 +105,7 @@ void NEDirectConvolutionLayer::run() { NEScheduler::get().schedule(&_input_border_handler, Window::DimZ); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); NEScheduler::get().schedule(&_conv_kernel, _dim_split); if(_has_bias) @@ -117,5 +117,4 @@ void NEDirectConvolutionLayer::run() { _activationlayer_function.run(); } - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NEFastCorners.cpp b/src/runtime/NEON/functions/NEFastCorners.cpp index 4137b1d131..af3530151c 100644 --- a/src/runtime/NEON/functions/NEFastCorners.cpp +++ b/src/runtime/NEON/functions/NEFastCorners.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2017 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -93,7 +93,7 @@ void NEFastCorners::run() { NEScheduler::get().schedule(&_border_handler, Window::DimZ); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); NEScheduler::get().schedule(&_fast_corners_kernel, Window::DimY); @@ -103,6 +103,4 @@ void NEFastCorners::run() } NEScheduler::get().schedule(&_fill_kernel, Window::DimY); - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NEFullyConnectedLayer.cpp b/src/runtime/NEON/functions/NEFullyConnectedLayer.cpp index 45e21b53d1..273da278e8 100644 --- a/src/runtime/NEON/functions/NEFullyConnectedLayer.cpp +++ b/src/runtime/NEON/functions/NEFullyConnectedLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -333,7 +333,7 @@ void NEFullyConnectedLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Linearize input if it comes from a convolutional layer if(_is_fc_after_conv) @@ -363,8 +363,6 @@ void NEFullyConnectedLayer::run() NEScheduler::get().schedule(&_accumulate_biases_kernel, Window::DimY); } } - - _memory_group.release(); } void NEFullyConnectedLayer::prepare() diff --git a/src/runtime/NEON/functions/NEGEMM.cpp b/src/runtime/NEON/functions/NEGEMM.cpp index 914f088bf5..55bcc45d12 100644 --- a/src/runtime/NEON/functions/NEGEMM.cpp +++ b/src/runtime/NEON/functions/NEGEMM.cpp @@ -238,16 +238,14 @@ void NEGEMM::run() { prepare(); + MemoryGroupResourceScope scope_mg(_memory_group); + if(_asm_glue.is_configured()) { - _memory_group.acquire(); _asm_glue.run(); - _memory_group.release(); } else { - _memory_group.acquire(); - if(!_run_vector_matrix_multiplication) { // Run interleave kernel @@ -262,8 +260,6 @@ void NEGEMM::run() NEScheduler::get().schedule(&_mm_kernel, _run_vector_matrix_multiplication ? Window::DimX : Window::DimY); - _memory_group.release(); - // Run matrix addition kernel if(_run_addition) { diff --git a/src/runtime/NEON/functions/NEGEMMAssemblyDispatch.cpp b/src/runtime/NEON/functions/NEGEMMAssemblyDispatch.cpp index 470e9220ae..fe1f2da457 100644 --- a/src/runtime/NEON/functions/NEGEMMAssemblyDispatch.cpp +++ b/src/runtime/NEON/functions/NEGEMMAssemblyDispatch.cpp @@ -375,7 +375,7 @@ bool NEGEMMAssemblyDispatch::is_configured() const void NEGEMMAssemblyDispatch::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(_function != nullptr) { _function->run(); @@ -385,6 +385,5 @@ void NEGEMMAssemblyDispatch::run() ARM_COMPUTE_ERROR_ON(_arm_gemm == nullptr); _arm_gemm->run(); } - _memory_group.release(); } } //namespace arm_compute diff --git a/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp b/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp index b6c37349c1..beac4ffe5f 100644 --- a/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp +++ b/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp @@ -546,7 +546,7 @@ void NEGEMMConvolutionLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(!_skip_im2col) { @@ -589,8 +589,6 @@ void NEGEMMConvolutionLayer::run() { _activationlayer_function.run(); } - - _memory_group.release(); } void NEGEMMConvolutionLayer::prepare() diff --git a/src/runtime/NEON/functions/NEGEMMLowpAssemblyMatrixMultiplyCore.cpp b/src/runtime/NEON/functions/NEGEMMLowpAssemblyMatrixMultiplyCore.cpp index 47c33587a0..ede89bf558 100644 --- a/src/runtime/NEON/functions/NEGEMMLowpAssemblyMatrixMultiplyCore.cpp +++ b/src/runtime/NEON/functions/NEGEMMLowpAssemblyMatrixMultiplyCore.cpp @@ -1,4 +1,5 @@ -/* Copyright (c) 2017-2018 ARM Limited. +/* + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -116,7 +117,7 @@ void NEGEMMLowpAssemblyMatrixMultiplyCore::configure(const ITensor *a, const ITe void NEGEMMLowpAssemblyMatrixMultiplyCore::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(_mtx_a_reshape_kernel) { NEScheduler::get().schedule(_mtx_a_reshape_kernel.get(), Window::DimY); @@ -135,6 +136,4 @@ void NEGEMMLowpAssemblyMatrixMultiplyCore::run() { NEScheduler::get().schedule(_mm_kernel.get(), Window::DimY); } - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp b/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp index 0247a39421..5ce7bc5f2c 100644 --- a/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp +++ b/src/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.cpp @@ -340,7 +340,7 @@ void NEGEMMLowpMatrixMultiplyCore::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Reshape inputs if(_mtx_a_reshape_kernel) @@ -384,8 +384,6 @@ void NEGEMMLowpMatrixMultiplyCore::run() // Run offset contribution kernel NEScheduler::get().schedule(&_offset_contribution_kernel, Window::DimY); } - - _memory_group.release(); } void NEGEMMLowpMatrixMultiplyCore::prepare() diff --git a/src/runtime/NEON/functions/NEGaussian5x5.cpp b/src/runtime/NEON/functions/NEGaussian5x5.cpp index b010ca0104..3c7411e2de 100644 --- a/src/runtime/NEON/functions/NEGaussian5x5.cpp +++ b/src/runtime/NEON/functions/NEGaussian5x5.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2017 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -59,10 +59,8 @@ void NEGaussian5x5::run() { NEScheduler::get().schedule(&_border_handler, Window::DimZ); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); NEScheduler::get().schedule(&_kernel_hor, Window::DimY); NEScheduler::get().schedule(&_kernel_vert, Window::DimY); - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NEHOGDescriptor.cpp b/src/runtime/NEON/functions/NEHOGDescriptor.cpp index 5e98269f47..8efc091d0a 100644 --- a/src/runtime/NEON/functions/NEHOGDescriptor.cpp +++ b/src/runtime/NEON/functions/NEHOGDescriptor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2017 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -95,7 +95,7 @@ void NEHOGDescriptor::configure(ITensor *input, ITensor *output, const IHOG *hog void NEHOGDescriptor::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Run gradient _gradient.run(); @@ -105,6 +105,4 @@ void NEHOGDescriptor::run() // Run block normalization kernel NEScheduler::get().schedule(&_block_norm, Window::DimY); - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NEHOGGradient.cpp b/src/runtime/NEON/functions/NEHOGGradient.cpp index efc8690ede..90785fe301 100644 --- a/src/runtime/NEON/functions/NEHOGGradient.cpp +++ b/src/runtime/NEON/functions/NEHOGGradient.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2017 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -80,13 +80,11 @@ void NEHOGGradient::configure(ITensor *input, ITensor *output_magnitude, ITensor void NEHOGGradient::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Run derivative _derivative.run(); // Run magnitude/phase kernel NEScheduler::get().schedule(_mag_phase.get(), Window::DimY); - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NEHOGMultiDetection.cpp b/src/runtime/NEON/functions/NEHOGMultiDetection.cpp index 8c834e2a93..6a6d04573c 100644 --- a/src/runtime/NEON/functions/NEHOGMultiDetection.cpp +++ b/src/runtime/NEON/functions/NEHOGMultiDetection.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2017 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -225,7 +225,7 @@ void NEHOGMultiDetection::run() { ARM_COMPUTE_ERROR_ON_MSG(_detection_windows == nullptr, "Unconfigured function"); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Reset detection window _detection_windows->clear(); @@ -256,6 +256,4 @@ void NEHOGMultiDetection::run() { NEScheduler::get().schedule(_non_maxima_kernel.get(), Window::DimY); } - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NEHarrisCorners.cpp b/src/runtime/NEON/functions/NEHarrisCorners.cpp index db5e9265bb..15cecc25a0 100644 --- a/src/runtime/NEON/functions/NEHarrisCorners.cpp +++ b/src/runtime/NEON/functions/NEHarrisCorners.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -184,7 +184,7 @@ void NEHarrisCorners::run() { ARM_COMPUTE_ERROR_ON_MSG(_sobel == nullptr, "Unconfigured function"); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Init to 0 number of corner candidates _num_corner_candidates = 0; @@ -207,6 +207,4 @@ void NEHarrisCorners::run() // Run sort & euclidean distance NEScheduler::get().schedule(&_sort_euclidean, Window::DimY); - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NEL2NormalizeLayer.cpp b/src/runtime/NEON/functions/NEL2NormalizeLayer.cpp index 56da966abf..c9ab5c98e2 100644 --- a/src/runtime/NEON/functions/NEL2NormalizeLayer.cpp +++ b/src/runtime/NEON/functions/NEL2NormalizeLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -68,11 +68,9 @@ Status NEL2NormalizeLayer::validate(const ITensorInfo *input, const ITensorInfo void NEL2NormalizeLayer::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); _reduce_func.run(); NEScheduler::get().schedule(&_normalize_kernel, Window::DimY); - - _memory_group.release(); } } // namespace arm_compute diff --git a/src/runtime/NEON/functions/NELSTMLayer.cpp b/src/runtime/NEON/functions/NELSTMLayer.cpp index a0adbb0f43..3d3c6a12fa 100644 --- a/src/runtime/NEON/functions/NELSTMLayer.cpp +++ b/src/runtime/NEON/functions/NELSTMLayer.cpp @@ -92,7 +92,7 @@ void NELSTMLayer::configure(const ITensor *input, scratch_buffer->info(), output_state_out->info(), cell_state_out->info(), output->info(), lstm_params_info, activation_info, cell_threshold, projection_threshold)); - const TensorShape cell_state_shape = cell_state_in->info()->tensor_shape(); + const TensorShape cell_state_shape = cell_state_in->info()->tensor_shape(); // Configure block that calculates the forget gate // forget_gate = Activation(input * input_to_forget_weights + output_state_in * recurrent_to_forget_weights + PixelWiseMul(cell_state, cell_to_forget_weights) + forget_gate_bias) @@ -493,7 +493,7 @@ void NELSTMLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); _concat_inputs_forget_gate.run(); _fully_connected_forget_gate.run(); @@ -567,8 +567,6 @@ void NELSTMLayer::run() NEScheduler::get().schedule(&_copy_output, Window::DimY); _concat_scratch_buffer.run(); - - _memory_group.release(); } void NELSTMLayer::prepare() diff --git a/src/runtime/NEON/functions/NELocallyConnectedLayer.cpp b/src/runtime/NEON/functions/NELocallyConnectedLayer.cpp index 80a2541176..d08202dd24 100644 --- a/src/runtime/NEON/functions/NELocallyConnectedLayer.cpp +++ b/src/runtime/NEON/functions/NELocallyConnectedLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -168,7 +168,7 @@ void NELocallyConnectedLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Run input reshaping NEScheduler::get().schedule(&_input_im2col_kernel, Window::DimY); @@ -178,8 +178,6 @@ void NELocallyConnectedLayer::run() // Reshape output matrix NEScheduler::get().schedule(&_output_col2im_kernel, Window::DimY); - - _memory_group.release(); } void NELocallyConnectedLayer::prepare() diff --git a/src/runtime/NEON/functions/NENormalizationLayer.cpp b/src/runtime/NEON/functions/NENormalizationLayer.cpp index f00114f930..d52e92828e 100644 --- a/src/runtime/NEON/functions/NENormalizationLayer.cpp +++ b/src/runtime/NEON/functions/NENormalizationLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -69,11 +69,9 @@ Status NENormalizationLayer::validate(const ITensorInfo *input, const ITensorInf void NENormalizationLayer::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); NEScheduler::get().schedule(&_multiply_kernel, Window::DimY); NEScheduler::get().schedule(&_border_handler, Window::DimY); NEScheduler::get().schedule(&_norm_kernel, Window::DimY); - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NEOpticalFlow.cpp b/src/runtime/NEON/functions/NEOpticalFlow.cpp index e90d8f6270..db77629ef2 100644 --- a/src/runtime/NEON/functions/NEOpticalFlow.cpp +++ b/src/runtime/NEON/functions/NEOpticalFlow.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2017 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -121,7 +121,7 @@ void NEOpticalFlow::run() { ARM_COMPUTE_ERROR_ON_MSG(_num_levels == 0, "Unconfigured function"); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); for(unsigned int level = _num_levels; level > 0; --level) { @@ -131,6 +131,4 @@ void NEOpticalFlow::run() // Run Lucas-Kanade kernel NEScheduler::get().schedule(_kernel_tracker.get() + level - 1, Window::DimX); } - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NERNNLayer.cpp b/src/runtime/NEON/functions/NERNNLayer.cpp index 995d5eed86..9ca7ded3be 100644 --- a/src/runtime/NEON/functions/NERNNLayer.cpp +++ b/src/runtime/NEON/functions/NERNNLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -104,7 +104,7 @@ void NERNNLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); _fully_connected_kernel.run(); @@ -115,8 +115,6 @@ void NERNNLayer::run() // copy hidden out to output NEScheduler::get().schedule(&_copy_kernel, Window::DimY); - - _memory_group.release(); } void NERNNLayer::prepare() diff --git a/src/runtime/NEON/functions/NEReduceMean.cpp b/src/runtime/NEON/functions/NEReduceMean.cpp index 014895f02b..98d3ab943d 100644 --- a/src/runtime/NEON/functions/NEReduceMean.cpp +++ b/src/runtime/NEON/functions/NEReduceMean.cpp @@ -137,7 +137,7 @@ void NEReduceMean::configure(ITensor *input, const Coordinates &reduction_axis, void NEReduceMean::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); for(unsigned int i = 0; i < _reduction_ops; ++i) { @@ -148,5 +148,4 @@ void NEReduceMean::run() { _reshape.run(); } - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NESobel5x5.cpp b/src/runtime/NEON/functions/NESobel5x5.cpp index d8f4eda2ff..2ddfee5028 100644 --- a/src/runtime/NEON/functions/NESobel5x5.cpp +++ b/src/runtime/NEON/functions/NESobel5x5.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2017 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -81,10 +81,8 @@ void NESobel5x5::run() { NEScheduler::get().schedule(&_border_handler, Window::DimZ); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); NEScheduler::get().schedule(&_sobel_hor, Window::DimY); NEScheduler::get().schedule(&_sobel_vert, Window::DimY); - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NESobel7x7.cpp b/src/runtime/NEON/functions/NESobel7x7.cpp index 5b6f60b338..b47a37aedb 100644 --- a/src/runtime/NEON/functions/NESobel7x7.cpp +++ b/src/runtime/NEON/functions/NESobel7x7.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2017 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -81,10 +81,8 @@ void NESobel7x7::run() { NEScheduler::get().schedule(&_border_handler, Window::DimZ); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); NEScheduler::get().schedule(&_sobel_hor, Window::DimY); NEScheduler::get().schedule(&_sobel_vert, Window::DimY); - - _memory_group.release(); } diff --git a/src/runtime/NEON/functions/NESoftmaxLayer.cpp b/src/runtime/NEON/functions/NESoftmaxLayer.cpp index 36b7d47d28..79a94961d8 100644 --- a/src/runtime/NEON/functions/NESoftmaxLayer.cpp +++ b/src/runtime/NEON/functions/NESoftmaxLayer.cpp @@ -180,7 +180,7 @@ Status NESoftmaxLayer::validate(const ITensorInfo *input, const ITensorInfo *out void NESoftmaxLayer::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(_needs_flattening) { @@ -195,7 +195,5 @@ void NESoftmaxLayer::run() { NEScheduler::get().schedule(&_reshape_kernel, Window::DimY); } - - _memory_group.release(); } } // namespace arm_compute \ No newline at end of file diff --git a/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp b/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp index e37f8abfaf..1d92471162 100644 --- a/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp +++ b/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -513,7 +513,7 @@ void NEWinogradConvolutionLayer::run() prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(data_layout == DataLayout::NCHW) { @@ -539,8 +539,6 @@ void NEWinogradConvolutionLayer::run() { _activationlayer_function.run(); } - - _memory_group.release(); } Status NEWinogradConvolutionLayer::validate(const ITensorInfo *input, const ITensorInfo *weights, const ITensorInfo *biases, const ITensorInfo *output, const PadStrideInfo &conv_info, diff --git a/src/runtime/NEON/functions/assembly/NEDepthwiseConvolutionAssemblyDispatch.cpp b/src/runtime/NEON/functions/assembly/NEDepthwiseConvolutionAssemblyDispatch.cpp index a64426500f..d9b2bff810 100644 --- a/src/runtime/NEON/functions/assembly/NEDepthwiseConvolutionAssemblyDispatch.cpp +++ b/src/runtime/NEON/functions/assembly/NEDepthwiseConvolutionAssemblyDispatch.cpp @@ -299,7 +299,7 @@ void NEDepthwiseConvolutionAssemblyDispatch::run() // Prepare assembly kernel prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Setup inputs/outputs ARM_COMPUTE_ERROR_ON(_workspace.buffer() == nullptr); @@ -323,8 +323,6 @@ void NEDepthwiseConvolutionAssemblyDispatch::run() // Schedule assembly kernel NEScheduler::get().schedule(&_dwc_acl_kernel, Window::DimX); - - _memory_group.release(); } void NEDepthwiseConvolutionAssemblyDispatch::prepare() diff --git a/src/runtime/NEON/functions/assembly/NEGEMMInterleavedWrapper.cpp b/src/runtime/NEON/functions/assembly/NEGEMMInterleavedWrapper.cpp index 34aaea0ef1..e207ab007a 100644 --- a/src/runtime/NEON/functions/assembly/NEGEMMInterleavedWrapper.cpp +++ b/src/runtime/NEON/functions/assembly/NEGEMMInterleavedWrapper.cpp @@ -183,9 +183,8 @@ void NEGEMMInterleavedWrapper::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); NEScheduler::get().run_tagged_workloads(_workloads, _tag.c_str()); - _memory_group.release(); } void NEGEMMInterleavedWrapper::prepare() -- cgit v1.2.1