From c186b574e52b81c75e551cee46a6c4cc7d500c90 Mon Sep 17 00:00:00 2001 From: Moritz Pflanzer Date: Thu, 7 Sep 2017 09:48:04 +0100 Subject: COMPMID-481: Add thread info parameter Change-Id: Iebb50a88d017445b6b37a86563ebd4abd86c5cf5 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/86788 Tested-by: Kaizen Reviewed-by: Anthony Barbier --- arm_compute/core/CPP/CPPTypes.h | 7 +++++ arm_compute/core/CPP/ICPPKernel.h | 15 ++------- .../core/CPP/kernels/CPPCornerCandidatesKernel.h | 2 +- .../CPPDetectionWindowNonMaximaSuppressionKernel.h | 2 +- .../CPP/kernels/CPPSortEuclideanDistanceKernel.h | 2 +- .../core/NEON/kernels/NEAbsoluteDifferenceKernel.h | 2 +- arm_compute/core/NEON/kernels/NEAccumulateKernel.h | 8 ++--- .../core/NEON/kernels/NEActivationLayerKernel.h | 2 +- .../core/NEON/kernels/NEArithmeticAdditionKernel.h | 2 +- .../NEON/kernels/NEArithmeticSubtractionKernel.h | 2 +- .../NEON/kernels/NEBatchNormalizationLayerKernel.h | 2 +- arm_compute/core/NEON/kernels/NEBitwiseAndKernel.h | 2 +- arm_compute/core/NEON/kernels/NEBitwiseNotKernel.h | 2 +- arm_compute/core/NEON/kernels/NEBitwiseOrKernel.h | 2 +- arm_compute/core/NEON/kernels/NEBitwiseXorKernel.h | 2 +- arm_compute/core/NEON/kernels/NEBox3x3Kernel.h | 4 +-- arm_compute/core/NEON/kernels/NECannyEdgeKernel.h | 6 ++-- .../core/NEON/kernels/NEChannelCombineKernel.h | 2 +- .../core/NEON/kernels/NEChannelExtractKernel.h | 2 +- arm_compute/core/NEON/kernels/NECol2ImKernel.h | 2 +- .../core/NEON/kernels/NEColorConvertKernel.h | 2 +- .../core/NEON/kernels/NEConvolutionKernel.h | 8 ++--- .../NEON/kernels/NECumulativeDistributionKernel.h | 2 +- .../core/NEON/kernels/NEDepthConcatenateKernel.h | 2 +- .../core/NEON/kernels/NEDepthConvertKernel.h | 2 +- .../NEON/kernels/NEDequantizationLayerKernel.h | 2 +- arm_compute/core/NEON/kernels/NEDerivativeKernel.h | 2 +- arm_compute/core/NEON/kernels/NEDilateKernel.h | 2 +- .../NEDirectConvolutionLayerBiasAccumulateKernel.h | 2 +- .../NEON/kernels/NEDirectConvolutionLayerKernel.h | 2 +- arm_compute/core/NEON/kernels/NEErodeKernel.h | 2 +- .../core/NEON/kernels/NEFastCornersKernel.h | 2 +- arm_compute/core/NEON/kernels/NEFillArrayKernel.h | 2 +- arm_compute/core/NEON/kernels/NEFillBorderKernel.h | 2 +- .../core/NEON/kernels/NEFillInnerBorderKernel.h | 2 +- arm_compute/core/NEON/kernels/NEFloorKernel.h | 2 +- .../core/NEON/kernels/NEGEMMInterleave4x4Kernel.h | 2 +- .../NEON/kernels/NEGEMMLowpMatrixMultiplyKernel.h | 2 +- .../kernels/NEGEMMMatrixAccumulateBiasesKernel.h | 2 +- .../core/NEON/kernels/NEGEMMMatrixAdditionKernel.h | 2 +- .../core/NEON/kernels/NEGEMMMatrixMultiplyKernel.h | 2 +- .../core/NEON/kernels/NEGEMMTranspose1xWKernel.h | 2 +- .../core/NEON/kernels/NEGaussian3x3Kernel.h | 2 +- .../core/NEON/kernels/NEGaussian5x5Kernel.h | 4 +-- .../core/NEON/kernels/NEGaussianPyramidKernel.h | 4 +-- .../core/NEON/kernels/NEHOGDescriptorKernel.h | 4 +-- .../core/NEON/kernels/NEHOGDetectorKernel.h | 2 +- .../core/NEON/kernels/NEHarrisCornersKernel.h | 4 +-- arm_compute/core/NEON/kernels/NEHistogramKernel.h | 14 +++++---- arm_compute/core/NEON/kernels/NEIm2ColKernel.h | 2 +- .../core/NEON/kernels/NEIntegralImageKernel.h | 2 +- .../core/NEON/kernels/NEL2NormalizeKernel.h | 2 +- arm_compute/core/NEON/kernels/NELKTrackerKernel.h | 2 +- .../NELocallyConnectedMatrixMultiplyKernel.h | 2 +- .../core/NEON/kernels/NEMagnitudePhaseKernel.h | 4 +-- arm_compute/core/NEON/kernels/NEMeanStdDevKernel.h | 2 +- arm_compute/core/NEON/kernels/NEMedian3x3Kernel.h | 2 +- .../core/NEON/kernels/NEMinMaxLocationKernel.h | 4 +-- .../core/NEON/kernels/NENonLinearFilterKernel.h | 2 +- .../NEON/kernels/NENonMaximaSuppression3x3Kernel.h | 2 +- .../core/NEON/kernels/NENormalizationLayerKernel.h | 2 +- .../NEON/kernels/NEPixelWiseMultiplicationKernel.h | 2 +- .../core/NEON/kernels/NEPoolingLayerKernel.h | 2 +- .../core/NEON/kernels/NEQuantizationLayerKernel.h | 2 +- .../core/NEON/kernels/NEROIPoolingLayerKernel.h | 2 +- .../core/NEON/kernels/NEReductionOperationKernel.h | 2 +- arm_compute/core/NEON/kernels/NERemapKernel.h | 2 +- arm_compute/core/NEON/kernels/NEScaleKernel.h | 2 +- arm_compute/core/NEON/kernels/NEScharr3x3Kernel.h | 2 +- arm_compute/core/NEON/kernels/NESobel3x3Kernel.h | 2 +- arm_compute/core/NEON/kernels/NESobel5x5Kernel.h | 4 +-- arm_compute/core/NEON/kernels/NESobel7x7Kernel.h | 4 +-- .../core/NEON/kernels/NESoftmaxLayerKernel.h | 6 ++-- .../core/NEON/kernels/NETableLookupKernel.h | 2 +- arm_compute/core/NEON/kernels/NEThresholdKernel.h | 2 +- arm_compute/core/NEON/kernels/NETransposeKernel.h | 2 +- arm_compute/core/NEON/kernels/NEWarpKernel.h | 2 +- .../core/NEON/kernels/NEWeightsReshapeKernel.h | 2 +- arm_compute/core/Window.h | 36 +--------------------- arm_compute/core/Window.inl | 16 +++++----- 80 files changed, 120 insertions(+), 156 deletions(-) (limited to 'arm_compute/core') diff --git a/arm_compute/core/CPP/CPPTypes.h b/arm_compute/core/CPP/CPPTypes.h index 4e156ea78e..19036525d5 100644 --- a/arm_compute/core/CPP/CPPTypes.h +++ b/arm_compute/core/CPP/CPPTypes.h @@ -47,5 +47,12 @@ enum class CPUTarget A75 = (ARMV8_2 | A7x | 0x5), A75_DOT = (A75 | DOT), }; + +struct ThreadInfo +{ + int thread_id{ 0 }; + int num_threads{ 1 }; + CPUTarget cpu{ CPUTarget::INTRINSICS }; +}; } #endif /* __ARM_COMPUTE_CPP_TYPES_H__ */ diff --git a/arm_compute/core/CPP/ICPPKernel.h b/arm_compute/core/CPP/ICPPKernel.h index 9684408987..2e5600f5ff 100644 --- a/arm_compute/core/CPP/ICPPKernel.h +++ b/arm_compute/core/CPP/ICPPKernel.h @@ -47,20 +47,9 @@ public: * @note The width of the window has to be a multiple of num_elems_processed_per_iteration(). * * @param[in] window Region on which to execute the kernel. (Must be a region of the window returned by window()) + * @param[in] info Info about executing thread and CPU. */ - virtual void run(const Window &window) = 0; - - /** Sets the target CPU architecture. - * - * @param[in] target CPU target. - */ - void set_target(CPUTarget target) - { - _target = target; - } - -protected: - CPUTarget _target{ CPUTarget::INTRINSICS }; + virtual void run(const Window &window, const ThreadInfo &info) = 0; }; } #endif /*__ARM_COMPUTE_ICPPKERNEL_H__ */ diff --git a/arm_compute/core/CPP/kernels/CPPCornerCandidatesKernel.h b/arm_compute/core/CPP/kernels/CPPCornerCandidatesKernel.h index 28edb489ad..5309973f5d 100644 --- a/arm_compute/core/CPP/kernels/CPPCornerCandidatesKernel.h +++ b/arm_compute/core/CPP/kernels/CPPCornerCandidatesKernel.h @@ -62,7 +62,7 @@ public: void configure(const IImage *input, InternalKeypoint *output, int32_t *num_corner_candidates); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: int32_t *_num_corner_candidates; /**< Number of corner candidates */ diff --git a/arm_compute/core/CPP/kernels/CPPDetectionWindowNonMaximaSuppressionKernel.h b/arm_compute/core/CPP/kernels/CPPDetectionWindowNonMaximaSuppressionKernel.h index bcb3026959..2a9c0473bb 100644 --- a/arm_compute/core/CPP/kernels/CPPDetectionWindowNonMaximaSuppressionKernel.h +++ b/arm_compute/core/CPP/kernels/CPPDetectionWindowNonMaximaSuppressionKernel.h @@ -60,7 +60,7 @@ public: void configure(IDetectionWindowArray *input_output, float min_distance); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; bool is_parallelisable() const override; private: diff --git a/arm_compute/core/CPP/kernels/CPPSortEuclideanDistanceKernel.h b/arm_compute/core/CPP/kernels/CPPSortEuclideanDistanceKernel.h index b7a7d9ff9f..c6b47a512a 100644 --- a/arm_compute/core/CPP/kernels/CPPSortEuclideanDistanceKernel.h +++ b/arm_compute/core/CPP/kernels/CPPSortEuclideanDistanceKernel.h @@ -56,7 +56,7 @@ public: void configure(InternalKeypoint *in_out, IKeyPointArray *output, const int32_t *num_corner_candidates, float min_distance); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; bool is_parallelisable() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEAbsoluteDifferenceKernel.h b/arm_compute/core/NEON/kernels/NEAbsoluteDifferenceKernel.h index 9ef93ce67a..0590902fe7 100644 --- a/arm_compute/core/NEON/kernels/NEAbsoluteDifferenceKernel.h +++ b/arm_compute/core/NEON/kernels/NEAbsoluteDifferenceKernel.h @@ -60,7 +60,7 @@ public: void configure(const ITensor *input1, const ITensor *input2, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the specialised absolute difference functions diff --git a/arm_compute/core/NEON/kernels/NEAccumulateKernel.h b/arm_compute/core/NEON/kernels/NEAccumulateKernel.h index 12be3e4e7a..071e03820c 100644 --- a/arm_compute/core/NEON/kernels/NEAccumulateKernel.h +++ b/arm_compute/core/NEON/kernels/NEAccumulateKernel.h @@ -48,7 +48,7 @@ public: void configure(const ITensor *input, ITensor *accum); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; }; /** Interface for the accumulate weighted kernel @@ -74,7 +74,7 @@ public: void configure(const ITensor *input, float alpha, ITensor *accum); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; protected: float _alpha; @@ -86,7 +86,7 @@ class NEAccumulateWeightedFP16Kernel : public NEAccumulateWeightedKernel { public: // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; }; #else /* ARM_COMPUTE_ENABLE_FP16 */ using NEAccumulateWeightedFP16Kernel = NEAccumulateWeightedKernel; @@ -113,7 +113,7 @@ public: void configure(const ITensor *input, uint32_t shift, ITensor *accum); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: uint32_t _shift; diff --git a/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h b/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h index 2c88debfb4..5a6c4a5dbf 100644 --- a/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h @@ -61,7 +61,7 @@ public: void configure(ITensor *input, ITensor *output, ActivationLayerInfo activation_info); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: using ActivationFunction = ActivationLayerInfo::ActivationFunction; diff --git a/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h b/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h index e28ad67ca4..d88ad379ba 100644 --- a/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h +++ b/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h @@ -70,7 +70,7 @@ public: void configure(const ITensor *input1, const ITensor *input2, ITensor *output, ConvertPolicy policy); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the specialised add functions diff --git a/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h b/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h index a11bf44458..1a4f0e643e 100644 --- a/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h +++ b/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h @@ -70,7 +70,7 @@ public: void configure(const ITensor *input1, const ITensor *input2, ITensor *output, ConvertPolicy policy); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the specialised sub functions diff --git a/arm_compute/core/NEON/kernels/NEBatchNormalizationLayerKernel.h b/arm_compute/core/NEON/kernels/NEBatchNormalizationLayerKernel.h index 8ac70be727..8e86e35040 100644 --- a/arm_compute/core/NEON/kernels/NEBatchNormalizationLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEBatchNormalizationLayerKernel.h @@ -64,7 +64,7 @@ public: void configure(ITensor *input, ITensor *output, const ITensor *mean, const ITensor *var, const ITensor *beta, const ITensor *gamma, float epsilon); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: using BatchNormFunction = void(ITensor *input, ITensor *output, const ITensor *mean, const ITensor *var, const ITensor *beta, const ITensor *gamma, float epsilon, const Window &window); diff --git a/arm_compute/core/NEON/kernels/NEBitwiseAndKernel.h b/arm_compute/core/NEON/kernels/NEBitwiseAndKernel.h index b931445419..0882a33ef7 100644 --- a/arm_compute/core/NEON/kernels/NEBitwiseAndKernel.h +++ b/arm_compute/core/NEON/kernels/NEBitwiseAndKernel.h @@ -57,7 +57,7 @@ public: void configure(const ITensor *input1, const ITensor *input2, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input1; /**< Source tensor 1 */ diff --git a/arm_compute/core/NEON/kernels/NEBitwiseNotKernel.h b/arm_compute/core/NEON/kernels/NEBitwiseNotKernel.h index e34eb0f5ae..7bbf68c435 100644 --- a/arm_compute/core/NEON/kernels/NEBitwiseNotKernel.h +++ b/arm_compute/core/NEON/kernels/NEBitwiseNotKernel.h @@ -56,7 +56,7 @@ public: void configure(const ITensor *input, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input; /**< Source tensor */ diff --git a/arm_compute/core/NEON/kernels/NEBitwiseOrKernel.h b/arm_compute/core/NEON/kernels/NEBitwiseOrKernel.h index d2bae2660c..7cddb205fd 100644 --- a/arm_compute/core/NEON/kernels/NEBitwiseOrKernel.h +++ b/arm_compute/core/NEON/kernels/NEBitwiseOrKernel.h @@ -57,7 +57,7 @@ public: void configure(const ITensor *input1, const ITensor *input2, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input1; /**< Source tensor 1 */ diff --git a/arm_compute/core/NEON/kernels/NEBitwiseXorKernel.h b/arm_compute/core/NEON/kernels/NEBitwiseXorKernel.h index 9dea36e7e3..f7e5dc5286 100644 --- a/arm_compute/core/NEON/kernels/NEBitwiseXorKernel.h +++ b/arm_compute/core/NEON/kernels/NEBitwiseXorKernel.h @@ -57,7 +57,7 @@ public: void configure(const ITensor *input1, const ITensor *input2, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input1; /**< Source tensor 1 */ diff --git a/arm_compute/core/NEON/kernels/NEBox3x3Kernel.h b/arm_compute/core/NEON/kernels/NEBox3x3Kernel.h index 1f0fef03da..14db09a698 100644 --- a/arm_compute/core/NEON/kernels/NEBox3x3Kernel.h +++ b/arm_compute/core/NEON/kernels/NEBox3x3Kernel.h @@ -42,7 +42,7 @@ public: */ void configure(const ITensor *input, ITensor *output, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; }; @@ -53,7 +53,7 @@ class NEBox3x3FP16Kernel : public NEBox3x3Kernel { public: // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; }; #else /* ARM_COMPUTE_ENABLE_FP16 */ using NEBox3x3FP16Kernel = NEBox3x3Kernel; diff --git a/arm_compute/core/NEON/kernels/NECannyEdgeKernel.h b/arm_compute/core/NEON/kernels/NECannyEdgeKernel.h index b86085f439..0b5ebfb42b 100644 --- a/arm_compute/core/NEON/kernels/NECannyEdgeKernel.h +++ b/arm_compute/core/NEON/kernels/NECannyEdgeKernel.h @@ -62,7 +62,7 @@ public: virtual void configure(const ITensor *gx, const ITensor *gy, ITensor *magnitude, ITensor *phase, int32_t norm_type); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; protected: /** Common signature for all the specialised gradient functions @@ -129,7 +129,7 @@ public: void configure(const ITensor *magnitude, const ITensor *phase, ITensor *output, int32_t upper_thr, int32_t lower_thr, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: @@ -178,7 +178,7 @@ public: void configure(ITensor *input, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; bool is_parallelisable() const override; diff --git a/arm_compute/core/NEON/kernels/NEChannelCombineKernel.h b/arm_compute/core/NEON/kernels/NEChannelCombineKernel.h index 8b669a4d28..94bddac6ef 100644 --- a/arm_compute/core/NEON/kernels/NEChannelCombineKernel.h +++ b/arm_compute/core/NEON/kernels/NEChannelCombineKernel.h @@ -71,7 +71,7 @@ public: void configure(const IImage *plane0, const IImage *plane1, const IImage *plane2, IMultiImage *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; bool is_parallelisable() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEChannelExtractKernel.h b/arm_compute/core/NEON/kernels/NEChannelExtractKernel.h index 0715e1f8cb..42df4b8da1 100644 --- a/arm_compute/core/NEON/kernels/NEChannelExtractKernel.h +++ b/arm_compute/core/NEON/kernels/NEChannelExtractKernel.h @@ -68,7 +68,7 @@ public: void configure(const IMultiImage *input, Channel channel, IImage *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Extract one channel from a two channel planar tensor. diff --git a/arm_compute/core/NEON/kernels/NECol2ImKernel.h b/arm_compute/core/NEON/kernels/NECol2ImKernel.h index f6bc2152da..43423c008a 100644 --- a/arm_compute/core/NEON/kernels/NECol2ImKernel.h +++ b/arm_compute/core/NEON/kernels/NECol2ImKernel.h @@ -74,7 +74,7 @@ public: void configure(const ITensor *input, ITensor *output, std::pair convolved_dims); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Template function to run the col2im diff --git a/arm_compute/core/NEON/kernels/NEColorConvertKernel.h b/arm_compute/core/NEON/kernels/NEColorConvertKernel.h index 2297218117..ded8b31200 100644 --- a/arm_compute/core/NEON/kernels/NEColorConvertKernel.h +++ b/arm_compute/core/NEON/kernels/NEColorConvertKernel.h @@ -76,7 +76,7 @@ public: void configure(const IMultiImage *input, IMultiImage *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: using ColorConvertFunction = void(const void *__restrict input_ptr, void *__restrict output_ptr, const Window &win); diff --git a/arm_compute/core/NEON/kernels/NEConvolutionKernel.h b/arm_compute/core/NEON/kernels/NEConvolutionKernel.h index 588a228a5d..694b58c81f 100644 --- a/arm_compute/core/NEON/kernels/NEConvolutionKernel.h +++ b/arm_compute/core/NEON/kernels/NEConvolutionKernel.h @@ -68,7 +68,7 @@ public: void configure(const ITensor *input, ITensor *output, const int16_t *conv, uint32_t scale, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: @@ -111,7 +111,7 @@ public: void configure(const ITensor *input, ITensor *output, const int16_t *conv_row, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: @@ -152,7 +152,7 @@ public: void configure(const ITensor *input, ITensor *output, const int16_t *conv_col, uint32_t scale, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: @@ -223,7 +223,7 @@ public: void configure(const ITensor *input, ITensor *output, const int16_t *conv, uint32_t width, uint32_t height, uint32_t scale, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NECumulativeDistributionKernel.h b/arm_compute/core/NEON/kernels/NECumulativeDistributionKernel.h index 67b8c6052d..8239225259 100644 --- a/arm_compute/core/NEON/kernels/NECumulativeDistributionKernel.h +++ b/arm_compute/core/NEON/kernels/NECumulativeDistributionKernel.h @@ -64,7 +64,7 @@ public: void configure(const IImage *input, const IDistribution1D *distribution, IDistribution1D *cumulative_sum, ILut *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; bool is_parallelisable() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEDepthConcatenateKernel.h b/arm_compute/core/NEON/kernels/NEDepthConcatenateKernel.h index b22d37bfe6..369ec3de1a 100644 --- a/arm_compute/core/NEON/kernels/NEDepthConcatenateKernel.h +++ b/arm_compute/core/NEON/kernels/NEDepthConcatenateKernel.h @@ -62,7 +62,7 @@ public: void configure(const ITensor *input, unsigned int depth_offset, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEDepthConvertKernel.h b/arm_compute/core/NEON/kernels/NEDepthConvertKernel.h index ad8d152bbf..6e338e5d95 100644 --- a/arm_compute/core/NEON/kernels/NEDepthConvertKernel.h +++ b/arm_compute/core/NEON/kernels/NEDepthConvertKernel.h @@ -71,7 +71,7 @@ public: void configure(ITensor *input, ITensor *output, ConvertPolicy policy, uint32_t shift = 0); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: ITensor *_input; diff --git a/arm_compute/core/NEON/kernels/NEDequantizationLayerKernel.h b/arm_compute/core/NEON/kernels/NEDequantizationLayerKernel.h index 4b26fd54e0..095a833ab4 100644 --- a/arm_compute/core/NEON/kernels/NEDequantizationLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEDequantizationLayerKernel.h @@ -56,7 +56,7 @@ public: void configure(const ITensor *input, ITensor *output, const float *min, const float *max); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input; diff --git a/arm_compute/core/NEON/kernels/NEDerivativeKernel.h b/arm_compute/core/NEON/kernels/NEDerivativeKernel.h index abb8a894c0..5ffa4afdfa 100644 --- a/arm_compute/core/NEON/kernels/NEDerivativeKernel.h +++ b/arm_compute/core/NEON/kernels/NEDerivativeKernel.h @@ -58,7 +58,7 @@ public: void configure(const ITensor *input, ITensor *output_x, ITensor *output_y, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEDilateKernel.h b/arm_compute/core/NEON/kernels/NEDilateKernel.h index 05f148a1fd..156957ceea 100644 --- a/arm_compute/core/NEON/kernels/NEDilateKernel.h +++ b/arm_compute/core/NEON/kernels/NEDilateKernel.h @@ -42,7 +42,7 @@ public: */ void configure(const ITensor *input, ITensor *output, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; }; } diff --git a/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerBiasAccumulateKernel.h b/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerBiasAccumulateKernel.h index 87788ba389..b68641fdc1 100644 --- a/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerBiasAccumulateKernel.h +++ b/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerBiasAccumulateKernel.h @@ -59,7 +59,7 @@ public: void configure(ITensor *input, const ITensor *bias, ITensor *output = nullptr); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: using BiasAccumulateKernel = void(ITensor *input, const ITensor *bias, const Window window, ITensor *output); diff --git a/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerKernel.h b/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerKernel.h index 5672782cba..4de6c12218 100644 --- a/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerKernel.h @@ -64,7 +64,7 @@ public: void configure(const ITensor *input, const ITensor *weights, ITensor *output, const PadStrideInfo &conv_info); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEErodeKernel.h b/arm_compute/core/NEON/kernels/NEErodeKernel.h index 86dc217cc0..df0e253f4d 100644 --- a/arm_compute/core/NEON/kernels/NEErodeKernel.h +++ b/arm_compute/core/NEON/kernels/NEErodeKernel.h @@ -42,7 +42,7 @@ public: */ void configure(const ITensor *input, ITensor *output, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; }; } diff --git a/arm_compute/core/NEON/kernels/NEFastCornersKernel.h b/arm_compute/core/NEON/kernels/NEFastCornersKernel.h index b30ef49c44..1241426dc2 100644 --- a/arm_compute/core/NEON/kernels/NEFastCornersKernel.h +++ b/arm_compute/core/NEON/kernels/NEFastCornersKernel.h @@ -59,7 +59,7 @@ public: void configure(const IImage *input, IImage *output, uint8_t threshold, bool non_max_suppression, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEFillArrayKernel.h b/arm_compute/core/NEON/kernels/NEFillArrayKernel.h index 38f8a01288..4f1ac2bc78 100644 --- a/arm_compute/core/NEON/kernels/NEFillArrayKernel.h +++ b/arm_compute/core/NEON/kernels/NEFillArrayKernel.h @@ -61,7 +61,7 @@ public: void configure(const IImage *input, uint8_t threshold, IKeyPointArray *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; bool is_parallelisable() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEFillBorderKernel.h b/arm_compute/core/NEON/kernels/NEFillBorderKernel.h index 3ec66115e2..50cb417eb0 100644 --- a/arm_compute/core/NEON/kernels/NEFillBorderKernel.h +++ b/arm_compute/core/NEON/kernels/NEFillBorderKernel.h @@ -62,7 +62,7 @@ public: void configure(ITensor *tensor, BorderSize border_size, BorderMode border_mode, const PixelValue &constant_border_value = PixelValue()); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: template diff --git a/arm_compute/core/NEON/kernels/NEFillInnerBorderKernel.h b/arm_compute/core/NEON/kernels/NEFillInnerBorderKernel.h index 61e6e46463..6922c332cc 100644 --- a/arm_compute/core/NEON/kernels/NEFillInnerBorderKernel.h +++ b/arm_compute/core/NEON/kernels/NEFillInnerBorderKernel.h @@ -61,7 +61,7 @@ public: void configure(ITensor *input, BorderSize border_size, const PixelValue &constant_border_value = PixelValue()); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: template diff --git a/arm_compute/core/NEON/kernels/NEFloorKernel.h b/arm_compute/core/NEON/kernels/NEFloorKernel.h index 3b925b093b..76b02a56ef 100644 --- a/arm_compute/core/NEON/kernels/NEFloorKernel.h +++ b/arm_compute/core/NEON/kernels/NEFloorKernel.h @@ -41,7 +41,7 @@ public: */ void configure(const ITensor *input, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; }; } #endif /*__ARM_COMPUTE_NEFLOORKERNEL_H__ */ diff --git a/arm_compute/core/NEON/kernels/NEGEMMInterleave4x4Kernel.h b/arm_compute/core/NEON/kernels/NEGEMMInterleave4x4Kernel.h index 84b82d0ffc..74ef3045a4 100644 --- a/arm_compute/core/NEON/kernels/NEGEMMInterleave4x4Kernel.h +++ b/arm_compute/core/NEON/kernels/NEGEMMInterleave4x4Kernel.h @@ -62,7 +62,7 @@ public: void configure(const ITensor *input, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the transpose functions diff --git a/arm_compute/core/NEON/kernels/NEGEMMLowpMatrixMultiplyKernel.h b/arm_compute/core/NEON/kernels/NEGEMMLowpMatrixMultiplyKernel.h index ba4dcc3373..8822a97d4d 100644 --- a/arm_compute/core/NEON/kernels/NEGEMMLowpMatrixMultiplyKernel.h +++ b/arm_compute/core/NEON/kernels/NEGEMMLowpMatrixMultiplyKernel.h @@ -72,7 +72,7 @@ public: */ void configure(const ITensor *input0, const ITensor *input1, ITensor *output, int32_t a_offset, int32_t b_offset, int32_t output_offset, int32_t output_mult_int, int32_t shift); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input0; diff --git a/arm_compute/core/NEON/kernels/NEGEMMMatrixAccumulateBiasesKernel.h b/arm_compute/core/NEON/kernels/NEGEMMMatrixAccumulateBiasesKernel.h index 1eed4e7a84..202f96744b 100644 --- a/arm_compute/core/NEON/kernels/NEGEMMMatrixAccumulateBiasesKernel.h +++ b/arm_compute/core/NEON/kernels/NEGEMMMatrixAccumulateBiasesKernel.h @@ -53,7 +53,7 @@ public: void configure(ITensor *accum, const ITensor *biases); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: ITensor *_accum; diff --git a/arm_compute/core/NEON/kernels/NEGEMMMatrixAdditionKernel.h b/arm_compute/core/NEON/kernels/NEGEMMMatrixAdditionKernel.h index 5cdcc95ee9..79ccb913a4 100644 --- a/arm_compute/core/NEON/kernels/NEGEMMMatrixAdditionKernel.h +++ b/arm_compute/core/NEON/kernels/NEGEMMMatrixAdditionKernel.h @@ -62,7 +62,7 @@ public: void configure(const ITensor *input, ITensor *output, float beta); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the matrix addition functions diff --git a/arm_compute/core/NEON/kernels/NEGEMMMatrixMultiplyKernel.h b/arm_compute/core/NEON/kernels/NEGEMMMatrixMultiplyKernel.h index e82fc6f5d7..afa457d8ba 100644 --- a/arm_compute/core/NEON/kernels/NEGEMMMatrixMultiplyKernel.h +++ b/arm_compute/core/NEON/kernels/NEGEMMMatrixMultiplyKernel.h @@ -63,7 +63,7 @@ public: void configure(const ITensor *input0, const ITensor *input1, ITensor *output, float alpha); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input0; diff --git a/arm_compute/core/NEON/kernels/NEGEMMTranspose1xWKernel.h b/arm_compute/core/NEON/kernels/NEGEMMTranspose1xWKernel.h index 22c07e5c9a..58140bcd1d 100644 --- a/arm_compute/core/NEON/kernels/NEGEMMTranspose1xWKernel.h +++ b/arm_compute/core/NEON/kernels/NEGEMMTranspose1xWKernel.h @@ -76,7 +76,7 @@ public: void configure(const ITensor *input, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; }; } #endif /*__ARM_COMPUTE_NEGEMMTRANSPOSE1xWKERNEL_H__ */ diff --git a/arm_compute/core/NEON/kernels/NEGaussian3x3Kernel.h b/arm_compute/core/NEON/kernels/NEGaussian3x3Kernel.h index 763fab88f6..8ed3183176 100644 --- a/arm_compute/core/NEON/kernels/NEGaussian3x3Kernel.h +++ b/arm_compute/core/NEON/kernels/NEGaussian3x3Kernel.h @@ -43,7 +43,7 @@ public: void configure(const ITensor *input, ITensor *output, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; }; } diff --git a/arm_compute/core/NEON/kernels/NEGaussian5x5Kernel.h b/arm_compute/core/NEON/kernels/NEGaussian5x5Kernel.h index 86b28907da..094e6d1885 100644 --- a/arm_compute/core/NEON/kernels/NEGaussian5x5Kernel.h +++ b/arm_compute/core/NEON/kernels/NEGaussian5x5Kernel.h @@ -46,7 +46,7 @@ public: void configure(const ITensor *input, ITensor *output, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: @@ -66,7 +66,7 @@ public: void configure(const ITensor *input, ITensor *output, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; }; } diff --git a/arm_compute/core/NEON/kernels/NEGaussianPyramidKernel.h b/arm_compute/core/NEON/kernels/NEGaussianPyramidKernel.h index 40a6aa7375..ce03aa289a 100644 --- a/arm_compute/core/NEON/kernels/NEGaussianPyramidKernel.h +++ b/arm_compute/core/NEON/kernels/NEGaussianPyramidKernel.h @@ -56,7 +56,7 @@ public: void configure(const ITensor *input, ITensor *output, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: @@ -90,7 +90,7 @@ public: void configure(const ITensor *input, ITensor *output, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEHOGDescriptorKernel.h b/arm_compute/core/NEON/kernels/NEHOGDescriptorKernel.h index dd85778b8a..844bc33df1 100644 --- a/arm_compute/core/NEON/kernels/NEHOGDescriptorKernel.h +++ b/arm_compute/core/NEON/kernels/NEHOGDescriptorKernel.h @@ -59,7 +59,7 @@ public: void configure(const ITensor *input_magnitude, const ITensor *input_phase, ITensor *output, const HOGInfo *hog_info); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the specialised block normalization functions @@ -113,7 +113,7 @@ public: void configure(const ITensor *input, ITensor *output, const HOGInfo *hog_info); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the specialised block normalization functions diff --git a/arm_compute/core/NEON/kernels/NEHOGDetectorKernel.h b/arm_compute/core/NEON/kernels/NEHOGDetectorKernel.h index b6b9d3458a..6495ee74ac 100644 --- a/arm_compute/core/NEON/kernels/NEHOGDetectorKernel.h +++ b/arm_compute/core/NEON/kernels/NEHOGDetectorKernel.h @@ -63,7 +63,7 @@ public: void configure(const ITensor *input, const IHOG *hog, IDetectionWindowArray *detection_windows, const Size2D &detection_window_stride, float threshold = 0.0f, uint16_t idx_class = 0); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input; diff --git a/arm_compute/core/NEON/kernels/NEHarrisCornersKernel.h b/arm_compute/core/NEON/kernels/NEHarrisCornersKernel.h index 88d70657f6..4a468c220c 100644 --- a/arm_compute/core/NEON/kernels/NEHarrisCornersKernel.h +++ b/arm_compute/core/NEON/kernels/NEHarrisCornersKernel.h @@ -89,7 +89,7 @@ public: // Inherited methods overridden: void configure(const IImage *input1, const IImage *input2, IImage *output, float norm_factor, float strength_thresh, float sensitivity, bool border_undefined) override; BorderSize border_size() const override; - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the specialised harris score functions */ @@ -110,7 +110,7 @@ public: // Inherited methods overridden: void configure(const IImage *input1, const IImage *input2, IImage *output, float norm_factor, float strength_thresh, float sensitivity, bool border_undefined) override; BorderSize border_size() const override; - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: using HarrisScoreFunction = void(const void *__restrict input1_ptr, const void *__restrict input2_ptr, void *__restrict output_ptr, int32_t input_stride, diff --git a/arm_compute/core/NEON/kernels/NEHistogramKernel.h b/arm_compute/core/NEON/kernels/NEHistogramKernel.h index 2c0f34b5a7..75d00e9d31 100644 --- a/arm_compute/core/NEON/kernels/NEHistogramKernel.h +++ b/arm_compute/core/NEON/kernels/NEHistogramKernel.h @@ -77,7 +77,7 @@ public: void configure(const IImage *input, IDistribution1D *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Function to merge multiple partial histograms. @@ -95,15 +95,17 @@ private: void merge_min(uint8_t *global_min, const uint8_t &local_min); /** Function to perform histogram on the given window * - * @param[in] win Region on which to execute the kernel + * @param[in] win Region on which to execute the kernel + * @param[in] info Info about the executing thread */ - void histogram_U8(Window win); + void histogram_U8(Window win, const ThreadInfo &info); /** Function to perform histogram on the given window where histogram is * of fixed size 256 without ranges and offsets. * - * @param[in] win Region on which to execute the kernel + * @param[in] win Region on which to execute the kernel + * @param[in] info Info about the executing thread */ - void histogram_fixed_U8(Window win); + void histogram_fixed_U8(Window win, const ThreadInfo &info); /** Pre-calculate the pixel windowing for every possible pixel * * Calculate (V - offset) * numBins / range where V is every possible pixel value. @@ -115,7 +117,7 @@ private: * * @param[in] window Region on which to execute the kernel. */ - using HistogramFunctionPtr = void (NEHistogramKernel::*)(Window window); + using HistogramFunctionPtr = void (NEHistogramKernel::*)(Window window, const ThreadInfo &info); HistogramFunctionPtr _func; ///< Histogram function to use for the particular image types passed to configure() const IImage *_input; diff --git a/arm_compute/core/NEON/kernels/NEIm2ColKernel.h b/arm_compute/core/NEON/kernels/NEIm2ColKernel.h index 87d7cc0a8b..8ef27ea52d 100644 --- a/arm_compute/core/NEON/kernels/NEIm2ColKernel.h +++ b/arm_compute/core/NEON/kernels/NEIm2ColKernel.h @@ -82,7 +82,7 @@ public: void configure(const ITensor *input, ITensor *output, const Size2D &kernel_dims, const PadStrideInfo &conv_info, bool has_bias); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Template function to run the im2col optimised for the fully connected layer case diff --git a/arm_compute/core/NEON/kernels/NEIntegralImageKernel.h b/arm_compute/core/NEON/kernels/NEIntegralImageKernel.h index 13647889ab..b3493f41d7 100644 --- a/arm_compute/core/NEON/kernels/NEIntegralImageKernel.h +++ b/arm_compute/core/NEON/kernels/NEIntegralImageKernel.h @@ -42,7 +42,7 @@ public: void configure(const ITensor *input, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; bool is_parallelisable() const override; }; diff --git a/arm_compute/core/NEON/kernels/NEL2NormalizeKernel.h b/arm_compute/core/NEON/kernels/NEL2NormalizeKernel.h index 545aeaa1d3..fa1795510e 100644 --- a/arm_compute/core/NEON/kernels/NEL2NormalizeKernel.h +++ b/arm_compute/core/NEON/kernels/NEL2NormalizeKernel.h @@ -57,7 +57,7 @@ public: void configure(const ITensor *input, const ITensor *sum, ITensor *output, unsigned int axis, float epsilon); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input; diff --git a/arm_compute/core/NEON/kernels/NELKTrackerKernel.h b/arm_compute/core/NEON/kernels/NELKTrackerKernel.h index 9ab7f91092..d4e1cbafb7 100644 --- a/arm_compute/core/NEON/kernels/NELKTrackerKernel.h +++ b/arm_compute/core/NEON/kernels/NELKTrackerKernel.h @@ -91,7 +91,7 @@ public: size_t level, size_t num_levels, float pyramid_scale); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NELocallyConnectedMatrixMultiplyKernel.h b/arm_compute/core/NEON/kernels/NELocallyConnectedMatrixMultiplyKernel.h index a2c6b51101..7044b2e4aa 100644 --- a/arm_compute/core/NEON/kernels/NELocallyConnectedMatrixMultiplyKernel.h +++ b/arm_compute/core/NEON/kernels/NELocallyConnectedMatrixMultiplyKernel.h @@ -53,7 +53,7 @@ public: void configure(const ITensor *input0, const ITensor *input1, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input0; diff --git a/arm_compute/core/NEON/kernels/NEMagnitudePhaseKernel.h b/arm_compute/core/NEON/kernels/NEMagnitudePhaseKernel.h index 8285e5ed39..94ad0aa27c 100644 --- a/arm_compute/core/NEON/kernels/NEMagnitudePhaseKernel.h +++ b/arm_compute/core/NEON/kernels/NEMagnitudePhaseKernel.h @@ -61,7 +61,7 @@ public: void configure(const ITensor *gx, const ITensor *gy, ITensor *magnitude, ITensor *phase); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Function to perform magnitude on the given window @@ -125,7 +125,7 @@ public: void configure(const ITensor *gx, const ITensor *gy, ITensor *magnitude, ITensor *phase); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Function to perform magnitude on the given window diff --git a/arm_compute/core/NEON/kernels/NEMeanStdDevKernel.h b/arm_compute/core/NEON/kernels/NEMeanStdDevKernel.h index ce2c5eb4fa..0106d813f7 100644 --- a/arm_compute/core/NEON/kernels/NEMeanStdDevKernel.h +++ b/arm_compute/core/NEON/kernels/NEMeanStdDevKernel.h @@ -62,7 +62,7 @@ public: void configure(const IImage *input, float *mean, uint64_t *global_sum, float *stddev = nullptr, uint64_t *global_sum_squared = nullptr); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; diff --git a/arm_compute/core/NEON/kernels/NEMedian3x3Kernel.h b/arm_compute/core/NEON/kernels/NEMedian3x3Kernel.h index dee1aadfb9..66bfc5dcdd 100644 --- a/arm_compute/core/NEON/kernels/NEMedian3x3Kernel.h +++ b/arm_compute/core/NEON/kernels/NEMedian3x3Kernel.h @@ -43,7 +43,7 @@ public: void configure(const ITensor *input, ITensor *output, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; }; } diff --git a/arm_compute/core/NEON/kernels/NEMinMaxLocationKernel.h b/arm_compute/core/NEON/kernels/NEMinMaxLocationKernel.h index ddaa01773b..1d9aaf5df7 100644 --- a/arm_compute/core/NEON/kernels/NEMinMaxLocationKernel.h +++ b/arm_compute/core/NEON/kernels/NEMinMaxLocationKernel.h @@ -63,7 +63,7 @@ public: void reset(); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Performs the min/max algorithm on U8 images on a given window. @@ -130,7 +130,7 @@ public: uint32_t *min_count = nullptr, uint32_t *max_count = nullptr); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; bool is_parallelisable() const override; private: diff --git a/arm_compute/core/NEON/kernels/NENonLinearFilterKernel.h b/arm_compute/core/NEON/kernels/NENonLinearFilterKernel.h index ede0294a73..a9f659c9b8 100644 --- a/arm_compute/core/NEON/kernels/NENonLinearFilterKernel.h +++ b/arm_compute/core/NEON/kernels/NENonLinearFilterKernel.h @@ -60,7 +60,7 @@ public: void configure(const ITensor *input, ITensor *output, NonLinearFilterFunction function, unsigned int mask_size, MatrixPattern pattern, const uint8_t *mask, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NENonMaximaSuppression3x3Kernel.h b/arm_compute/core/NEON/kernels/NENonMaximaSuppression3x3Kernel.h index 68f11d8ffb..e2b691425e 100644 --- a/arm_compute/core/NEON/kernels/NENonMaximaSuppression3x3Kernel.h +++ b/arm_compute/core/NEON/kernels/NENonMaximaSuppression3x3Kernel.h @@ -61,7 +61,7 @@ public: void configure(const ITensor *input, ITensor *output, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; protected: diff --git a/arm_compute/core/NEON/kernels/NENormalizationLayerKernel.h b/arm_compute/core/NEON/kernels/NENormalizationLayerKernel.h index e24e481f46..00750ebe97 100644 --- a/arm_compute/core/NEON/kernels/NENormalizationLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NENormalizationLayerKernel.h @@ -59,7 +59,7 @@ public: void configure(const ITensor *input, const ITensor *input_squared, ITensor *output, NormalizationLayerInfo norm_info); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h b/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h index bf96c9026c..35dda29c67 100644 --- a/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h +++ b/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h @@ -64,7 +64,7 @@ public: void configure(const ITensor *input1, const ITensor *input2, ITensor *output, float scale, ConvertPolicy overflow_policy, RoundingPolicy rounding_policy); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the specialised multiplication functions with integer scaling factor diff --git a/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h b/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h index 8a938a7f34..956db6a67c 100644 --- a/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h @@ -55,7 +55,7 @@ public: void configure(const ITensor *input, ITensor *output, const PoolingLayerInfo &pool_info); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h b/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h index 9867e1db03..92cd142653 100644 --- a/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h @@ -56,7 +56,7 @@ public: void configure(const ITensor *input, ITensor *output, const float *min, const float *max); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input; diff --git a/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h b/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h index 40f79acc79..5610420491 100644 --- a/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h @@ -64,7 +64,7 @@ public: void configure(const ITensor *input, const IROIArray *rois, ITensor *output, const ROIPoolingLayerInfo &pool_info); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: const ITensor *_input; diff --git a/arm_compute/core/NEON/kernels/NEReductionOperationKernel.h b/arm_compute/core/NEON/kernels/NEReductionOperationKernel.h index 147e8351d6..e41f415ead 100644 --- a/arm_compute/core/NEON/kernels/NEReductionOperationKernel.h +++ b/arm_compute/core/NEON/kernels/NEReductionOperationKernel.h @@ -55,7 +55,7 @@ public: */ void configure(const ITensor *input, ITensor *output, unsigned int axis, ReductionOperation op); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NERemapKernel.h b/arm_compute/core/NEON/kernels/NERemapKernel.h index f9eae68ee8..eeeef36b6e 100644 --- a/arm_compute/core/NEON/kernels/NERemapKernel.h +++ b/arm_compute/core/NEON/kernels/NERemapKernel.h @@ -59,7 +59,7 @@ public: void configure(const ITensor *input, const ITensor *map_x, const ITensor *map_y, ITensor *output, InterpolationPolicy policy); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** function to perform nearest interpolation on the given window */ diff --git a/arm_compute/core/NEON/kernels/NEScaleKernel.h b/arm_compute/core/NEON/kernels/NEScaleKernel.h index 03e26520b5..3cac023d8a 100644 --- a/arm_compute/core/NEON/kernels/NEScaleKernel.h +++ b/arm_compute/core/NEON/kernels/NEScaleKernel.h @@ -63,7 +63,7 @@ public: void configure(const ITensor *input, const ITensor *dx, const ITensor *dy, const ITensor *offsets, ITensor *output, InterpolationPolicy policy, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NEScharr3x3Kernel.h b/arm_compute/core/NEON/kernels/NEScharr3x3Kernel.h index c618456d49..78f0682b7a 100644 --- a/arm_compute/core/NEON/kernels/NEScharr3x3Kernel.h +++ b/arm_compute/core/NEON/kernels/NEScharr3x3Kernel.h @@ -68,7 +68,7 @@ public: void configure(const ITensor *input, ITensor *output_x, ITensor *output_y, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NESobel3x3Kernel.h b/arm_compute/core/NEON/kernels/NESobel3x3Kernel.h index 246dd83573..8e5ba86b80 100644 --- a/arm_compute/core/NEON/kernels/NESobel3x3Kernel.h +++ b/arm_compute/core/NEON/kernels/NESobel3x3Kernel.h @@ -68,7 +68,7 @@ public: void configure(const ITensor *input, ITensor *output_x, ITensor *output_y, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NESobel5x5Kernel.h b/arm_compute/core/NEON/kernels/NESobel5x5Kernel.h index 49c1c41e6d..5dfce8d798 100644 --- a/arm_compute/core/NEON/kernels/NESobel5x5Kernel.h +++ b/arm_compute/core/NEON/kernels/NESobel5x5Kernel.h @@ -61,7 +61,7 @@ public: void configure(const ITensor *input, ITensor *output_x, ITensor *output_y, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: @@ -103,7 +103,7 @@ public: void configure(ITensor *input_x, ITensor *input_y, ITensor *output_x, ITensor *output_y, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NESobel7x7Kernel.h b/arm_compute/core/NEON/kernels/NESobel7x7Kernel.h index 4bff8596b8..b04aaaeed0 100644 --- a/arm_compute/core/NEON/kernels/NESobel7x7Kernel.h +++ b/arm_compute/core/NEON/kernels/NESobel7x7Kernel.h @@ -61,7 +61,7 @@ public: void configure(const ITensor *input, ITensor *output_x, ITensor *output_y, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: @@ -107,7 +107,7 @@ public: void configure(const ITensor *input_x, const ITensor *input_y, ITensor *output_x, ITensor *output_y, bool border_undefined); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/NEON/kernels/NESoftmaxLayerKernel.h b/arm_compute/core/NEON/kernels/NESoftmaxLayerKernel.h index 2caef55498..4897a39421 100644 --- a/arm_compute/core/NEON/kernels/NESoftmaxLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NESoftmaxLayerKernel.h @@ -45,7 +45,7 @@ public: void configure(const ITensor *input, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; BorderSize border_size() const override; private: @@ -82,7 +82,7 @@ public: void configure(const ITensor *input, const ITensor *max, ITensor *output, ITensor *sum); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: using Logits1DShiftExpSumFunction = void(const ITensor *in, const ITensor *max, ITensor *out, ITensor *sum, const Window &window); @@ -120,7 +120,7 @@ public: void configure(const ITensor *input, const ITensor *sum, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: using Logits1DNormFunction = void(const ITensor *in, const ITensor *sum, ITensor *out, const Window &window); diff --git a/arm_compute/core/NEON/kernels/NETableLookupKernel.h b/arm_compute/core/NEON/kernels/NETableLookupKernel.h index b3963e5a75..2cac5c4957 100644 --- a/arm_compute/core/NEON/kernels/NETableLookupKernel.h +++ b/arm_compute/core/NEON/kernels/NETableLookupKernel.h @@ -54,7 +54,7 @@ public: void configure(const ITensor *input, const ILut *lut, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Perform table lookup on a given window. diff --git a/arm_compute/core/NEON/kernels/NEThresholdKernel.h b/arm_compute/core/NEON/kernels/NEThresholdKernel.h index 778176293f..ab6f6f75d2 100644 --- a/arm_compute/core/NEON/kernels/NEThresholdKernel.h +++ b/arm_compute/core/NEON/kernels/NEThresholdKernel.h @@ -60,7 +60,7 @@ public: void configure(const ITensor *input, ITensor *output, uint8_t threshold, uint8_t false_value, uint8_t true_value, ThresholdType type, uint8_t upper); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** run binary thresholding on the given window */ diff --git a/arm_compute/core/NEON/kernels/NETransposeKernel.h b/arm_compute/core/NEON/kernels/NETransposeKernel.h index 2f757f18eb..6399149a9c 100644 --- a/arm_compute/core/NEON/kernels/NETransposeKernel.h +++ b/arm_compute/core/NEON/kernels/NETransposeKernel.h @@ -59,7 +59,7 @@ public: void configure(const ITensor *input, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the transpose functions diff --git a/arm_compute/core/NEON/kernels/NEWarpKernel.h b/arm_compute/core/NEON/kernels/NEWarpKernel.h index 39f6496edb..c24adb80ab 100644 --- a/arm_compute/core/NEON/kernels/NEWarpKernel.h +++ b/arm_compute/core/NEON/kernels/NEWarpKernel.h @@ -58,7 +58,7 @@ public: virtual void configure(const ITensor *input, ITensor *output, const float *matrix, BorderMode border_mode, uint8_t constant_border_value); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; // Inherited methods overridden: BorderSize border_size() const override; diff --git a/arm_compute/core/NEON/kernels/NEWeightsReshapeKernel.h b/arm_compute/core/NEON/kernels/NEWeightsReshapeKernel.h index 6b76d19314..7c4b1fa174 100644 --- a/arm_compute/core/NEON/kernels/NEWeightsReshapeKernel.h +++ b/arm_compute/core/NEON/kernels/NEWeightsReshapeKernel.h @@ -79,7 +79,7 @@ public: void configure(const ITensor *input, const ITensor *bias, ITensor *output); // Inherited methods overridden: - void run(const Window &window) override; + void run(const Window &window, const ThreadInfo &info) override; private: using WeightsReshapeKernel = void(const ITensor *input, const ITensor *bias, ITensor *output, const Window &window); diff --git a/arm_compute/core/Window.h b/arm_compute/core/Window.h index a2fbc8f06f..baf767e7d5 100644 --- a/arm_compute/core/Window.h +++ b/arm_compute/core/Window.h @@ -48,7 +48,7 @@ public: /** Default constructor: create a window containing a single element. */ constexpr Window() - : _dims(), _thread_id(0), _num_threads(1) + : _dims() { } /** Copy constructor @@ -293,38 +293,6 @@ public: { return slide_window_slice<4>(slice); } - /** Sets the ID of the thread that the window is associated with. - * - * @param id ID of the thread that the window is associated with. - */ - void set_thread_id(unsigned int id) - { - _thread_id = id; - } - /** Sets the number of threads dispatched that the window is associated with. - * - * @param num_threads The number of threads dispatched that the window is associated with. - */ - void set_num_threads(unsigned int num_threads) - { - _num_threads = num_threads; - } - /** Get the ID of the thread that the window is associated with. - * - * @return ID of the thread that the window is associated with. - */ - constexpr unsigned int thread_id() const - { - return _thread_id; - } - /** Get the number of threads dispatched that the window is associated with. - * - * @return The number of threads dispatched that the window is associated with. - */ - constexpr unsigned int num_threads() const - { - return _num_threads; - } /* Collapse the dimensions higher than @p first if possible. * @@ -358,8 +326,6 @@ private: private: std::array _dims; - unsigned int _thread_id; - unsigned int _num_threads; }; } #include "Window.inl" diff --git a/arm_compute/core/Window.inl b/arm_compute/core/Window.inl index c33613fcea..01cd988ea0 100644 --- a/arm_compute/core/Window.inl +++ b/arm_compute/core/Window.inl @@ -24,7 +24,7 @@ namespace arm_compute { inline Window::Window(const Window &src) - : _dims(), _thread_id(src._thread_id), _num_threads(src._num_threads) + : _dims() { for(size_t i = 0; i < Coordinates::num_max_dimensions; ++i) { @@ -32,12 +32,12 @@ inline Window::Window(const Window &src) } } -inline constexpr const Window::Dimension &Window::operator[](const size_t dimension) const +inline constexpr const Window::Dimension &Window::operator[](size_t dimension) const { // Precondition: dimension < Coordinates::num_max_dimensions return _dims.at(dimension); } -inline void Window::set(const size_t dimension, const Window::Dimension &dim) +inline void Window::set(size_t dimension, const Window::Dimension &dim) { ARM_COMPUTE_ERROR_ON(dimension >= Coordinates::num_max_dimensions); _dims[dimension] = dim; @@ -72,7 +72,7 @@ inline Window Window::collapse_if_possible(const Window &full_window, size_t fir return collapsed; } -inline void Window::shift(const size_t dimension, const int shift_value) +inline void Window::shift(size_t dimension, int shift_value) { ARM_COMPUTE_ERROR_ON(dimension >= Coordinates::num_max_dimensions); Window::Dimension &d = _dims[dimension]; @@ -94,7 +94,7 @@ inline void Window::adjust(size_t dimension, int adjust_value, bool is_at_start) } } -inline void Window::scale(const size_t dimension, float scale_value) +inline void Window::scale(size_t dimension, float scale_value) { ARM_COMPUTE_ERROR_ON(dimension >= Coordinates::num_max_dimensions); Window::Dimension &d = _dims[dimension]; @@ -103,7 +103,7 @@ inline void Window::scale(const size_t dimension, float scale_value) d = Window::Dimension(d.start() * scale_value, scaled_end, scaled_step); } -inline void Window::set_dimension_step(const size_t dimension, const int step) +inline void Window::set_dimension_step(size_t dimension, int step) { ARM_COMPUTE_ERROR_ON(dimension >= Coordinates::num_max_dimensions); _dims[dimension].set_step(step); @@ -126,7 +126,7 @@ inline constexpr size_t Window::num_iterations(size_t dimension) const return (_dims.at(dimension).end() - _dims.at(dimension).start()) / _dims.at(dimension).step(); } -inline Window Window::split_window(const size_t dimension, const size_t id, const size_t total) const +inline Window Window::split_window(size_t dimension, size_t id, size_t total) const { ARM_COMPUTE_ERROR_ON(id >= total); ARM_COMPUTE_ERROR_ON(dimension >= Coordinates::num_max_dimensions); @@ -201,7 +201,7 @@ inline Window Window::first_slice_window() const return slice; } -inline void Window::use_tensor_dimensions(const ITensorInfo *info, const size_t first_dimension) +inline void Window::use_tensor_dimensions(const ITensorInfo *info, size_t first_dimension) { for(unsigned int n = first_dimension; n < info->num_dimensions(); ++n) { -- cgit v1.2.1