Automatic scheduling for different latency-offsetsΒΆ

This example showcases how one can generate a schedule where the operations have different latency offsets for the different inputs/outputs.

from b_asic.list_schedulers import HybridScheduler
from b_asic.schedule import Schedule
from b_asic.scheduler import ALAPScheduler, ASAPScheduler
from b_asic.sfg_generators import ldlt_matrix_inverse

sfg = ldlt_matrix_inverse(N=3, name="matrix-inv", pe="mads")

sfg.set_latency_offsets_of_type_name("mads", {"in0": 3, "in1": 0, "in2": 0, "out0": 4})
sfg.set_execution_time_of_type_name("mads", 1)
sfg.set_latency_of_type_name("rec", 10)
sfg.set_execution_time_of_type_name("rec", 1)

The SFG is

sfg
latency offset scheduling

Create an ASAP schedule for reference.

schedule1 = Schedule(sfg, scheduler=ASAPScheduler())
schedule1
latency offset scheduling

Create an ALAP schedule for reference.

schedule2 = Schedule(sfg, scheduler=ALAPScheduler())
schedule2
latency offset scheduling

Create a resource restricted schedule.

schedule3 = Schedule(sfg, scheduler=HybridScheduler())
schedule3
latency offset scheduling

Create another schedule with shorter scheduling time by enabling cyclic.

schedule4 = Schedule(
    sfg,
    scheduler=HybridScheduler(),
    schedule_time=49,
    cyclic=True,
)
schedule4
latency offset scheduling

Push the schedule time to the rate limit for one MADS operator.

schedule5 = Schedule(
    sfg,
    scheduler=HybridScheduler(),
    schedule_time=15,
    cyclic=True,
)
schedule5
latency offset scheduling

Total running time of the script: (0 minutes 1.865 seconds)

Gallery generated by Sphinx-Gallery