|
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. | |
Public Member Functions inherited from NEML2Object | |
| 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. | |
| Factory * | factory () const |
| Get the factory that created this object. | |
| const Settings & | settings () const |
| Settings. | |
| 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. | |
| template<typename T > | |
| const T & | resolve_tensor (const std::string &name) |
| Resolve a TensorName to a Tensor. | |
| template<class T > | |
| std::shared_ptr< T > | get_object (const std::string §ion, const std::string &name) |
| template<class T = Solver> | |
| std::shared_ptr< T > | get_solver (const std::string &name) |
| Get a solver from the factory. | |
| template<class T = Data> | |
| std::shared_ptr< T > | get_data (const std::string &name) |
| Get a data from the factory. | |
| template<class T = Model> | |
| std::shared_ptr< T > | get_model (const std::string &name) |
| Get a model from the factory. | |
| template<class T = Driver> | |
| std::shared_ptr< T > | get_driver (const std::string &name) |
| Get a driver from the factory. | |
| template<class T = WorkScheduler> | |
| std::shared_ptr< T > | get_scheduler (const std::string &name) |
| Get a scheduler from the factory. | |
Public Member Functions inherited from TracingInterface | |
| TracingInterface (std::string) | |
| TracingInterface (const OptionSet &) | |
| virtual | ~TracingInterface ()=default |
| TracingInterface (const TracingInterface &)=default | |
| TracingInterface (TracingInterface &&)=default | |
| TracingInterface & | operator= (const TracingInterface &)=delete |
| TracingInterface & | operator= (TracingInterface &&)=delete |
| bool | event_tracing_enabled () const |
| TraceWriter & | event_trace_writer () const |
| Get the event trace writer. | |
Static Public Member Functions | |
| static OptionSet | expected_options () |
| Options for the scheduler. | |
Static Public Member Functions inherited from NEML2Object | |
| static OptionSet | expected_options () |
Static Public Member Functions inherited from TracingInterface | |
| 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.