DependencyScheduleScenario
Agents scenarios · Implementation: mlsysim/engine/scenario_definitions/agents.py.
Construct this scenario with keyword inputs. The fields below show the types and defaults declared by this class.
A dependency graph on interchangeable slots: aggregate work, the critical path, and both bounds.
The schedule starts each node when its last predecessor finishes. No schedule on slots slots ends before max(W / slots, L).
Notes
Equation: The calculation members below define schedule, start, finish, work, makespan, work_bound, speedup, peak_slots, free_float.
Assumptions: Dependencies form a nonempty acyclic graph and tasks execute without preemption; earliest starts ignore slot scarcity.
Excludes: Claiming the critical-path schedule is feasible on the configured finite slot count.
References
Derivation: A dependency graph on interchangeable slots: aggregate work, the critical path, and both bounds. Each member records the corresponding algebra or named physics function.
Examples
Evaluate the named configuration and display a modeled result.
>>> from mlsysim import Scenarios
>>> case = Scenarios.InterfaceMigrationSchedule
>>> value = case.makespan
>>> print(f"{value:.3g~}")
174 sAttributes
| Name | Description |
|---|---|
| durations | |
| finish | Mapping from node identifier to earliest-finish time quantity, the schedule’s second component. |
| free_float | Per-node duration slack before delaying its earliest successor; sink nodes omitted. |
| makespan | Dependency critical-path duration, the latest earliest finish; not a slot-constrained schedule. |
| peak_slots | Maximum concurrently active nodes in the earliest-start schedule; endpoints are half open. |
| predecessors | |
| schedule | Earliest starts and finishes from calc_earliest_schedule on the dependency DAG, before imposing slot limits. |
| slots | |
| speedup | Dimensionless serial-work to dependency-critical-path ratio. |
| start | Mapping from node identifier to earliest-start time quantity, the schedule’s first component. |
| work | Total serial work as a duration quantity, summing every node duration. |
| work_bound | Aggregate-work duration divided by slot count, a capacity lower bound. |
durations
Type: Dict[int, Quantity].
Declared default: required.
predecessors
Type: Dict[int, List[int]].
Declared default: required.
slots
Type: int.
Declared default: required.
schedule
engine.scenario_types.DependencyScheduleScenario.schedule
Earliest starts and finishes from calc_earliest_schedule on the dependency DAG, before imposing slot limits.
Calculation: mlsysim.physics.coordination.calc_earliest_schedule.
start
engine.scenario_types.DependencyScheduleScenario.start
Mapping from node identifier to earliest-start time quantity, the schedule’s first component.
Equation: schedule[0].
finish
engine.scenario_types.DependencyScheduleScenario.finish
Mapping from node identifier to earliest-finish time quantity, the schedule’s second component.
Equation: schedule[1].
work
engine.scenario_types.DependencyScheduleScenario.work
Total serial work as a duration quantity, summing every node duration.
Equation: sum(durations.values(), 0 * next(iter(durations.values()))).
makespan
engine.scenario_types.DependencyScheduleScenario.makespan
Dependency critical-path duration, the latest earliest finish; not a slot-constrained schedule.
The critical path: the latest earliest finish.
Equation: max(finish.values()).
work_bound
engine.scenario_types.DependencyScheduleScenario.work_bound
Aggregate-work duration divided by slot count, a capacity lower bound.
Equation: work / slots.
speedup
engine.scenario_types.DependencyScheduleScenario.speedup
Dimensionless serial-work to dependency-critical-path ratio.
Serial time over the makespan.
Equation: (work / makespan).to('').magnitude.
peak_slots
engine.scenario_types.DependencyScheduleScenario.peak_slots
Maximum concurrently active nodes in the earliest-start schedule; endpoints are half open.
Most nodes running at once in the earliest schedule.
Equation: max((sum((1 for m in durations if s[m] <= s[n] < f[m])) for n in durations)).
free_float
engine.scenario_types.DependencyScheduleScenario.free_float
Per-node duration slack before delaying its earliest successor; sink nodes omitted.
For each node with successors, how long it can slip before delaying the earliest one.
Equation: out.