Skip to main content

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 s

Attributes

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.

Back to top