NEML2 2.0.0
|
Scheduler for work dispatching. More...
Scheduler for work dispatching.
The scheduler is responsible for determining
The scheduler is also responsible for updating its internal state when work is dispatched.
#include <WorkScheduler.h>
Public Member Functions | |
WorkScheduler (const OptionSet &options) | |
Construct a new WorkScheduler object. | |
void | schedule_work (Device &, std::size_t &) |
Determine the device and batch size for the next dispatch. | |
void | dispatched_work (Device, std::size_t) |
Update the scheduler with the dispatch of the last batch. | |
void | completed_work (Device, std::size_t) |
Update the scheduler with the completion of the last batch. | |
void | wait_for_completion () |
Wait for all work to complete. | |
virtual std::vector< Device > | devices () const |
Device options. | |
![]() | |
NEML2Object ()=delete | |
NEML2Object (NEML2Object &&)=delete | |
NEML2Object (const NEML2Object &)=delete | |
NEML2Object & | operator= (NEML2Object &&)=delete |
NEML2Object & | operator= (const NEML2Object &)=delete |
virtual | ~NEML2Object ()=default |
NEML2Object (const OptionSet &options) | |
Construct a new NEML2Object object. | |
const OptionSet & | input_options () const |
virtual void | setup () |
Setup this object. | |
const std::string & | name () const |
A readonly reference to the object's name. | |
const std::string & | type () const |
A readonly reference to the object's type. | |
const std::string & | path () const |
A readonly reference to the object's path. | |
const std::string & | doc () const |
A readonly reference to the object's docstring. | |
template<typename T = NEML2Object> | |
const T * | host () const |
Get a readonly pointer to the host. | |
template<typename T = NEML2Object> | |
T * | host () |
Get a writable pointer to the host. | |
Static Public Member Functions | |
static OptionSet | expected_options () |
Options for the scheduler. | |
![]() | |
static OptionSet | expected_options () |
Protected Member Functions | |
virtual bool | schedule_work_impl (Device &, std::size_t &) const =0 |
Implementation of the work scheduling. | |
virtual void | dispatched_work_impl (Device, std::size_t)=0 |
Update the scheduler with the dispatch of the last batch. | |
virtual void | completed_work_impl (Device, std::size_t)=0 |
Update the scheduler with the completion of the last batch. | |
virtual bool | all_work_completed () const =0 |
Check if all work has been completed. | |
Protected Attributes | |
std::condition_variable | _condition |
Condition variable for the scheduling thread. | |
WorkScheduler | ( | const OptionSet & | options | ) |
Construct a new WorkScheduler object.
options | Options for the scheduler |
|
protectedpure virtual |
Check if all work has been completed.
Implemented in SimpleMPIScheduler, SimpleScheduler, and StaticHybridScheduler.
void completed_work | ( | Device | device, |
std::size_t | m ) |
Update the scheduler with the completion of the last batch.
|
protectedpure virtual |
Update the scheduler with the completion of the last batch.
Implemented in SimpleMPIScheduler, SimpleScheduler, and StaticHybridScheduler.
|
inlinevirtual |
Device options.
Reimplemented in SimpleMPIScheduler, SimpleScheduler, and StaticHybridScheduler.
void dispatched_work | ( | Device | device, |
std::size_t | m ) |
Update the scheduler with the dispatch of the last batch.
|
protectedpure virtual |
Update the scheduler with the dispatch of the last batch.
Implemented in SimpleMPIScheduler, SimpleScheduler, and StaticHybridScheduler.
|
static |
Options for the scheduler.
void schedule_work | ( | Device & | device, |
std::size_t & | batch_size ) |
Determine the device and batch size for the next dispatch.
This is blocking until work can be scheduled.
|
protectedpure virtual |
Implementation of the work scheduling.
Implemented in SimpleMPIScheduler, SimpleScheduler, and StaticHybridScheduler.
void wait_for_completion | ( | ) |
Wait for all work to complete.
|
protected |
Condition variable for the scheduling thread.