27#include "neml2/dispatchers/WorkScheduler.h"
28#include "neml2/base/Registry.h"
29#include "neml2/base/NEML2Object.h"
30#include "neml2/base/Factory.h"
32#include "timpi/communicator.h"
62 void setup()
override;
64 std::vector<Device>
devices()
const override {
return {_available_devices[_device_index]}; }
66 virtual TIMPI::Communicator &
comm() {
return _comm; }
78 void determine_my_device();
81 std::vector<Device> _available_devices;
84 std::vector<std::size_t> _batch_sizes;
87 std::vector<std::size_t> _capacities;
90 TIMPI::Communicator _comm;
93 std::size_t _device_index = 0;
96 std::size_t _load = 0;
A custom map-like data structure. The keys are strings, and the values can be nonhomogeneously typed.
Definition OptionSet.h:52
bool schedule_work_impl(Device &, std::size_t &) const override
Implementation of the work scheduling.
Definition SimpleMPIScheduler.cxx:133
void completed_work_impl(Device, std::size_t) override
Update the scheduler with the completion of the last batch.
Definition SimpleMPIScheduler.cxx:150
virtual TIMPI::Communicator & comm()
Definition SimpleMPIScheduler.h:66
void dispatched_work_impl(Device, std::size_t) override
Update the scheduler with the dispatch of the last batch.
Definition SimpleMPIScheduler.cxx:144
std::vector< Device > devices() const override
Device options.
Definition SimpleMPIScheduler.h:64
void setup() override
Check the device list and coordinate this rank's device.
Definition SimpleMPIScheduler.cxx:72
static OptionSet expected_options()
Options for the scheduler.
Definition SimpleMPIScheduler.cxx:37
virtual void set_comm(TIMPI::Communicator comm)
Definition SimpleMPIScheduler.h:68
SimpleMPIScheduler(const OptionSet &options)
Construct a new WorkScheduler object.
Definition SimpleMPIScheduler.cxx:55
bool all_work_completed() const override
Check if all work has been completed.
Definition SimpleMPIScheduler.cxx:157
WorkScheduler(const OptionSet &options)
Construct a new WorkScheduler object.
Definition WorkScheduler.cxx:39
Definition DiagnosticsInterface.cxx:30
c10::Device Device
Definition types.h:66