pub struct GemmWidths {
pub a: u64,
pub b: u64,
pub a_buffer: u64,
pub b_buffer: u64,
pub out: u64,
}Expand description
The tile widths a GEMM’s movement is priced at. A transfer moves its tensor’s stored bytes, so each operand is read at its own tensor’s width and the result written at the output’s — an exact accumulator writes a wider result than the operands it reads (fp32 under bf16, int32 or int64 under int8) — and a multicast moves the sender’s buffer, at that buffer’s width.
Fields§
§a: u64§b: u64§a_buffer: u64§b_buffer: u64§out: u64Implementations§
Source§impl GemmWidths
impl GemmWidths
Sourcepub fn of(p: &SpatialProgram, t: &SpatialTarget) -> Option<GemmWidths>
pub fn of(p: &SpatialProgram, t: &SpatialTarget) -> Option<GemmWidths>
The widths of p’s GEMM on t: the tensors its matrix stage’s operand buffers are loaded from (an
operand no stage loads moves at its buffer’s width), those buffers, and the output. None for a
program with no two-operand tile matmul or no output.
Trait Implementations§
Source§impl Clone for GemmWidths
impl Clone for GemmWidths
Source§fn clone(&self) -> GemmWidths
fn clone(&self) -> GemmWidths
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for GemmWidths
impl Debug for GemmWidths
Source§impl PartialEq for GemmWidths
impl PartialEq for GemmWidths
impl Copy for GemmWidths
impl Eq for GemmWidths
impl StructuralPartialEq for GemmWidths
Auto Trait Implementations§
impl Freeze for GemmWidths
impl RefUnwindSafe for GemmWidths
impl Send for GemmWidths
impl Sync for GemmWidths
impl Unpin for GemmWidths
impl UnsafeUnpin for GemmWidths
impl UnwindSafe for GemmWidths
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
Mutably borrows from an owned value. Read more
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>
Convert
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>
Convert
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)
Convert
&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)
Convert
&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
Checks if this value is equivalent to the given key. Read more
§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
Compare self to
key and return true if they are equal.