pub struct Bound {
pub vector_size: usize,
pub spec: TileSpec,
/* private fields */
}Expand description
A bound operand: its tensor argument and the element its buffer holds, comptime TileSpec and
served width.
Fields§
§vector_size: usizeServed width (values per line); a packed binding is narrower by the packing factor.
spec: TileSpecImplementations§
Source§impl Bound
impl Bound
Sourcepub fn output<E: Numeric>(self) -> OutputArgs<'static, E>
pub fn output<E: Numeric>(self) -> OutputArgs<'static, E>
This operand as an Output::Tensor: read and replaced.
Sourcepub fn atomic<E: Numeric>(self) -> OutputArgs<'static, E>
pub fn atomic<E: Numeric>(self) -> OutputArgs<'static, E>
This operand as an Output::Atomic; the buffer must arrive holding zero, since it only
ever adds.
Source§impl Bound
impl Bound
Sourcepub fn rebound(
&self,
buffers: &mut impl Iterator<Item = BufferBinding>,
) -> Option<Self>
pub fn rebound( &self, buffers: &mut impl Iterator<Item = BufferBinding>, ) -> Option<Self>
This operand bound again over buffers, another buffer of the same layout: the tensor it
holds takes the next one and keeps the shape, strides and tiling it was settled at. A launch
that binds the same operands every step keeps its binding and changes only the addresses.
None where buffers runs out, or where the operand aliases another input.
Sourcepub fn arg(self) -> TileArgLaunch
pub fn arg(self) -> TileArgLaunch
The operand as the kernel’s TileArg launch argument.
Sourcepub fn tensor(self) -> TensorArg
pub fn tensor(self) -> TensorArg
The tensor argument itself; panics for an operand built over geometry alone.
Sourcepub fn bound_width(&self) -> usize
pub fn bound_width(&self) -> usize
The width the binding is declared at, narrower than vector_size when packed: a packed
binding served fewer values a line than a word holds is still read a whole word at a time.
Auto Trait Implementations§
impl Freeze for Bound
impl RefUnwindSafe for Bound
impl Send for Bound
impl Sync for Bound
impl Unpin for Bound
impl UnsafeUnpin for Bound
impl UnwindSafe for Bound
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> 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
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