module InstructionScheduler:sig
..end
InstructionScheduler scheduling functions and utilities
val print_problem : Stdlib.out_channel -> InstructionSchedulerTypes.problem -> unit
Print problem for human readability.
val get_nr_instructions : InstructionSchedulerTypes.problem -> int
Get the number of instructions in a problem
val get_nr_resources : InstructionSchedulerTypes.problem -> int
Get the number of resources in a problem
val maximum_slot_used : int array -> int
Get the number the last scheduling time used for an instruction in a solution.
val check_schedule : InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution -> unit
Validate that a solution is truly a solution of a scheduling problem.
Failure
if validation failsval list_scheduler : InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution option
Schedule the problem using a greedy list scheduling algorithm, from the start. The first (according to instruction ordering) instruction that is ready (according to the latency constraints) is scheduled at the current clock tick. Once a clock tick is full go to the next.
Some solution
when a solution is found, None
if not.val regpres_scheduler : InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution option
Same as list_scheduler, but schedules instructions which decrease register pressure when it gets too high.
val reg_pres_scheduler_old : InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution option
val greedy_scheduler : InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution option
Schedule the problem using the order of instructions without any reordering. DOES NOT COMPUTE A CORRECT MAKESPAN, the "times" are logical not cycles.
val recompute_makespan : InstructionSchedulerTypes.problem -> int array -> int option
val schedule_reversed : InstructionSchedulerTypes.scheduler ->
InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution option
Schedule a problem using a scheduler applied in the opposite direction, e.g. for list scheduling from the end instead of the start. BUGGY
val reverse_list_scheduler : InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution option
Schedule a problem from the end using a list scheduler. BUGGY
val check_problem : InstructionSchedulerTypes.problem -> unit
Check that a problem is well-formed.
Failure
if validation failsval validated_scheduler : InstructionSchedulerTypes.scheduler ->
InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution option
Apply a scheduler and validate the result against the input problem.
Failure
if validation failsval get_max_latency : int array -> int
Get max latency from solution
val maximum_critical_path : InstructionSchedulerTypes.problem -> int
Get the length of a maximal critical path
val cascaded_scheduler : InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution option
Apply line scheduler then advanced solver
val show_date_ranges : InstructionSchedulerTypes.problem -> unit
type
pseudo_boolean_problem_type =
| |
SATISFIABILITY |
| |
OPTIMIZATION |
type
pseudo_boolean_mapper
val pseudo_boolean_print_problem : Stdlib.out_channel ->
InstructionSchedulerTypes.problem ->
pseudo_boolean_problem_type ->
pseudo_boolean_mapper
val pseudo_boolean_read_solution : pseudo_boolean_mapper -> Stdlib.in_channel -> int array
val pseudo_boolean_scheduler : pseudo_boolean_problem_type ->
InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution option
val smt_print_problem : Stdlib.out_channel -> InstructionSchedulerTypes.problem -> unit
val ilp_print_problem : Stdlib.out_channel ->
InstructionSchedulerTypes.problem ->
pseudo_boolean_problem_type ->
pseudo_boolean_mapper
val ilp_scheduler : pseudo_boolean_problem_type ->
InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution option
val mris_scheduler : InstructionSchedulerTypes.problem ->
bool -> bool -> InstructionSchedulerTypes.solution option
val scheduler_by_name : string ->
InstructionSchedulerTypes.problem ->
InstructionSchedulerTypes.solution option
Schedule a problem using a scheduler given by a string name