pub enum ArgSource {
Show 14 variants
TensorAddr(TensorId),
ItemStart,
ItemCount,
ItemY0,
ItemX0,
ItemCountX,
McastStart {
operand: Operand,
axis: Axis,
},
McastEnd {
operand: Operand,
axis: Axis,
},
McastNumDests {
operand: Operand,
},
McastSender {
operand: Operand,
axis: Axis,
},
SemHandle(SemId),
CyclesAddr,
CyclesSlot(u8),
TensorDim {
tensor: TensorId,
axis: Axis,
},
}Variants§
TensorAddr(TensorId)
DRAM base address of a tensor.
ItemStart
First work item (linear id) of the site — items are consecutive in row-major block order.
ItemCount
Number of work items of the site.
ItemY0
Strided item enumeration (a wrapped blocked plan): first block row / column and the count per row.
ItemX0
ItemCountX
McastStart
Multicast rectangle of the RECEIVERS of the site’s group for an operand (near corner / far corner).
McastEnd
McastNumDests
McastSender
Physical coordinate of the sender of the site’s group for an operand.
SemHandle(SemId)
The program-wide semaphore handle (get_semaphore(id) in the kernel).
CyclesAddr
Base of the device-cycle scratch, and this site’s word in it. Stamped by the kernel that writes the output, whose lifetime spans the whole program on its core.
CyclesSlot(u8)
TensorDim
A tensor’s tile-grid extent (rows_t / cols_t), handed to a data-movement kernel at run time: the
ONLY way shape enters a kernel. Every tile stride and loop count is printed as a block-extent literal
times or over one of these, so the address arithmetic has exactly the vendor’s form — constant-folding
the shape restructures it and slows the NOC issue rate (+844 cycles at 640³ on ttsim), while a runtime
value the compiler cannot see is 1 costs a multiply per tile (+300 cycles). A movement kernel is thereby
shape-generic: the same binary serves every shape of the same blocking.
Trait Implementations§
impl Eq for ArgSource
impl StructuralPartialEq for ArgSource
Auto Trait Implementations§
impl Freeze for ArgSource
impl RefUnwindSafe for ArgSource
impl Send for ArgSource
impl Sync for ArgSource
impl Unpin for ArgSource
impl UnsafeUnpin for ArgSource
impl UnwindSafe for ArgSource
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.