Scheduler

Interface

ComputableDAGs.schedule_dag — Function
schedule_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{Tuple{Node, Device}} representing a topological ordering.

DataTaskNodes are not scheduled to devices since they do not compute. Instead, a data node transfers data from the AbstractDevice of their child to all AbstractDevices of its parents.

The produced schedule can be converted to FunctionCalls using lower.

source

Types

ComputableDAGs.AbstractScheduler — Type
AbstractScheduler

Abstract base type for scheduler implementations. The scheduler is used to assign each node to a device and create a topological ordering of tasks.

source

Greedy

ComputableDAGs.GreedyScheduler — Type
GreedyScheduler

A greedy implementation of a scheduler, creating a topological ordering of nodes and naively balancing them onto the different devices.

source