Skip to content

Scheduler

Aaron Councilman requested to merge scheduler-pm into main

The Juno scheduler along with the re-written pass manager to interpret schedules.

Modifies Juno build to use the scheduler, with either a schedule provided by the user or the default schedule found in juno_scheduler/src/default.rs. Deletes the old Hercules driver and the old pass manager, the behavior of running specific passes can be achieved by defining a custom schedule and adding whatever passes you want to it now. An example schedule can be found in juno_samples/schedule_test/src/sched.sch which also demonstrates that we can now specify manual outlining.

Some notes for adding new passes going forward:

  1. Add the pass to the Pass enum in juno_scheduler/src/ir.rs
  2. Add a parser for the pass name to the impl FromStr for Appliable in juno_scheduler/src/compile.rs
  3. Add the execution of the pass to run_pass in juno_scheduler/src/pm.rs
  4. If the pass should go in the default pass order, add it to juno_scheduler/src/default.rs

Some additional tasks to improve functionality of the scheduler are described in #17 but I think this has enough functionality to be ready to merge now (especially as other MRs are waiting for it).

Resolves #5 (closed).

Merge request reports

Loading