Struct TensorArgs

Source
pub struct TensorArgs;
Expand description

Type implementing MatmulArgs where all inputs and the output are materialized tensors.

Other types might implement MatmulArgs for fused matrix multiplication kernels.

Trait Implementations§

Source§

impl Clone for TensorArgs

Source§

fn clone(&self) -> TensorArgs

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl MatmulArgs for TensorArgs

Source§

fn read_window_rhs<EI: Numeric, EO: Numeric>( state: &Self::State<EI, EO>, start: u32, end: u32, ) -> Slice<Line<EI>>

Read the line of the rhs tensor using the state at the given coordinate.

Source§

type Output<EO: Numeric> = Tensor<Line<EO>>

Type used for the output.
Source§

type Input<EI: Numeric> = TensorInputs<EI>

Type used for the input.
Source§

type State<EI: Numeric, EO: Numeric> = (*const Tensor<Line<EI>>, *const Tensor<Line<EI>>, *mut Tensor<Line<EO>>)

Inner state that is used to create tensor inputs and tensor outputs .
Source§

fn init_state<EI: Numeric, EO: Numeric>( input: &Self::Input<EI>, output: &mut Self::Output<EO>, ) -> Self::State<EI, EO>

Init the state.
Source§

fn read_lhs<EI: Numeric, EO: Numeric>( state: &Self::State<EI, EO>, coordinate: u32, ) -> Line<EI>

Read the line of the lhs tensor using the state at the given coordinate.
Source§

fn read_rhs<EI: Numeric, EO: Numeric>( state: &Self::State<EI, EO>, coordinate: u32, ) -> Line<EI>

Read the line of the rhs tensor using the state at the given coordinate.
Source§

fn read_window_lhs<EI: Numeric, EO: Numeric>( state: &Self::State<EI, EO>, start: u32, end: u32, ) -> Slice<Line<EI>>

Read the line of the lhs tensor using the state at the given coordinate.
Source§

fn as_tensor_map_lhs<EI: Numeric, EO: Numeric>( _state: &Self::State<EI, EO>, ) -> TensorMap<EI>

Reinterpret lhs as tensor map
Source§

fn as_tensor_map_rhs<EI: Numeric, EO: Numeric>( _state: &Self::State<EI, EO>, ) -> TensorMap<EI>

Reinterpret rhs as tensor map
Source§

fn shape_lhs<EI: Numeric, EO: Numeric>( state: &Self::State<EI, EO>, dim: u32, ) -> u32

Get the shape of the lhs tensor using the state.
Source§

fn shape_rhs<EI: Numeric, EO: Numeric>( state: &Self::State<EI, EO>, dim: u32, ) -> u32

Get the shape of the rhs tensor using the state.
Source§

fn shape_out<EI: Numeric, EO: Numeric>( state: &Self::State<EI, EO>, dim: u32, ) -> u32

Get the shape of the out tensor using the state.
Source§

fn stride_lhs<EI: Numeric, EO: Numeric>( state: &Self::State<EI, EO>, dim: u32, ) -> u32

Get the stride of the lhs tensor using the state.
Source§

fn stride_rhs<EI: Numeric, EO: Numeric>( state: &Self::State<EI, EO>, dim: u32, ) -> u32

Get the stride of the rhs tensor using the state.
Source§

fn stride_out<EI: Numeric, EO: Numeric>( state: &Self::State<EI, EO>, dim: u32, ) -> u32

Get the stride of the out tensor using the state.
Source§

fn write_out<EI: Numeric, EO: Numeric>( state: &mut Self::State<EI, EO>, coordinate: u32, value: Line<EO>, )

Write the line to the output at the given coordinate using the state.
Source§

fn rank_lhs<EI: Numeric, EO: Numeric>(state: &Self::State<EI, EO>) -> u32

Get the rank of the lhs tensor using the state.
Source§

fn rank_rhs<EI: Numeric, EO: Numeric>(state: &Self::State<EI, EO>) -> u32

Get the rank of the rhs tensor using the state.
Source§

fn rank_out<EI: Numeric, EO: Numeric>(state: &Self::State<EI, EO>) -> u32

Get the rank of the out tensor using the state.
Source§

fn len_lhs<EI: Numeric, EO: Numeric>(state: &Self::State<EI, EO>) -> u32

Get the length of the lhs tensor using the state.
Source§

fn len_rhs<EI: Numeric, EO: Numeric>(state: &Self::State<EI, EO>) -> u32

Get the length of the rhs tensor using the state.
Source§

fn len_out<EI: Numeric, EO: Numeric>(state: &Self::State<EI, EO>) -> u32

Get the length of the out tensor using the state.
Source§

fn buffer_len_lhs<EI: Numeric, EO: Numeric>(state: &Self::State<EI, EO>) -> u32

Get the buffer length of the lhs tensor using the state.
Source§

fn buffer_len_rhs<EI: Numeric, EO: Numeric>(state: &Self::State<EI, EO>) -> u32

Get the buffer length of the rhs tensor using the state.
Source§

fn buffer_len_out<EI: Numeric, EO: Numeric>(state: &Self::State<EI, EO>) -> u32

Get the buffer length of the out tensor using the state.
Source§

fn quantization<MP: MatmulPrecision>( state: &Self::State<MP::EI, MP::EO>, ) -> Quantization<MP>

It is the responsibility of the caller to ensure it is safe to call this function. That is, when a matmul is indeed quantized. Else, it will most likely results in out-of-bound memory access.
Source§

fn __expand_init_state<EI: Numeric, EO: Numeric>( context: &mut Scope, input: <Self::Input<EI> as CubeType>::ExpandType, output: <Self::Output<EO> as CubeType>::ExpandType, ) -> <Self::State<EI, EO> as CubeType>::ExpandType

Source§

fn __expand_read_lhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, coordinate: <u32 as CubeType>::ExpandType, ) -> <Line<EI> as CubeType>::ExpandType

Source§

fn __expand_read_rhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, coordinate: <u32 as CubeType>::ExpandType, ) -> <Line<EI> as CubeType>::ExpandType

Source§

fn __expand_read_window_lhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, start: <u32 as CubeType>::ExpandType, end: <u32 as CubeType>::ExpandType, ) -> <Slice<Line<EI>> as CubeType>::ExpandType

Source§

fn __expand_read_window_rhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, start: <u32 as CubeType>::ExpandType, end: <u32 as CubeType>::ExpandType, ) -> <Slice<Line<EI>> as CubeType>::ExpandType

Source§

fn __expand_as_tensor_map_lhs<EI: Numeric, EO: Numeric>( context: &mut Scope, _state: <Self::State<EI, EO> as CubeType>::ExpandType, ) -> <TensorMap<EI> as CubeType>::ExpandType

Source§

fn __expand_as_tensor_map_rhs<EI: Numeric, EO: Numeric>( context: &mut Scope, _state: <Self::State<EI, EO> as CubeType>::ExpandType, ) -> <TensorMap<EI> as CubeType>::ExpandType

Source§

fn __expand_shape_lhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, dim: <u32 as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_shape_rhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, dim: <u32 as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_shape_out<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, dim: <u32 as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_stride_lhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, dim: <u32 as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_stride_rhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, dim: <u32 as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_stride_out<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, dim: <u32 as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_write_out<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, coordinate: <u32 as CubeType>::ExpandType, value: <Line<EO> as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType

Source§

fn __expand_rank_lhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_rank_rhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_rank_out<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_len_lhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_len_rhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_len_out<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_buffer_len_lhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_buffer_len_rhs<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_buffer_len_out<EI: Numeric, EO: Numeric>( context: &mut Scope, state: <Self::State<EI, EO> as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source§

fn __expand_quantization<MP: MatmulPrecision>( context: &mut Scope, state: <Self::State<MP::EI, MP::EO> as CubeType>::ExpandType, ) -> <Quantization<MP> as CubeType>::ExpandType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V