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/CL/functions/CLCannyEdge.cpp | 6 ++---- src/runtime/CL/functions/CLConvolution.cpp | 6 ++---- src/runtime/CL/functions/CLDepthwiseConvolutionLayer.cpp | 4 +--- src/runtime/CL/functions/CLDirectDeconvolutionLayer.cpp | 4 +--- src/runtime/CL/functions/CLFFT1D.cpp | 4 +--- src/runtime/CL/functions/CLFastCorners.cpp | 6 ++---- src/runtime/CL/functions/CLFullyConnectedLayer.cpp | 6 ++---- src/runtime/CL/functions/CLGEMM.cpp | 4 +--- src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp | 4 +--- src/runtime/CL/functions/CLGEMMLowpMatrixMultiplyCore.cpp | 4 +--- src/runtime/CL/functions/CLGaussian5x5.cpp | 6 ++---- src/runtime/CL/functions/CLGenerateProposalsLayer.cpp | 5 +---- src/runtime/CL/functions/CLHOGDescriptor.cpp | 6 ++---- src/runtime/CL/functions/CLHOGGradient.cpp | 6 ++---- src/runtime/CL/functions/CLHOGMultiDetection.cpp | 6 ++---- src/runtime/CL/functions/CLHarrisCorners.cpp | 6 ++---- src/runtime/CL/functions/CLL2NormalizeLayer.cpp | 6 ++---- src/runtime/CL/functions/CLLSTMLayer.cpp | 4 +--- src/runtime/CL/functions/CLLocallyConnectedLayer.cpp | 6 ++---- src/runtime/CL/functions/CLMeanStdDev.cpp | 6 ++---- src/runtime/CL/functions/CLOpticalFlow.cpp | 6 ++---- src/runtime/CL/functions/CLRNNLayer.cpp | 6 ++---- src/runtime/CL/functions/CLReduceMean.cpp | 3 +-- src/runtime/CL/functions/CLReductionOperation.cpp | 4 +--- src/runtime/CL/functions/CLSobel5x5.cpp | 6 ++---- src/runtime/CL/functions/CLSobel7x7.cpp | 6 ++---- src/runtime/CL/functions/CLSoftmaxLayer.cpp | 7 ++----- src/runtime/CL/functions/CLWinogradConvolutionLayer.cpp | 4 +--- src/runtime/GLES_COMPUTE/functions/GCConvolutionLayer.cpp | 4 +--- src/runtime/GLES_COMPUTE/functions/GCFullyConnectedLayer.cpp | 6 ++---- src/runtime/GLES_COMPUTE/functions/GCGEMM.cpp | 6 ++---- src/runtime/GLES_COMPUTE/functions/GCNormalizationLayer.cpp | 4 +--- src/runtime/GLES_COMPUTE/functions/GCSoftmaxLayer.cpp | 6 ++---- 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 +-- 64 files changed, 106 insertions(+), 232 deletions(-) (limited to 'src/runtime') diff --git a/src/runtime/CL/functions/CLCannyEdge.cpp b/src/runtime/CL/functions/CLCannyEdge.cpp index 84e87092f9..4c7458d1ed 100644 --- a/src/runtime/CL/functions/CLCannyEdge.cpp +++ b/src/runtime/CL/functions/CLCannyEdge.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -177,7 +177,7 @@ void CLCannyEdge::configure(ICLTensor *input, ICLTensor *output, int32_t upper_t void CLCannyEdge::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Run sobel _sobel->run(); @@ -199,6 +199,4 @@ void CLCannyEdge::run() _l1_list_counter.clear(CLScheduler::get().queue()); _l1_stack.clear(CLScheduler::get().queue()); CLScheduler::get().enqueue(_edge_trace, true); - - _memory_group.release(); } diff --git a/src/runtime/CL/functions/CLConvolution.cpp b/src/runtime/CL/functions/CLConvolution.cpp index 0131801679..2f43ce1974 100644 --- a/src/runtime/CL/functions/CLConvolution.cpp +++ b/src/runtime/CL/functions/CLConvolution.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -96,12 +96,10 @@ void CLConvolutionSquare::run() if(_is_separable) { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); CLScheduler::get().enqueue(_kernel_hor, false); CLScheduler::get().enqueue(_kernel_vert); - - _memory_group.release(); } else { diff --git a/src/runtime/CL/functions/CLDepthwiseConvolutionLayer.cpp b/src/runtime/CL/functions/CLDepthwiseConvolutionLayer.cpp index 15cbfcedfb..65d3f5ffe4 100644 --- a/src/runtime/CL/functions/CLDepthwiseConvolutionLayer.cpp +++ b/src/runtime/CL/functions/CLDepthwiseConvolutionLayer.cpp @@ -179,7 +179,7 @@ void CLDepthwiseConvolutionLayer3x3::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(_needs_permute) { @@ -192,8 +192,6 @@ void CLDepthwiseConvolutionLayer3x3::run() { _permute_output_to_nhwc.run(); } - - _memory_group.release(); } void CLDepthwiseConvolutionLayer3x3::prepare() diff --git a/src/runtime/CL/functions/CLDirectDeconvolutionLayer.cpp b/src/runtime/CL/functions/CLDirectDeconvolutionLayer.cpp index ee76248e35..721054dcf3 100644 --- a/src/runtime/CL/functions/CLDirectDeconvolutionLayer.cpp +++ b/src/runtime/CL/functions/CLDirectDeconvolutionLayer.cpp @@ -170,12 +170,10 @@ void CLDirectDeconvolutionLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); _scale_f.run(); _conv_f.run(); - - _memory_group.release(); } void CLDirectDeconvolutionLayer::prepare() diff --git a/src/runtime/CL/functions/CLFFT1D.cpp b/src/runtime/CL/functions/CLFFT1D.cpp index 6b6735ae58..d893cd3d1b 100644 --- a/src/runtime/CL/functions/CLFFT1D.cpp +++ b/src/runtime/CL/functions/CLFFT1D.cpp @@ -105,7 +105,7 @@ Status CLFFT1D::validate(const ITensorInfo *input, const ITensorInfo *output, co void CLFFT1D::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); CLScheduler::get().enqueue(_digit_reverse_kernel, false); @@ -113,7 +113,5 @@ void CLFFT1D::run() { CLScheduler::get().enqueue(_fft_kernels[i], i == (_num_ffts - 1)); } - - _memory_group.release(); } } // namespace arm_compute diff --git a/src/runtime/CL/functions/CLFastCorners.cpp b/src/runtime/CL/functions/CLFastCorners.cpp index d6cda91cea..fe2a18cd30 100644 --- a/src/runtime/CL/functions/CLFastCorners.cpp +++ b/src/runtime/CL/functions/CLFastCorners.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -97,7 +97,7 @@ void CLFastCorners::run() { cl::CommandQueue q = CLScheduler::get().queue(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(_non_max) { @@ -129,6 +129,4 @@ void CLFastCorners::run() } q.flush(); - - _memory_group.release(); } diff --git a/src/runtime/CL/functions/CLFullyConnectedLayer.cpp b/src/runtime/CL/functions/CLFullyConnectedLayer.cpp index 6a2aac6457..add5e16498 100644 --- a/src/runtime/CL/functions/CLFullyConnectedLayer.cpp +++ b/src/runtime/CL/functions/CLFullyConnectedLayer.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 CLFullyConnectedLayer::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 CLFullyConnectedLayer::run() CLScheduler::get().enqueue(_accumulate_biases_kernel); } } - - _memory_group.release(); } void CLFullyConnectedLayer::prepare() diff --git a/src/runtime/CL/functions/CLGEMM.cpp b/src/runtime/CL/functions/CLGEMM.cpp index e91038f9a2..2ac6f815a4 100644 --- a/src/runtime/CL/functions/CLGEMM.cpp +++ b/src/runtime/CL/functions/CLGEMM.cpp @@ -352,7 +352,7 @@ void CLGEMM::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(_is_interleaved_transposed) { @@ -381,8 +381,6 @@ void CLGEMM::run() { CLScheduler::get().enqueue(_ma_kernel); } - - _memory_group.release(); } void CLGEMM::prepare() diff --git a/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp b/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp index 8f7a62157f..40ce6b4e0f 100644 --- a/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp +++ b/src/runtime/CL/functions/CLGEMMConvolutionLayer.cpp @@ -526,7 +526,7 @@ void CLGEMMConvolutionLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Run im2col if(!_skip_im2col) @@ -562,8 +562,6 @@ void CLGEMMConvolutionLayer::run() { _activationlayer_function.run(); } - - _memory_group.release(); } void CLGEMMConvolutionLayer::prepare() diff --git a/src/runtime/CL/functions/CLGEMMLowpMatrixMultiplyCore.cpp b/src/runtime/CL/functions/CLGEMMLowpMatrixMultiplyCore.cpp index b2545228c4..c0bd85dcb5 100644 --- a/src/runtime/CL/functions/CLGEMMLowpMatrixMultiplyCore.cpp +++ b/src/runtime/CL/functions/CLGEMMLowpMatrixMultiplyCore.cpp @@ -350,7 +350,7 @@ void CLGEMMLowpMatrixMultiplyCore::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(_is_gemm_reshaped) { @@ -396,8 +396,6 @@ void CLGEMMLowpMatrixMultiplyCore::run() // Run offset contribution kernel CLScheduler::get().enqueue(_offset_contribution_kernel, true); } - - _memory_group.release(); } void CLGEMMLowpMatrixMultiplyCore::prepare() diff --git a/src/runtime/CL/functions/CLGaussian5x5.cpp b/src/runtime/CL/functions/CLGaussian5x5.cpp index f30eee1df7..ea803e4796 100644 --- a/src/runtime/CL/functions/CLGaussian5x5.cpp +++ b/src/runtime/CL/functions/CLGaussian5x5.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2017 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -62,10 +62,8 @@ void CLGaussian5x5::run() { CLScheduler::get().enqueue(_border_handler, false); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); CLScheduler::get().enqueue(_kernel_hor, false); CLScheduler::get().enqueue(_kernel_vert); - - _memory_group.release(); } diff --git a/src/runtime/CL/functions/CLGenerateProposalsLayer.cpp b/src/runtime/CL/functions/CLGenerateProposalsLayer.cpp index c50132ea04..d712a23325 100644 --- a/src/runtime/CL/functions/CLGenerateProposalsLayer.cpp +++ b/src/runtime/CL/functions/CLGenerateProposalsLayer.cpp @@ -256,7 +256,7 @@ void CLGenerateProposalsLayer::run_cpp_nms_kernel() void CLGenerateProposalsLayer::run() { // Acquire all the temporaries - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Compute all the anchors CLScheduler::get().enqueue(_compute_anchors_kernel, false); @@ -277,8 +277,5 @@ void CLGenerateProposalsLayer::run() // Add dummy batch indexes CLScheduler::get().enqueue(_memset_kernel, true); CLScheduler::get().enqueue(_padded_copy_kernel, true); - - // Release all the temporaries - _memory_group.release(); } } // namespace arm_compute diff --git a/src/runtime/CL/functions/CLHOGDescriptor.cpp b/src/runtime/CL/functions/CLHOGDescriptor.cpp index 1470d5cdc1..09314439a8 100644 --- a/src/runtime/CL/functions/CLHOGDescriptor.cpp +++ b/src/runtime/CL/functions/CLHOGDescriptor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -95,7 +95,7 @@ void CLHOGDescriptor::configure(ICLTensor *input, ICLTensor *output, const IHOG void CLHOGDescriptor::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Run gradient _gradient.run(); @@ -105,6 +105,4 @@ void CLHOGDescriptor::run() // Run block normalization CLScheduler::get().enqueue(_block_norm); - - _memory_group.release(); } \ No newline at end of file diff --git a/src/runtime/CL/functions/CLHOGGradient.cpp b/src/runtime/CL/functions/CLHOGGradient.cpp index 51aeaed5cf..e509fd8e36 100644 --- a/src/runtime/CL/functions/CLHOGGradient.cpp +++ b/src/runtime/CL/functions/CLHOGGradient.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -71,13 +71,11 @@ void CLHOGGradient::configure(ICLTensor *input, ICLTensor *output_magnitude, ICL void CLHOGGradient::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Run derivative _derivative.run(); // Run magnitude/phase kernel CLScheduler::get().enqueue(_mag_phase); - - _memory_group.release(); } \ No newline at end of file diff --git a/src/runtime/CL/functions/CLHOGMultiDetection.cpp b/src/runtime/CL/functions/CLHOGMultiDetection.cpp index 8012c2f60a..0865f50fd5 100644 --- a/src/runtime/CL/functions/CLHOGMultiDetection.cpp +++ b/src/runtime/CL/functions/CLHOGMultiDetection.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -231,7 +231,7 @@ void CLHOGMultiDetection::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(); @@ -265,6 +265,4 @@ void CLHOGMultiDetection::run() Scheduler::get().schedule(_non_maxima_kernel.get(), Window::DimY); _detection_windows->unmap(CLScheduler::get().queue()); } - - _memory_group.release(); } diff --git a/src/runtime/CL/functions/CLHarrisCorners.cpp b/src/runtime/CL/functions/CLHarrisCorners.cpp index 65ce7de490..342d1cad49 100644 --- a/src/runtime/CL/functions/CLHarrisCorners.cpp +++ b/src/runtime/CL/functions/CLHarrisCorners.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -159,7 +159,7 @@ void CLHarrisCorners::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; @@ -185,6 +185,4 @@ void CLHarrisCorners::run() _corners->map(CLScheduler::get().queue(), true); Scheduler::get().schedule(&_sort_euclidean, Window::DimY); _corners->unmap(CLScheduler::get().queue()); - - _memory_group.release(); } diff --git a/src/runtime/CL/functions/CLL2NormalizeLayer.cpp b/src/runtime/CL/functions/CLL2NormalizeLayer.cpp index 2e3c6d7763..136cb5edef 100644 --- a/src/runtime/CL/functions/CLL2NormalizeLayer.cpp +++ b/src/runtime/CL/functions/CLL2NormalizeLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -74,11 +74,9 @@ Status CLL2NormalizeLayer::validate(const ITensorInfo *input, const ITensorInfo void CLL2NormalizeLayer::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); _reduce_func.run(); CLScheduler::get().enqueue(_normalize_kernel, true); - - _memory_group.release(); } } // namespace arm_compute diff --git a/src/runtime/CL/functions/CLLSTMLayer.cpp b/src/runtime/CL/functions/CLLSTMLayer.cpp index 13c4871148..4606a66bf2 100644 --- a/src/runtime/CL/functions/CLLSTMLayer.cpp +++ b/src/runtime/CL/functions/CLLSTMLayer.cpp @@ -505,7 +505,7 @@ void CLLSTMLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); CLScheduler::get().enqueue(_concat_inputs_forget_gate); @@ -574,8 +574,6 @@ void CLLSTMLayer::run() CLScheduler::get().enqueue(_copy_output); _concat_scratch_buffer.run(); - - _memory_group.release(); } void CLLSTMLayer::prepare() diff --git a/src/runtime/CL/functions/CLLocallyConnectedLayer.cpp b/src/runtime/CL/functions/CLLocallyConnectedLayer.cpp index 5c6bef995f..3e99dde253 100644 --- a/src/runtime/CL/functions/CLLocallyConnectedLayer.cpp +++ b/src/runtime/CL/functions/CLLocallyConnectedLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -176,7 +176,7 @@ void CLLocallyConnectedLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Run input reshaping CLScheduler::get().enqueue(_input_im2col_kernel); @@ -186,8 +186,6 @@ void CLLocallyConnectedLayer::run() // Reshape output matrix CLScheduler::get().enqueue(_output_col2im_kernel, false); - - _memory_group.release(); } void CLLocallyConnectedLayer::prepare() diff --git a/src/runtime/CL/functions/CLMeanStdDev.cpp b/src/runtime/CL/functions/CLMeanStdDev.cpp index 157f306d0c..8517b59e7a 100644 --- a/src/runtime/CL/functions/CLMeanStdDev.cpp +++ b/src/runtime/CL/functions/CLMeanStdDev.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -104,7 +104,7 @@ void CLMeanStdDev::configure(ICLImage *input, float *mean, float *stddev) template void CLMeanStdDev::run_float() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Perform reduction on x-axis _reduction_operation_mean.run(); @@ -140,8 +140,6 @@ void CLMeanStdDev::run_float() _reduction_output_stddev.unmap(); } _reduction_output_mean.unmap(); - - _memory_group.release(); } void CLMeanStdDev::run_int() diff --git a/src/runtime/CL/functions/CLOpticalFlow.cpp b/src/runtime/CL/functions/CLOpticalFlow.cpp index d00b1b5099..7ef1c83d04 100644 --- a/src/runtime/CL/functions/CLOpticalFlow.cpp +++ b/src/runtime/CL/functions/CLOpticalFlow.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -149,7 +149,7 @@ void CLOpticalFlow::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) { @@ -167,6 +167,4 @@ void CLOpticalFlow::run() } CLScheduler::get().enqueue(_tracker_finalize_kernel, true); - - _memory_group.release(); } diff --git a/src/runtime/CL/functions/CLRNNLayer.cpp b/src/runtime/CL/functions/CLRNNLayer.cpp index 63f00ac8ef..19eb69ffc8 100644 --- a/src/runtime/CL/functions/CLRNNLayer.cpp +++ b/src/runtime/CL/functions/CLRNNLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -105,7 +105,7 @@ void CLRNNLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); _fully_connected_kernel.run(); _gemm_state_f.run(); @@ -114,8 +114,6 @@ void CLRNNLayer::run() // copy hidden out to output CLScheduler::get().enqueue(_copy_kernel); - - _memory_group.release(); } void CLRNNLayer::prepare() diff --git a/src/runtime/CL/functions/CLReduceMean.cpp b/src/runtime/CL/functions/CLReduceMean.cpp index b2d0f81f50..702ce34a4d 100644 --- a/src/runtime/CL/functions/CLReduceMean.cpp +++ b/src/runtime/CL/functions/CLReduceMean.cpp @@ -140,7 +140,7 @@ Status CLReduceMean::validate(const ITensorInfo *input, const Coordinates &reduc void CLReduceMean::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); for(unsigned int i = 0; i < _reduction_ops; ++i) { @@ -151,6 +151,5 @@ void CLReduceMean::run() { _reshape.run(); } - _memory_group.release(); } } // namespace arm_compute diff --git a/src/runtime/CL/functions/CLReductionOperation.cpp b/src/runtime/CL/functions/CLReductionOperation.cpp index 3d82e3f0d9..bb285d7cc8 100644 --- a/src/runtime/CL/functions/CLReductionOperation.cpp +++ b/src/runtime/CL/functions/CLReductionOperation.cpp @@ -206,7 +206,7 @@ void CLReductionOperation::configure(ICLTensor *input, ICLTensor *output, unsign void CLReductionOperation::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(_is_serial) { @@ -220,6 +220,4 @@ void CLReductionOperation::run() CLScheduler::get().enqueue(_reduction_kernels_vector[i], false); } } - - _memory_group.release(); } diff --git a/src/runtime/CL/functions/CLSobel5x5.cpp b/src/runtime/CL/functions/CLSobel5x5.cpp index d4bc85524e..22fbef17eb 100644 --- a/src/runtime/CL/functions/CLSobel5x5.cpp +++ b/src/runtime/CL/functions/CLSobel5x5.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 CLSobel5x5::run() { CLScheduler::get().enqueue(_border_handler, false); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); CLScheduler::get().enqueue(_sobel_hor, false); CLScheduler::get().enqueue(_sobel_vert); - - _memory_group.release(); } diff --git a/src/runtime/CL/functions/CLSobel7x7.cpp b/src/runtime/CL/functions/CLSobel7x7.cpp index 60830905df..9b38f6928f 100644 --- a/src/runtime/CL/functions/CLSobel7x7.cpp +++ b/src/runtime/CL/functions/CLSobel7x7.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 CLSobel7x7::run() { CLScheduler::get().enqueue(_border_handler, false); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); CLScheduler::get().enqueue(_sobel_hor, false); CLScheduler::get().enqueue(_sobel_vert); - - _memory_group.release(); } diff --git a/src/runtime/CL/functions/CLSoftmaxLayer.cpp b/src/runtime/CL/functions/CLSoftmaxLayer.cpp index d6718467d5..7e41dba8ab 100644 --- a/src/runtime/CL/functions/CLSoftmaxLayer.cpp +++ b/src/runtime/CL/functions/CLSoftmaxLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -191,7 +191,7 @@ Status CLSoftmaxLayer::validate(const ITensorInfo *input, const ITensorInfo *out void CLSoftmaxLayer::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(_needs_flattening) { @@ -205,9 +205,6 @@ void CLSoftmaxLayer::run() { CLScheduler::get().enqueue(_reshape_kernel, true); } - - // Relase intermediate buffers - _memory_group.release(); } } // namespace arm_compute diff --git a/src/runtime/CL/functions/CLWinogradConvolutionLayer.cpp b/src/runtime/CL/functions/CLWinogradConvolutionLayer.cpp index 52973bac78..d3c3f9803e 100644 --- a/src/runtime/CL/functions/CLWinogradConvolutionLayer.cpp +++ b/src/runtime/CL/functions/CLWinogradConvolutionLayer.cpp @@ -204,7 +204,7 @@ void CLWinogradConvolutionLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Run input transform _input_transform.run(); @@ -214,8 +214,6 @@ void CLWinogradConvolutionLayer::run() // Run output transform CLScheduler::get().enqueue(_output_transform); - - _memory_group.release(); } void CLWinogradConvolutionLayer::prepare() diff --git a/src/runtime/GLES_COMPUTE/functions/GCConvolutionLayer.cpp b/src/runtime/GLES_COMPUTE/functions/GCConvolutionLayer.cpp index a35a18a3d4..61c0740937 100644 --- a/src/runtime/GLES_COMPUTE/functions/GCConvolutionLayer.cpp +++ b/src/runtime/GLES_COMPUTE/functions/GCConvolutionLayer.cpp @@ -201,7 +201,7 @@ void GCConvolutionLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Run im2col GCScheduler::get().dispatch(_fill_border); @@ -216,8 +216,6 @@ void GCConvolutionLayer::run() GCScheduler::get().dispatch(_output_col2im_kernel, false); GCScheduler::get().memory_barrier(); - _memory_group.release(); - // Run Activation Layer if(_is_activationlayer_enabled) { diff --git a/src/runtime/GLES_COMPUTE/functions/GCFullyConnectedLayer.cpp b/src/runtime/GLES_COMPUTE/functions/GCFullyConnectedLayer.cpp index 6b8e341b14..a208545a99 100644 --- a/src/runtime/GLES_COMPUTE/functions/GCFullyConnectedLayer.cpp +++ b/src/runtime/GLES_COMPUTE/functions/GCFullyConnectedLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -150,7 +150,7 @@ void GCFullyConnectedLayer::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); // Linearize input if it comes from a convolutional layer if(_is_fc_after_conv) @@ -173,8 +173,6 @@ void GCFullyConnectedLayer::run() GCScheduler::get().dispatch(_accumulate_biases_kernel); } - - _memory_group.release(); } void GCFullyConnectedLayer::prepare() diff --git a/src/runtime/GLES_COMPUTE/functions/GCGEMM.cpp b/src/runtime/GLES_COMPUTE/functions/GCGEMM.cpp index 8ae91ee82c..ddfe590ee1 100644 --- a/src/runtime/GLES_COMPUTE/functions/GCGEMM.cpp +++ b/src/runtime/GLES_COMPUTE/functions/GCGEMM.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 GCGEMM::run() { prepare(); - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); if(_is_interleaved_transposed) { @@ -187,8 +187,6 @@ void GCGEMM::run() GCScheduler::get().memory_barrier(); GCScheduler::get().dispatch(_ma_kernel); } - - _memory_group.release(); } void GCGEMM::prepare() diff --git a/src/runtime/GLES_COMPUTE/functions/GCNormalizationLayer.cpp b/src/runtime/GLES_COMPUTE/functions/GCNormalizationLayer.cpp index 2569365dce..8f602792a8 100644 --- a/src/runtime/GLES_COMPUTE/functions/GCNormalizationLayer.cpp +++ b/src/runtime/GLES_COMPUTE/functions/GCNormalizationLayer.cpp @@ -56,13 +56,11 @@ void GCNormalizationLayer::configure(const IGCTensor *input, IGCTensor *output, void GCNormalizationLayer::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); GCScheduler::get().dispatch(_multiply_kernel, false); GCScheduler::get().memory_barrier(); GCScheduler::get().dispatch(_border_handler, false); GCScheduler::get().memory_barrier(); GCScheduler::get().dispatch(_norm_kernel, true); - - _memory_group.release(); } diff --git a/src/runtime/GLES_COMPUTE/functions/GCSoftmaxLayer.cpp b/src/runtime/GLES_COMPUTE/functions/GCSoftmaxLayer.cpp index dad42cd7e3..0645ae7f8f 100644 --- a/src/runtime/GLES_COMPUTE/functions/GCSoftmaxLayer.cpp +++ b/src/runtime/GLES_COMPUTE/functions/GCSoftmaxLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -69,13 +69,11 @@ void GCSoftmaxLayer::configure(const IGCTensor *input, IGCTensor *output, float void GCSoftmaxLayer::run() { - _memory_group.acquire(); + MemoryGroupResourceScope scope_mg(_memory_group); GCScheduler::get().dispatch(_max_kernel, false); GCScheduler::get().memory_barrier(); GCScheduler::get().dispatch(_shift_exp_sum_kernel, false); GCScheduler::get().memory_barrier(); GCScheduler::get().dispatch(_norm_kernel); - - _memory_group.release(); } 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