pub struct IndirectTile {
pub index: BufferId,
pub tile_stride: usize,
pub elems_per_tile: usize,
pub bound: (usize, usize),
}Expand description
A value-dependent tile address: the tile is chosen by an INDEX read from a buffer, not by the loop variables — an embedding row, a KV-cache slot, a flash-attention block, a chosen expert’s weights.
Semantics: the index v is element 0 of the index buffer’s front page (the buffer is an operand of the
Load or Store; the schedule waits on it before the transfer and retires it after); the address gains
(v div elems_per_tile) · tile_stride tiles. A v outside bound (or not a whole number) is a fault in
the data run, never a wrapped row; the token-only dry run, which has no index to read, checks the tile
block at BOTH ends of bound against the tensor, so a certificate covers every index the bound admits.
Printers with no gather instruction refuse it by name (SpatialProgram::has_indirect_access).
Fields§
§index: BufferIdThe buffer whose front page carries the index.
tile_stride: usizeTiles per unit of index (a row of tile_stride tiles per indexed row).
elems_per_tile: usizeElements a unit of index spans — how the index is scaled before it is tile-aligned.
bound: (usize, usize)The declared inclusive range of the index; a gather without one earns no certificate (B-P5).
Trait Implementations§
Source§impl Clone for IndirectTile
impl Clone for IndirectTile
Source§fn clone(&self) -> IndirectTile
fn clone(&self) -> IndirectTile
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for IndirectTile
impl Debug for IndirectTile
Source§impl<'de> Deserialize<'de> for IndirectTile
impl<'de> Deserialize<'de> for IndirectTile
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 Hash for IndirectTile
impl Hash for IndirectTile
Source§impl PartialEq for IndirectTile
impl PartialEq for IndirectTile
Source§impl Serialize for IndirectTile
impl Serialize for IndirectTile
impl Copy for IndirectTile
impl Eq for IndirectTile
impl StructuralPartialEq for IndirectTile
Auto Trait Implementations§
impl Freeze for IndirectTile
impl RefUnwindSafe for IndirectTile
impl Send for IndirectTile
impl Sync for IndirectTile
impl Unpin for IndirectTile
impl UnsafeUnpin for IndirectTile
impl UnwindSafe for IndirectTile
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.