pub struct GlobalOperand {
pub geometry: RuntimeGeometry,
pub bound_width: usize,
pub space: Space,
pub spec: TileSpec,
pub write: Write,
pub coefficients: Coords<u32>,
pub offsets: Coords<i32>,
/* private fields */
}Expand description
A launched memory operand: a buffer, a fused sink or a fused producer, with its geometry.
Fields§
§geometry: RuntimeGeometryThe buffer’s physical extents and strides in scalars, one per physical axis.
bound_width: usizeThe binding’s own line width, before any packing factor.
space: SpaceThe kernel’s space.
spec: TileSpec§write: WriteWhat a write does to the cell it lands on.
coefficients: Coords<u32>One per Scale::Dynamic term and one per
Divisor::Dynamic axis, by physical axis, divisor last.
offsets: Coords<i32>One signed value per Offset::Dynamic axis.
Implementations§
Source§impl GlobalOperand
impl GlobalOperand
Sourcepub fn tensor<T: Numeric, E: CubePrimitive<Scalar = T>>(
tensor: &Tensor<E>,
space: Space,
spec: TileSpec,
) -> GlobalOperand
pub fn tensor<T: Numeric, E: CubePrimitive<Scalar = T>>( tensor: &Tensor<E>, space: Space, spec: TileSpec, ) -> GlobalOperand
A launched tensor, space projected onto the spec axes; shape and strides in scalars.
Sourcepub fn paged<T: Numeric, E: CubePrimitive<Scalar = T>>(
tensor: &Tensor<E>,
table: &Tensor<u32>,
space: Space,
spec: TileSpec,
) -> GlobalOperand
pub fn paged<T: Numeric, E: CubePrimitive<Scalar = T>>( tensor: &Tensor<E>, table: &Tensor<u32>, space: Space, spec: TileSpec, ) -> GlobalOperand
Sourcepub fn gathered<T: Numeric, E: CubePrimitive<Scalar = T>>(
tensor: &Tensor<E>,
space: Space,
spec: TileSpec,
coefficients: Coords<u32>,
offsets: Coords<i32>,
) -> GlobalOperand
pub fn gathered<T: Numeric, E: CubePrimitive<Scalar = T>>( tensor: &Tensor<E>, space: Space, spec: TileSpec, coefficients: Coords<u32>, offsets: Coords<i32>, ) -> GlobalOperand
tensor for a gather with a runtime affine map.
coefficients and offsets follow the field order; only their lengths are checked.
Sourcepub fn sink<T: Numeric>(
sink: ErasedTensor<T, WriteOnly>,
geometry: RuntimeGeometry,
vector_size: usize,
space: Space,
spec: TileSpec,
write: Write,
) -> GlobalOperand
pub fn sink<T: Numeric>( sink: ErasedTensor<T, WriteOnly>, geometry: RuntimeGeometry, vector_size: usize, space: Space, spec: TileSpec, write: Write, ) -> GlobalOperand
An operand whose values are handed to sink instead of stored, under the stated geometry.
Under Accumulate the buffer must hold zero; under
Exclusive, anything: the first turn replaces it.
Sourcepub fn source<T: Numeric>(
source: ErasedTensor<T, ReadOnly>,
geometry: RuntimeGeometry,
vector_size: usize,
space: Space,
spec: TileSpec,
) -> GlobalOperand
pub fn source<T: Numeric>( source: ErasedTensor<T, ReadOnly>, geometry: RuntimeGeometry, vector_size: usize, space: Space, spec: TileSpec, ) -> GlobalOperand
An operand whose values come from source instead of memory, under the stated geometry.
Sourcepub fn tile<T: Numeric>(self, levels: Vec<Level>) -> Tile
pub fn tile<T: Numeric>(self, levels: Vec<Level>) -> Tile
This operand as a Tile at the top of levels.
Sourcepub fn __expand_tensor<T: Numeric, E: CubePrimitive<Scalar = T>>(
scope: &Scope,
tensor: &<Tensor<E> as CubeType>::ExpandType,
space: Space,
spec: TileSpec,
) -> <GlobalOperand as CubeType>::ExpandType
pub fn __expand_tensor<T: Numeric, E: CubePrimitive<Scalar = T>>( scope: &Scope, tensor: &<Tensor<E> as CubeType>::ExpandType, space: Space, spec: TileSpec, ) -> <GlobalOperand as CubeType>::ExpandType
A launched tensor, space projected onto the spec axes; shape and strides in scalars.
Sourcepub fn __expand_paged<T: Numeric, E: CubePrimitive<Scalar = T>>(
scope: &Scope,
tensor: &<Tensor<E> as CubeType>::ExpandType,
table: &<Tensor<u32> as CubeType>::ExpandType,
space: Space,
spec: TileSpec,
) -> <GlobalOperand as CubeType>::ExpandType
pub fn __expand_paged<T: Numeric, E: CubePrimitive<Scalar = T>>( scope: &Scope, tensor: &<Tensor<E> as CubeType>::ExpandType, table: &<Tensor<u32> as CubeType>::ExpandType, space: Space, spec: TileSpec, ) -> <GlobalOperand as CubeType>::ExpandType
Sourcepub fn __expand_gathered<T: Numeric, E: CubePrimitive<Scalar = T>>(
scope: &Scope,
tensor: &<Tensor<E> as CubeType>::ExpandType,
space: Space,
spec: TileSpec,
coefficients: <Coords<u32> as CubeType>::ExpandType,
offsets: <Coords<i32> as CubeType>::ExpandType,
) -> <GlobalOperand as CubeType>::ExpandType
pub fn __expand_gathered<T: Numeric, E: CubePrimitive<Scalar = T>>( scope: &Scope, tensor: &<Tensor<E> as CubeType>::ExpandType, space: Space, spec: TileSpec, coefficients: <Coords<u32> as CubeType>::ExpandType, offsets: <Coords<i32> as CubeType>::ExpandType, ) -> <GlobalOperand as CubeType>::ExpandType
tensor for a gather with a runtime affine map.
coefficients and offsets follow the field order; only their lengths are checked.
Sourcepub fn __expand_sink<T: Numeric>(
scope: &Scope,
sink: <ErasedTensor<T, WriteOnly> as CubeType>::ExpandType,
geometry: <RuntimeGeometry as CubeType>::ExpandType,
vector_size: usize,
space: Space,
spec: TileSpec,
write: Write,
) -> <GlobalOperand as CubeType>::ExpandType
pub fn __expand_sink<T: Numeric>( scope: &Scope, sink: <ErasedTensor<T, WriteOnly> as CubeType>::ExpandType, geometry: <RuntimeGeometry as CubeType>::ExpandType, vector_size: usize, space: Space, spec: TileSpec, write: Write, ) -> <GlobalOperand as CubeType>::ExpandType
An operand whose values are handed to sink instead of stored, under the stated geometry.
Under Accumulate the buffer must hold zero; under
Exclusive, anything: the first turn replaces it.
Sourcepub fn __expand_source<T: Numeric>(
scope: &Scope,
source: <ErasedTensor<T, ReadOnly> as CubeType>::ExpandType,
geometry: <RuntimeGeometry as CubeType>::ExpandType,
vector_size: usize,
space: Space,
spec: TileSpec,
) -> <GlobalOperand as CubeType>::ExpandType
pub fn __expand_source<T: Numeric>( scope: &Scope, source: <ErasedTensor<T, ReadOnly> as CubeType>::ExpandType, geometry: <RuntimeGeometry as CubeType>::ExpandType, vector_size: usize, space: Space, spec: TileSpec, ) -> <GlobalOperand as CubeType>::ExpandType
An operand whose values come from source instead of memory, under the stated geometry.
Sourcepub fn __expand_tile<T: Numeric>(
scope: &Scope,
this: <Self as CubeType>::ExpandType,
levels: Vec<Level>,
) -> <Tile as CubeType>::ExpandType
pub fn __expand_tile<T: Numeric>( scope: &Scope, this: <Self as CubeType>::ExpandType, levels: Vec<Level>, ) -> <Tile as CubeType>::ExpandType
This operand as a Tile at the top of levels.
Trait Implementations§
Source§impl CubeType for GlobalOperand
impl CubeType for GlobalOperand
type ExpandType = GlobalOperandExpand
Auto Trait Implementations§
impl Freeze for GlobalOperand
impl RefUnwindSafe for GlobalOperand
impl Send for GlobalOperand
impl Sync for GlobalOperand
impl Unpin for GlobalOperand
impl UnsafeUnpin for GlobalOperand
impl UnwindSafe for GlobalOperand
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