diff options
author | Omar Al Khatib <omar.alkhatib@arm.com> | 2024-05-09 16:06:23 +0100 |
---|---|---|
committer | Omar Al Khatib <omar.alkhatib@arm.com> | 2024-05-17 14:20:06 +0000 |
commit | f5053f782daa942126bd61ac1bcfc0af627b7b31 (patch) | |
tree | eb96c568d3c95021860e06f06271345f68969260 /arm_compute | |
parent | 8710385a9feb050f1b5a422ed57df691e8ba078f (diff) | |
download | ComputeLibrary-f5053f782daa942126bd61ac1bcfc0af627b7b31.tar.gz |
Update logic in the OpenMP scheduler to exclude LITTLE cores
On systems with BIG/MID/LITTLE cores, we need to exclude the LITTLE cores.
This is make changes to CPUInfo to detect number of LITTLE cores and set the num_threads to TOTAL_CORES-NUM_LITTLE cores
Resolves [COMPMID-7014]
Signed-off-by: Omar Al Khatib <omar.alkhatib@arm.com>
Change-Id: I3e1772e5b64d1c45304860be43233b7e5dd8dba1
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/11565
Reviewed-by: Pablo Marquez Tello <pablo.tello@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'arm_compute')
-rw-r--r-- | arm_compute/core/CPP/CPPTypes.h | 12 | ||||
-rw-r--r-- | arm_compute/runtime/OMP/OMPScheduler.h | 10 |
2 files changed, 18 insertions, 4 deletions
diff --git a/arm_compute/core/CPP/CPPTypes.h b/arm_compute/core/CPP/CPPTypes.h index 139d630fd7..e5322bdcb1 100644 --- a/arm_compute/core/CPP/CPPTypes.h +++ b/arm_compute/core/CPP/CPPTypes.h @@ -170,6 +170,18 @@ public: * @return Number of CPUs */ unsigned int get_cpu_num() const; + /** Return the maximum number of CPUs present excluding the little cores + * in case of an Android device + * + * @return Number of CPUs excluding little + */ + unsigned int get_cpu_num_excluding_little() const; + /** Return whether the device has little, medium and big CPUs in case + * of an Android device, returns false otherwise + * + * @return Whether the device has little, medium and big CPUs + */ + bool cpu_has_little_mid_big() const; /** Return the vector length in bytes for sme2 * diff --git a/arm_compute/runtime/OMP/OMPScheduler.h b/arm_compute/runtime/OMP/OMPScheduler.h index b522b403a9..c718e74359 100644 --- a/arm_compute/runtime/OMP/OMPScheduler.h +++ b/arm_compute/runtime/OMP/OMPScheduler.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2021 Arm Limited. + * Copyright (c) 2017-2021, 2024 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef ARM_COMPUTE_OMPSCHEDULER_H -#define ARM_COMPUTE_OMPSCHEDULER_H +#ifndef ACL_ARM_COMPUTE_RUNTIME_OMP_OMPSCHEDULER_H +#define ACL_ARM_COMPUTE_RUNTIME_OMP_OMPSCHEDULER_H #include "arm_compute/runtime/IScheduler.h" @@ -79,6 +79,8 @@ protected: private: unsigned int _num_threads; + bool _has_lmb; + unsigned int _nonlittle_num_cpus; }; } // namespace arm_compute -#endif /* ARM_COMPUTE_OMPSCHEDULER_H */ +#endif // ACL_ARM_COMPUTE_RUNTIME_OMP_OMPSCHEDULER_H |