diff options
author | Manuel Bottini <manuel.bottini@arm.com> | 2019-10-21 17:59:07 +0100 |
---|---|---|
committer | Manuel Bottini <manuel.bottini@arm.com> | 2019-12-03 13:58:56 +0000 |
commit | 7b9998d0fe1f98768b690ead10ebfa166d1b873d (patch) | |
tree | d3f6b81fb2e414a9e0f8ed9597eab27ef970d725 /arm_compute/runtime/CL/functions/CLArgMinMaxLayer.h | |
parent | f9179d393a07eb9eed753e315df79d22391906c6 (diff) | |
download | ComputeLibrary-7b9998d0fe1f98768b690ead10ebfa166d1b873d.tar.gz |
COMPMID-1816: Use parallel reduction on 0 axis in CL ARG_MIN/ARG_MAX
Introducing new CLArgMinMax kernel
Change-Id: I0b8254207cc3859d19ceef9b6429cf5c1c586db0
Signed-off-by: Manuel Bottini <manuel.bottini@arm.com>
Reviewed-on: https://review.mlplatform.org/c/2202
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michalis Spyrou <michalis.spyrou@arm.com>
Diffstat (limited to 'arm_compute/runtime/CL/functions/CLArgMinMaxLayer.h')
-rw-r--r-- | arm_compute/runtime/CL/functions/CLArgMinMaxLayer.h | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/arm_compute/runtime/CL/functions/CLArgMinMaxLayer.h b/arm_compute/runtime/CL/functions/CLArgMinMaxLayer.h index 1b465a4866..21cded0417 100644 --- a/arm_compute/runtime/CL/functions/CLArgMinMaxLayer.h +++ b/arm_compute/runtime/CL/functions/CLArgMinMaxLayer.h @@ -21,10 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef __ARM_COMPUTE_CLARGMINMAXLAYER_H__ -#define __ARM_COMPUTE_CLARGMINMAXLAYER_H__ +#ifndef ARM_COMPUTE_CLARGMINMAXLAYER_H +#define ARM_COMPUTE_CLARGMINMAXLAYER_H +#include "arm_compute/core/CL/kernels/CLArgMinMaxLayerKernel.h" +#include "arm_compute/core/CL/kernels/CLReshapeLayerKernel.h" #include "arm_compute/core/Types.h" +#include "arm_compute/runtime/CL/CLTensor.h" #include "arm_compute/runtime/IFunction.h" #include "arm_compute/runtime/IMemoryManager.h" #include "arm_compute/runtime/MemoryGroup.h" @@ -33,7 +36,6 @@ namespace arm_compute { class ITensorInfo; class ICLTensor; -class CLReductionOperation; /** Function to calculate the index of the minimum or maximum values in a * tensor based on an axis. @@ -53,19 +55,18 @@ public: CLArgMinMaxLayer(std::shared_ptr<IMemoryManager> memory_manager = nullptr); /** Set the input and output tensors. * - * @param[in] input Input source tensor, this could be written if @ref CLReductionOperation - * manipulates its border for better performance. Data types supported: F16/F32. + * @param[in] input Input source tensor. Data types supported: F16/F32. * @param[in] axis Axis to find max/min index. * @param[out] output Output source tensor. Data types supported: U32/S32. - * @param[in] op Operation to perform: min or max + * @param[in] op Reduction operation to perform. Operations supported: ARG_IDX_MAX, ARG_IDX_MIN */ - void configure(ICLTensor *input, int axis, ICLTensor *output, const ReductionOperation &op); + void configure(const ICLTensor *input, int axis, ICLTensor *output, const ReductionOperation &op); /** Static function to check if given info will lead to a valid configuration of @ref CLArgMinMaxLayer * * @param[in] input Input source tensor info. Data types supported: F16/F32. * @param[in] axis Axis to find max/min index. * @param[in] output Output source tensor info. Data types supported: U32/S32. - * @param[in] op Operation to perform: min or max + * @param[in] op Reduction operation to perform. Operations supported: ARG_IDX_MAX, ARG_IDX_MIN * * @return a status */ @@ -75,7 +76,13 @@ public: void run() override; private: - std::unique_ptr<CLReductionOperation> _reduction_function; + MemoryGroup _memory_group; + std::vector<CLTensor> _results_vector; + CLTensor _not_reshaped_output; + std::vector<CLArgMinMaxLayerKernel> _reduction_kernels_vector; + CLReshapeLayerKernel _reshape_kernel; + unsigned int _num_of_stages; + unsigned int _reduction_axis; }; } // namespace arm_compute -#endif /* __ARM_COMPUTE_CLARGMINMAXLAYER_H__ */ +#endif /* ARM_COMPUTE_CLARGMINMAXLAYER_H */ |