pub struct PlanQuantities {Show 23 fields
pub problem: (usize, usize, usize),
pub sites_used: usize,
pub kernel_classes: usize,
pub n_sems: usize,
pub tile_macs: u64,
pub acquires: u64,
pub reload_tiles: u64,
pub dram_tiles_site: u64,
pub dram_tiles_engine: (u64, u64),
pub pack_tiles: u64,
pub fill_macs: u64,
pub drains: u64,
pub pack_overlaps: bool,
pub dram_tiles_all: u64,
pub cb_handoffs: u64,
pub mcast_blocks: u64,
pub mcast_tiles: u64,
pub fill_tiles_engine: (u64, u64),
pub fill_tiles: u64,
pub drain_tiles: u64,
pub fp32_acc: bool,
pub fidelity: Fidelity,
pub iterations: u64,
}Expand description
The structural quantities of one candidate plan (per the busiest site, plus whole-program totals).
Fields§
§problem: (usize, usize, usize)The problem in tiles (mt, nt, kt); points that share a problem, fp32_acc and fidelity are
measured alternatives of one another and must be ranked as the simulator ranked them.
sites_used: usize§kernel_classes: usize§n_sems: usize§tile_macs: u64§acquires: u64§reload_tiles: u64§dram_tiles_site: u64§dram_tiles_engine: (u64, u64)The site’s DRAM traffic split across its movement engines, which run CONCURRENTLY: the engine with the most work sets the pace, so the packing that balances them wins. One entry per engine.
pack_tiles: u64Tiles the packer writes (every spill and the final output).
fill_macs: u64Tile-MACs of ONE sub-block: the math the compute pipeline must finish before the packer has anything to overlap with, so a bigger sub-block costs more fill however few of them there are.
drains: u64Page round-trips the packer’s in-place accumulate needs to return its write pointer.
pack_overlaps: boolThe packer and the math unit overlap. They can only do so when a sub-block fits in HALF the register file, because the engine works one half while the packer drains the other; a sub-block that fills the whole file forces the two to take turns.
dram_tiles_all: u64§cb_handoffs: u64§mcast_blocks: u64§mcast_tiles: u64§fill_tiles_engine: (u64, u64)Prologue tiles per movement engine: the first block’s operands, which the engines read CONCURRENTLY. Summing them would charge a split arrangement for a serial read it never performs.
fill_tiles: u64§drain_tiles: u64§fp32_acc: bool§fidelity: Fidelity§iterations: u64Steady-state iterations the site runs: one per K block per work item. The pipeline’s cost is its initiation interval times this, so a term that does not scale with it is setup, not throughput.
Trait Implementations§
Source§impl Clone for PlanQuantities
impl Clone for PlanQuantities
Source§fn clone(&self) -> PlanQuantities
fn clone(&self) -> PlanQuantities
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PlanQuantities
impl Debug for PlanQuantities
Source§impl<'de> Deserialize<'de> for PlanQuantities
impl<'de> Deserialize<'de> for PlanQuantities
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 PlanQuantities
impl PartialEq for PlanQuantities
Source§impl Serialize for PlanQuantities
impl Serialize for PlanQuantities
impl Copy for PlanQuantities
impl StructuralPartialEq for PlanQuantities
Auto Trait Implementations§
impl Freeze for PlanQuantities
impl RefUnwindSafe for PlanQuantities
impl Send for PlanQuantities
impl Sync for PlanQuantities
impl Unpin for PlanQuantities
impl UnsafeUnpin for PlanQuantities
impl UnwindSafe for PlanQuantities
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.