aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/OMP/OMPScheduler.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/runtime/OMP/OMPScheduler.cpp b/src/runtime/OMP/OMPScheduler.cpp
index 2a5abb5f7a..baffa8cbb2 100644
--- a/src/runtime/OMP/OMPScheduler.cpp
+++ b/src/runtime/OMP/OMPScheduler.cpp
@@ -36,16 +36,13 @@ namespace arm_compute
(defined(__arm__) || defined(__aarch64__)) && defined(__ANDROID__)
OMPScheduler::OMPScheduler() // NOLINT
: _num_threads(cpu_info().get_cpu_num_excluding_little()),
- _has_lmb(cpu_info().cpu_has_little_mid_big()),
_nonlittle_num_cpus(cpu_info().get_cpu_num_excluding_little())
{
}
#else /* !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && \
(defined(__arm__) || defined(__aarch64__)) && defined(__ANDROID__)*/
OMPScheduler::OMPScheduler() // NOLINT
- : _num_threads(omp_get_max_threads()),
- _has_lmb(cpu_info().cpu_has_little_mid_big()),
- _nonlittle_num_cpus(cpu_info().get_cpu_num_excluding_little())
+ : _num_threads(omp_get_max_threads()), _nonlittle_num_cpus(cpu_info().get_cpu_num_excluding_little())
{
}
#endif /* !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && \
@@ -61,7 +58,7 @@ void OMPScheduler::set_num_threads(unsigned int num_threads)
const unsigned int num_cores = omp_get_max_threads();
#if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && \
(defined(__arm__) || defined(__aarch64__)) && defined(__ANDROID__)
- const unsigned int adjusted_num_threads = (_has_lmb) ? _nonlittle_num_cpus : num_threads;
+ const unsigned int adjusted_num_threads = std::min(_nonlittle_num_cpus, num_threads);
_num_threads = (num_threads == 0) ? num_cores : adjusted_num_threads;
#else /* !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && \
(defined(__arm__) || defined(__aarch64__)) && defined(__ANDROID__)*/
@@ -121,9 +118,15 @@ void OMPScheduler::run_workloads(std::vector<arm_compute::IScheduler::Workload>
}
ThreadInfo info;
- info.cpu_info = &cpu_info();
+ info.cpu_info = &cpu_info();
+
+#if !defined(__ANDROID__)
+ info.num_threads = _num_threads;
+#else /* !__ANDROID__ */
info.num_threads = num_threads_to_use;
-#pragma omp parallel for firstprivate(info) num_threads(num_threads_to_use) default(shared) proc_bind(close) \
+#endif /* __ANDROID__ */
+
+#pragma omp parallel for firstprivate(info) num_threads(info.num_threads) default(shared) proc_bind(close) \
schedule(static, 1)
for (unsigned int wid = 0; wid < amount_of_work; ++wid)
{