pub struct PipelineSchedule {
pub stage: Vec<usize>,
pub result: usize,
pub budget: f64,
pub inputs: Inputs,
}Expand description
Where every op of a residual computes, and which op leaves the pipeline.
Fields§
§stage: Vec<usize>The stage of each op; wiring carries its operands’ stage.
result: usize§budget: f64The per-stage depth budget the schedule was cut to, in the units of op_delay.
inputs: InputsWhere stage 0 reads the inputs.
Implementations§
Source§impl PipelineSchedule
impl PipelineSchedule
Sourcepub fn stages(&self) -> usize
pub fn stages(&self) -> usize
The register boundaries between the inputs and the output register, plus one.
Sourcepub fn latency(&self) -> usize
pub fn latency(&self) -> usize
Clocks from presenting an input to its result on the output register: the input register when there is one, the boundaries between stages, and the output register.
Sourcepub fn reading(self, inputs: Inputs) -> PipelineSchedule
pub fn reading(self, inputs: Inputs) -> PipelineSchedule
The same stages, reading the inputs from inputs.
Sourcepub fn stage_depth(&self, ops: &[FabricOp]) -> f64
pub fn stage_depth(&self, ops: &[FabricOp]) -> f64
The deepest path inside any one stage of the emitted pipeline, in the units of op_delay: a value read in
its own stage arrives when it is computed, and a value read in a later stage arrives from a register at depth
zero. Ops the result does not need are never emitted and never counted.
Source§impl PipelineSchedule
impl PipelineSchedule
Sourcepub fn register_bits(&self, ops: &[FabricOp]) -> u64
pub fn register_bits(&self, ops: &[FabricOp]) -> u64
The live bits the emitted pipeline’s registers hold: each input register, each value’s live bits once per stage it is delayed across, and the result register’s live bits.
Sourcepub fn register_words(&self, ops: &[FabricOp]) -> usize
pub fn register_words(&self, ops: &[FabricOp]) -> usize
The 64-bit registers the emitted pipeline holds: one per input when it registers them, one per stage each value is delayed across, and the result register.
Trait Implementations§
Source§impl Clone for PipelineSchedule
impl Clone for PipelineSchedule
Source§fn clone(&self) -> PipelineSchedule
fn clone(&self) -> PipelineSchedule
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PipelineSchedule
impl Debug for PipelineSchedule
Source§impl PartialEq for PipelineSchedule
impl PartialEq for PipelineSchedule
impl StructuralPartialEq for PipelineSchedule
Auto Trait Implementations§
impl Freeze for PipelineSchedule
impl RefUnwindSafe for PipelineSchedule
impl Send for PipelineSchedule
impl Sync for PipelineSchedule
impl Unpin for PipelineSchedule
impl UnsafeUnpin for PipelineSchedule
impl UnwindSafe for PipelineSchedule
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.