diff options
Diffstat (limited to 'arm_compute/runtime/IScheduler.h')
-rw-r--r-- | arm_compute/runtime/IScheduler.h | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/arm_compute/runtime/IScheduler.h b/arm_compute/runtime/IScheduler.h index 417c62cc9c..ae204c8560 100644 --- a/arm_compute/runtime/IScheduler.h +++ b/arm_compute/runtime/IScheduler.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2023 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -25,8 +25,8 @@ #define ARM_COMPUTE_ISCHEDULER_H #include "arm_compute/core/CPP/CPPTypes.h" -#include "arm_compute/core/Types.h" #include "arm_compute/core/experimental/Types.h" +#include "arm_compute/core/Types.h" #include <functional> #include <limits> @@ -152,7 +152,7 @@ public: */ virtual void set_num_threads_with_affinity(unsigned int num_threads, BindFunc func); - /** Returns the number of threads that the SingleThreadScheduler has in his pool. + /** Returns the number of threads that the SingleThreadScheduler has in its pool. * * @return Number of threads available in SingleThreadScheduler. */ @@ -176,9 +176,9 @@ public: /** Execute all the passed workloads * - * @note there is no guarantee regarding the order in which the workloads will be executed or whether or not they will be executed in parallel. + * @note There is no guarantee regarding the order in which the workloads will be executed or whether or not they will be executed in parallel. * - * @param[in] workloads Array of workloads to run + * @param[in] workloads List of workloads to run * @param[in] tag String that can be used by profiling tools to identify the workloads run by the scheduler (Can be null). */ virtual void run_tagged_workloads(std::vector<Workload> &workloads, const char *tag); @@ -215,7 +215,22 @@ protected: */ void schedule_common(ICPPKernel *kernel, const Hints &hints, const Window &window, ITensorPack &tensors); - CPUInfo _cpu_info{}; + /** Adjust the number of windows to the optimize performance + * (used for small workloads where smaller number of threads might improve the performance) + * + * @param[in] window Window to use for kernel execution + * @param[in] split_dimension Axis of dimension to split + * @param[in] init_num_windows Initial number of sub-windows to split + * @param[in] kernel Kernel to execute + * @param[in] cpu_info The CPU platform used to create the context. + * + * @return Adjusted number of windows + */ + std::size_t adjust_num_of_windows(const Window &window, + std::size_t split_dimension, + std::size_t init_num_windows, + const ICPPKernel &kernel, + const CPUInfo &cpu_info); private: unsigned int _num_threads_hint = {}; |