aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/Scheduler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/Scheduler.cpp')
-rw-r--r--src/runtime/Scheduler.cpp27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/runtime/Scheduler.cpp b/src/runtime/Scheduler.cpp
index 380ad90a27..3f1e96968a 100644
--- a/src/runtime/Scheduler.cpp
+++ b/src/runtime/Scheduler.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2020 ARM Limited.
+ * Copyright (c) 2017-2020, 2023 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -24,7 +24,6 @@
#include "arm_compute/runtime/Scheduler.h"
#include "arm_compute/core/Error.h"
-#include "support/MemorySupport.h"
#if ARM_COMPUTE_CPP_SCHEDULER
#include "arm_compute/runtime/CPP/CPPScheduler.h"
@@ -55,19 +54,19 @@ namespace
std::map<Scheduler::Type, std::unique_ptr<IScheduler>> init()
{
std::map<Scheduler::Type, std::unique_ptr<IScheduler>> m;
- m[Scheduler::Type::ST] = support::cpp14::make_unique<SingleThreadScheduler>();
+ m[Scheduler::Type::ST] = std::make_unique<SingleThreadScheduler>();
#if defined(ARM_COMPUTE_CPP_SCHEDULER)
- m[Scheduler::Type::CPP] = support::cpp14::make_unique<CPPScheduler>();
+ m[Scheduler::Type::CPP] = std::make_unique<CPPScheduler>();
#endif // defined(ARM_COMPUTE_CPP_SCHEDULER)
#if defined(ARM_COMPUTE_OPENMP_SCHEDULER)
- m[Scheduler::Type::OMP] = support::cpp14::make_unique<OMPScheduler>();
+ m[Scheduler::Type::OMP] = std::make_unique<OMPScheduler>();
#endif // defined(ARM_COMPUTE_OPENMP_SCHEDULER)
return m;
}
} // namespace
-std::map<Scheduler::Type, std::unique_ptr<IScheduler>> Scheduler::_schedulers = init();
+std::map<Scheduler::Type, std::unique_ptr<IScheduler>> Scheduler::_schedulers{};
void Scheduler::set(Type t)
{
@@ -77,7 +76,7 @@ void Scheduler::set(Type t)
bool Scheduler::is_available(Type t)
{
- if(t == Type::CUSTOM)
+ if (t == Type::CUSTOM)
{
return _custom_scheduler != nullptr;
}
@@ -94,11 +93,12 @@ Scheduler::Type Scheduler::get_type()
IScheduler &Scheduler::get()
{
- if(_scheduler_type == Type::CUSTOM)
+ if (_scheduler_type == Type::CUSTOM)
{
- if(_custom_scheduler == nullptr)
+ if (_custom_scheduler == nullptr)
{
- ARM_COMPUTE_ERROR("No custom scheduler has been setup. Call set(std::shared_ptr<IScheduler> &scheduler) before Scheduler::get()");
+ ARM_COMPUTE_ERROR("No custom scheduler has been setup. Call set(std::shared_ptr<IScheduler> &scheduler) "
+ "before Scheduler::get()");
}
else
{
@@ -107,8 +107,13 @@ IScheduler &Scheduler::get()
}
else
{
+ if (_schedulers.empty())
+ {
+ _schedulers = init();
+ }
+
auto it = _schedulers.find(_scheduler_type);
- if(it != _schedulers.end())
+ if (it != _schedulers.end())
{
return *it->second;
}