pub struct WorkloadRow {Show 42 fields
pub name: String,
pub kind: String,
pub target: String,
pub provenance: String,
pub par: usize,
pub par_capacity: usize,
pub router: String,
pub stages: Vec<StageRow>,
pub pipeline_ii: usize,
pub critical_stage: String,
pub buffers: Vec<BufferRow>,
pub pcu_used: usize,
pub pcu_total: usize,
pub pcu_utilization_pct: f64,
pub pmu_used: usize,
pub pmu_total: usize,
pub pmu_utilization_pct: f64,
pub fu_utilization_pct: f64,
pub ag_stages: usize,
pub total_hops: usize,
pub max_hops: usize,
pub max_link_occupancy: usize,
pub vector_links: usize,
pub routed_statically: bool,
pub iterations: usize,
pub fill_cycles: usize,
pub compute_cycles: usize,
pub operand_stall_cycles: usize,
pub dram_bytes: usize,
pub dram_cycles: usize,
pub modeled_cycles: usize,
pub bound: String,
pub throughput_iters_per_cycle: f64,
pub gflops: Option<f64>,
pub pct_of_peak_fp32: Option<f64>,
pub operands: Option<Vec<OperandRow>>,
pub channels: Vec<ChannelRow>,
pub control: Option<ControlRow>,
pub certificate: Option<CertificateRow>,
pub certificate_omitted: Option<String>,
pub vm_anchor: Option<VmAnchor>,
pub gemm: Option<GemmRow>,
}Expand description
One (workload, target) row of the report.
Fields§
§name: String§kind: Stringcounted_loop or gemm.
target: String§provenance: String§par: usizeUnrolled instances placed (a counted loop’s recurrence forbids unrolling: 1).
par_capacity: usizeThe widest unroll the mesh’s PCU/PMU capacity allows — par is at most this; when it is less, the
static vector network, not capacity, bounded the unroll.
router: StringThe private place-and-route engine’s rung that produced the routes (pnr-negotiated, pnr-exact), or why
none did.
stages: Vec<StageRow>§pipeline_ii: usize§critical_stage: String§buffers: Vec<BufferRow>§pcu_used: usize§pcu_total: usize§pcu_utilization_pct: f64§pmu_used: usize§pmu_total: usize§pmu_utilization_pct: f64§fu_utilization_pct: f64§ag_stages: usizeAddress-generator stages across every unrolled instance.
total_hops: usize§max_hops: usize§max_link_occupancy: usize§vector_links: usize§routed_statically: bool§iterations: usizeIterations one unrolled instance runs.
fill_cycles: usize§compute_cycles: usize§operand_stall_cycles: usizeCycles the MAC waits for operands on top of compute_cycles: a K-chunked reduction’s first chunk loads
before any compute starts, and a chunk whose load outlasts its compute stalls for the difference.
dram_bytes: usize§dram_cycles: usize§modeled_cycles: usize§bound: Stringcompute or dram.
throughput_iters_per_cycle: f64§gflops: Option<f64>§pct_of_peak_fp32: Option<f64>§operands: Option<Vec<OperandRow>>Per operand: how the compiler decided to feed the unrolled instances, and what it cost.
channels: Vec<ChannelRow>The synthesized control plane: one entry per inter-stage channel.
control: Option<ControlRow>The control nets those channels need, and whether they route.
certificate: Option<CertificateRow>§certificate_omitted: Option<String>§vm_anchor: Option<VmAnchor>§gemm: Option<GemmRow>Trait Implementations§
Source§impl Clone for WorkloadRow
impl Clone for WorkloadRow
Source§fn clone(&self) -> WorkloadRow
fn clone(&self) -> WorkloadRow
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for WorkloadRow
impl Debug for WorkloadRow
Source§impl<'de> Deserialize<'de> for WorkloadRow
impl<'de> Deserialize<'de> for WorkloadRow
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for WorkloadRow
impl PartialEq for WorkloadRow
Source§impl Serialize for WorkloadRow
impl Serialize for WorkloadRow
impl StructuralPartialEq for WorkloadRow
Auto Trait Implementations§
impl Freeze for WorkloadRow
impl RefUnwindSafe for WorkloadRow
impl Send for WorkloadRow
impl Sync for WorkloadRow
impl Unpin for WorkloadRow
impl UnsafeUnpin for WorkloadRow
impl UnwindSafe for WorkloadRow
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.