scheduler

scheduler#

Tools for merging instruction schedules in time.

Under the idealized, noiseless, crosstalk-less computational model, the scheduling algorithms should preserve the effect of the schedules on the computational subspace, i.e. executing Schedule A immediately followed by B should be equivalent to executing the merged schedule A+B.

The merging is always done so that in A+B all the channels of B start their execution simultaneously, and remain in sync. Nothing instructions can be added as spacers between the channels of A and B as necessary to make this happen.

Typically the scheduling algorithms also try to minimize the total duration of the merged schedule.

Full path: iqm.pulse.scheduler

Module Attributes

NONSOLID

Instructions that can be converted to Wait after scheduling.

BLOCKING

Nonsolid Instructions that nevertheless block.

Functions

extend_hard_boundary(schedule, ...)

Merge two Schedules together such that the timebox boundary is respected.

extend_hard_boundary_in_seconds(schedule, ...)

The same as extend_hard_boundary, but the scheduling is done in seconds.

extend_schedule(A, B, channels, *[, TOL])

Extend a Schedule with another Schedule.

extend_schedule_new(A, B, channels, *[, TOL])

Extend a Schedule with another Schedule.

Classes

SegmentPointer

Tool for working with Segments.

Inheritance

digraph inheritance1c3542bf1d { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "SegmentPointer" [URL="iqm.pulse.scheduler.SegmentPointer.html#iqm.pulse.scheduler.SegmentPointer",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Tool for working with Segments."]; }