2023-10-12 17:51:03 +02:00
|
|
|
|
|
|
|
"""
|
2024-06-24 23:31:30 +02:00
|
|
|
AbstractScheduler
|
2023-10-12 17:51:03 +02:00
|
|
|
|
|
|
|
Abstract base type for scheduler implementations. The scheduler is used to assign each node to a device and create a topological ordering of tasks.
|
|
|
|
"""
|
2024-06-24 23:31:30 +02:00
|
|
|
abstract type AbstractScheduler end
|
2023-10-12 17:51:03 +02:00
|
|
|
|
|
|
|
"""
|
|
|
|
schedule_dag(::Scheduler, ::DAG, ::Machine)
|
|
|
|
|
|
|
|
Interface functions that must be implemented for implementations of [`Scheduler`](@ref).
|
|
|
|
|
|
|
|
The function assigns each [`ComputeTaskNode`](@ref) of the [`DAG`](@ref) to one of the devices in the given [`Machine`](@ref) and returns a `Vector{Node}` representing a topological ordering.
|
|
|
|
|
|
|
|
[`DataTaskNode`](@ref)s are not scheduled to devices since they do not compute. Instead, a data node transfers data from the [`AbstractDevice`](@ref) of their child to all [`AbstractDevice`](@ref)s of its parents.
|
2024-01-03 16:38:32 +01:00
|
|
|
|
|
|
|
Return a `Vector{FunctionCall}`. See [`FunctionCall`](@ref)
|
2023-10-12 17:51:03 +02:00
|
|
|
"""
|
|
|
|
function schedule_dag end
|