Scheduler
Interface
ComputableDAGs.AbstractScheduler
— TypeAbstractScheduler
Abstract base type for scheduler implementations. The scheduler is used to assign each node to a device and create a topological ordering of tasks.
ComputableDAGs.schedule_dag
— Functionschedule_dag(::Scheduler, ::DAG, ::Machine)
Interface functions that must be implemented for implementations of Scheduler
.
The function assigns each ComputeTaskNode
of the DAG
to one of the devices in the given Machine
and returns a Vector{Node}
representing a topological ordering.
DataTaskNode
s are not scheduled to devices since they do not compute. Instead, a data node transfers data from the AbstractDevice
of their child to all AbstractDevice
s of its parents.
The produced schedule can be converted to FunctionCall
s using lower
.
Types
ComputableDAGs.FunctionCall
— TypeFunctionCall{N}
Type representing a function call with N
parameters. Contains the function to call, argument symbols, the return symbol and the device to execute on.
Greedy
ComputableDAGs.GreedyScheduler
— TypeGreedyScheduler
A greedy implementation of a scheduler, creating a topological ordering of nodes and naively balancing them onto the different devices.