aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/OMP/OMPScheduler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/OMP/OMPScheduler.cpp')
-rw-r--r--src/runtime/OMP/OMPScheduler.cpp33
1 files changed, 2 insertions, 31 deletions
diff --git a/src/runtime/OMP/OMPScheduler.cpp b/src/runtime/OMP/OMPScheduler.cpp
index 11448e595c..4c2f03a53a 100644
--- a/src/runtime/OMP/OMPScheduler.cpp
+++ b/src/runtime/OMP/OMPScheduler.cpp
@@ -28,7 +28,6 @@
#include "arm_compute/core/Helpers.h"
#include "arm_compute/core/Utils.h"
#include "arm_compute/runtime/CPUUtils.h"
-
#include <omp.h>
namespace arm_compute
@@ -51,36 +50,8 @@ void OMPScheduler::set_num_threads(unsigned int num_threads)
void OMPScheduler::schedule(ICPPKernel *kernel, const Hints &hints)
{
- ARM_COMPUTE_ERROR_ON_MSG(!kernel, "The child class didn't set the kernel");
- ARM_COMPUTE_ERROR_ON_MSG(hints.strategy() == StrategyHint::DYNAMIC,
- "Dynamic scheduling is not supported in OMPScheduler");
-
- const Window &max_window = kernel->window();
- const unsigned int num_iterations = max_window.num_iterations(hints.split_dimension());
- const unsigned int num_threads = std::min(num_iterations, _num_threads);
-
- if(!kernel->is_parallelisable() || num_threads == 1)
- {
- ThreadInfo info;
- info.cpu_info = &_cpu_info;
- kernel->run(max_window, info);
- }
- else
- {
- const unsigned int num_windows = num_threads;
- std::vector<IScheduler::Workload> workloads(num_windows);
- for(unsigned int t = 0; t < num_windows; t++)
- {
- //Capture 't' by copy, all the other variables by reference:
- workloads[t] = [t, &hints, &max_window, &num_windows, &kernel](const ThreadInfo & info)
- {
- Window win = max_window.split_window(hints.split_dimension(), t, num_windows);
- win.validate();
- kernel->run(win, info);
- };
- }
- run_workloads(workloads);
- }
+ ITensorPack tensors;
+ schedule_common(kernel, hints, tensors);
}
void OMPScheduler::schedule_op(ICPPKernel *kernel, const Hints &hints, ITensorPack &tensors)