pub enum BlockApi {
Unpacker,
Systolic,
Fragments,
}Expand description
How a matrix engine’s sub-block API runs one compute op over an osh × osw sub-block and its ibw inner
steps: the calls it makes and the operand tiles it loads.
Variants§
Unpacker
One call per inner step. The unpacker holds one operand tile along the sub-block’s shorter side and
re-loads the other operand’s tiles for each: min(osh, osw) + osh · osw tiles a step. Tensix’s
matmul_block (llk_unpack_AB_matmul: reuse_a = ct_dim >= rt_dim, t_dim held tiles, each running
the other operand’s row of the block).
Systolic
One call over the whole inner block, its A and B panels loaded once: osh · ibw + ibw · osw tiles. The
fabric’s systolic array, which pays its fill once per call.
Fragments
One fragment step per inner step. Each lane of the accumulator grid
(SpatialTarget::accumulator_lane_grid) loads its own A rows and B columns: wn · osh + wm · osw tiles
a step on a wm × wn grid, and two per output tile where no grid splits the sub-block evenly. The GPU’s
wmma loop.
Trait Implementations§
impl Copy for BlockApi
impl Eq for BlockApi
impl StructuralPartialEq for BlockApi
Auto Trait Implementations§
impl Freeze for BlockApi
impl RefUnwindSafe for BlockApi
impl Send for BlockApi
impl Sync for BlockApi
impl Unpin for BlockApi
impl UnsafeUnpin for BlockApi
impl UnwindSafe for BlockApi
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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.