pub struct RegisterBlock {
pub budget: usize,
pub split_edge: bool,
pub component_fanout: bool,
pub partials: bool,
}Expand description
Execution and unrolling configuration for the software instruction.
Fields§
§budget: usizeScalar register budget for the accumulator block; blocks over budget stay rolled. Also limits the tap count eligible for gather-loop unrolling.
split_edge: boolWhether to generate a fast in-bounds path plus checked fallback for edge tiles.
component_fanout: boolWhether to walk K as (line, component) rather than as a flat scalar walk.
partials: boolWhether a block contracting an rhs lined along K keeps one partial a lane, summed once at
the drain, rather than summing each run into a one-wide cell every step.
Implementations§
Source§impl RegisterBlock
impl RegisterBlock
Sourcepub const fn split_edge(self) -> Self
pub const fn split_edge(self) -> Self
Generate the fast in-bounds path plus checked fallback for edge tiles.
Sourcepub const fn component_fanout(self) -> Self
pub const fn component_fanout(self) -> Self
Walk K as (line, component) rather than as a flat scalar walk.
Sourcepub const fn partials(self) -> Self
pub const fn partials(self) -> Self
Hold a run along K as one partial a lane: each step of the contraction is one
multiply-add a cell, vector_size values wide, and the lanes are summed once, at the drain,
rather than every step. Only for a block the drain is the one reader of: a lane holds part
of a cell, so its cells are not whole values until then.
Trait Implementations§
Source§impl Clone for RegisterBlock
impl Clone for RegisterBlock
impl Copy for RegisterBlock
Source§impl Debug for RegisterBlock
impl Debug for RegisterBlock
impl Eq for RegisterBlock
Source§impl Hash for RegisterBlock
impl Hash for RegisterBlock
Source§impl PartialEq for RegisterBlock
impl PartialEq for RegisterBlock
impl StructuralPartialEq for RegisterBlock
Auto Trait Implementations§
impl Freeze for RegisterBlock
impl RefUnwindSafe for RegisterBlock
impl Send for RegisterBlock
impl Sync for RegisterBlock
impl Unpin for RegisterBlock
impl UnsafeUnpin for RegisterBlock
impl UnwindSafe for RegisterBlock
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneExpand for Twhere
T: Clone,
impl<T> CloneExpand for Twhere
T: Clone,
fn __expand_clone_method(&self, _: &Scope) -> T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> CompilationArg for T
impl<T> CompilationArg for T
Source§fn dynamic_cast<Arg>(&self) -> Argwhere
Arg: CompilationArg,
fn dynamic_cast<Arg>(&self) -> Argwhere
Arg: CompilationArg,
impl<T> CubeComptime for T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§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>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§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.Source§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.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<K, Q> Equivalent<Q> for K
impl<K, Q> Equivalent<Q> for K
Source§fn equivalent(&self, key: &Q) -> bool
fn equivalent(&self, key: &Q) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more