NEML2 2.0.0
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
SimpleScheduler Class Reference

A very simple scheduler. More...

Detailed Description

A very simple scheduler.

This schedule is simple in the sense that

  • It dispatches to a single device
  • It dispatches a fixed batch size
  • It does not perform parallel communication with other ranks (if any) to determine the availability of the device

#include <SimpleScheduler.h>

Inheritance diagram for SimpleScheduler:

Public Member Functions

 SimpleScheduler (const OptionSet &options)
 Construct a new WorkScheduler object.
 
std::vector< Devicedevices () const override
 Device options.
 
- Public Member Functions inherited from WorkScheduler
 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.
 
- Public Member Functions inherited from NEML2Object
 NEML2Object ()=delete
 
 NEML2Object (NEML2Object &&)=delete
 
 NEML2Object (const NEML2Object &)=delete
 
NEML2Objectoperator= (NEML2Object &&)=delete
 
NEML2Objectoperator= (const NEML2Object &)=delete
 
virtual ~NEML2Object ()=default
 
 NEML2Object (const OptionSet &options)
 Construct a new NEML2Object object.
 
const OptionSetinput_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 Public Member Functions inherited from WorkScheduler
static OptionSet expected_options ()
 Options for the scheduler.
 
- Static Public Member Functions inherited from NEML2Object
static OptionSet expected_options ()
 

Protected Member Functions

bool schedule_work_impl (Device &, std::size_t &) const override
 Implementation of the work scheduling.
 
void dispatched_work_impl (Device, std::size_t) override
 Update the scheduler with the dispatch of the last batch.
 
void completed_work_impl (Device, std::size_t) override
 Update the scheduler with the completion of the last batch.
 
bool all_work_completed () const override
 Check if all work has been completed.
 

Additional Inherited Members

- Protected Attributes inherited from WorkScheduler
std::condition_variable _condition
 Condition variable for the scheduling thread.
 

Constructor & Destructor Documentation

◆ SimpleScheduler()

SimpleScheduler ( const OptionSet & options)

Construct a new WorkScheduler object.

Parameters
optionsOptions for the scheduler

Member Function Documentation

◆ all_work_completed()

bool all_work_completed ( ) const
overrideprotectedvirtual

Check if all work has been completed.

Implements WorkScheduler.

◆ completed_work_impl()

void completed_work_impl ( Device ,
std::size_t  )
overrideprotectedvirtual

Update the scheduler with the completion of the last batch.

Implements WorkScheduler.

◆ devices()

std::vector< Device > devices ( ) const
inlineoverridevirtual

Device options.

Reimplemented from WorkScheduler.

◆ dispatched_work_impl()

void dispatched_work_impl ( Device ,
std::size_t  )
overrideprotectedvirtual

Update the scheduler with the dispatch of the last batch.

Implements WorkScheduler.

◆ expected_options()

OptionSet expected_options ( )
static

Options for the scheduler.

◆ schedule_work_impl()

bool schedule_work_impl ( Device & ,
std::size_t &  ) const
overrideprotectedvirtual

Implementation of the work scheduling.

Implements WorkScheduler.