pub struct Accelerated;
Trait Implementations§
Source§impl MatmulConfigFactory for Accelerated
impl MatmulConfigFactory for Accelerated
type Input = TileMatmulConfigInput
Source§fn check_config(config: &Self::Config) -> Result<(), InvalidConfigError>
fn check_config(config: &Self::Config) -> Result<(), InvalidConfigError>
Asserts that the configuration for this matmul will lead to a valid computation
Source§fn check_availability<R: Runtime, MP: MatmulPrecision>(
client: &ComputeClient<R::Server, R::Channel>,
config: &Self::Config,
) -> Result<(), MatmulAvailabilityError>
fn check_availability<R: Runtime, MP: MatmulPrecision>( client: &ComputeClient<R::Server, R::Channel>, config: &Self::Config, ) -> Result<(), MatmulAvailabilityError>
Checks if the client can handle the features used in this computation
Source§fn make_config(
input: Self::Input,
problem: &MatmulProblem,
cube_dim: &CubeDim,
_cube_count: &CubeCount,
_quantized: bool,
) -> Self::Config
fn make_config( input: Self::Input, problem: &MatmulProblem, cube_dim: &CubeDim, _cube_count: &CubeCount, _quantized: bool, ) -> Self::Config
Create config for this matmul, given launch information
Source§impl<MP: MatmulPrecision> TileMatmul<MP> for Accelerated
impl<MP: MatmulPrecision> TileMatmul<MP> for Accelerated
type Config = Config
Source§type Lhs = Matrix<<MP as MatmulPrecision>::ES>
type Lhs = Matrix<<MP as MatmulPrecision>::ES>
Contains LHS data that can be split across the units
Source§type Rhs = Matrix<<MP as MatmulPrecision>::ES>
type Rhs = Matrix<<MP as MatmulPrecision>::ES>
Contains RHS data that can be split across the units
Source§type Accumulator = Matrix<<MP as MatmulPrecision>::EA>
type Accumulator = Matrix<<MP as MatmulPrecision>::EA>
Contains output data that can be split across the units
Source§fn execute(
lhs: &Self::Lhs,
rhs: &Self::Rhs,
out: &mut Self::Accumulator,
_config: Config,
)
fn execute( lhs: &Self::Lhs, rhs: &Self::Rhs, out: &mut Self::Accumulator, _config: Config, )
Executes the matrix multiplication of LHS and RHS, adding the result to the output
Source§fn fill_lhs(tile: &Tile<MP::ES>, lhs: &mut Self::Lhs, config: Config)
fn fill_lhs(tile: &Tile<MP::ES>, lhs: &mut Self::Lhs, config: Config)
Fill the container of LHS with data
Source§fn fill_rhs(tile: &Tile<MP::ES>, rhs: &mut Self::Rhs, config: Config)
fn fill_rhs(tile: &Tile<MP::ES>, rhs: &mut Self::Rhs, config: Config)
Fill the container of RHS with data
Source§fn fill_accumulator(
tile: &Tile<MP::EA>,
acc: &mut Self::Accumulator,
config: Config,
)
fn fill_accumulator( tile: &Tile<MP::EA>, acc: &mut Self::Accumulator, config: Config, )
Fill the accumulator with data
Source§fn read_accumulator<C: Numeric>(
out: &Self::Accumulator,
slice: &mut SliceMut<Line<C>>,
config: Config,
)
fn read_accumulator<C: Numeric>( out: &Self::Accumulator, slice: &mut SliceMut<Line<C>>, config: Config, )
Write the content of the output container to the given slice
Source§fn allocate_accumulator(config: Self::Config) -> Self::Accumulator
fn allocate_accumulator(config: Self::Config) -> Self::Accumulator
Allocate the container to receive the execution output. Read more
Source§fn zero_accumulator(acc: &mut Self::Accumulator, _config: Self::Config)
fn zero_accumulator(acc: &mut Self::Accumulator, _config: Self::Config)
Fill the accumulator with zeros.
fn __expand_execute( context: &mut Scope, lhs: <Self::Lhs as CubeType>::ExpandType, rhs: <Self::Rhs as CubeType>::ExpandType, out: <Self::Accumulator as CubeType>::ExpandType, _config: Config, ) -> <() as CubeType>::ExpandType
fn __expand_allocate_lhs( context: &mut Scope, config: Config, ) -> <Self::Lhs as CubeType>::ExpandType
fn __expand_allocate_rhs( context: &mut Scope, config: Config, ) -> <Self::Rhs as CubeType>::ExpandType
fn __expand_fill_lhs( context: &mut Scope, tile: <Tile<MP::ES> as CubeType>::ExpandType, lhs: <Self::Lhs as CubeType>::ExpandType, config: Config, ) -> <() as CubeType>::ExpandType
fn __expand_fill_rhs( context: &mut Scope, tile: <Tile<MP::ES> as CubeType>::ExpandType, rhs: <Self::Rhs as CubeType>::ExpandType, config: Config, ) -> <() as CubeType>::ExpandType
fn __expand_fill_accumulator( context: &mut Scope, tile: <Tile<MP::EA> as CubeType>::ExpandType, acc: <Self::Accumulator as CubeType>::ExpandType, config: Config, ) -> <() as CubeType>::ExpandType
fn __expand_read_accumulator<C: Numeric>( context: &mut Scope, out: <Self::Accumulator as CubeType>::ExpandType, slice: <SliceMut<Line<C>> as CubeType>::ExpandType, config: Config, ) -> <() as CubeType>::ExpandType
fn __expand_allocate_accumulator( context: &mut Scope, config: Self::Config, ) -> <Self::Accumulator as CubeType>::ExpandType
fn __expand_zero_accumulator( context: &mut Scope, acc: <Self::Accumulator as CubeType>::ExpandType, _config: Self::Config, ) -> <() as CubeType>::ExpandType
Source§impl TileMatmulFamily for Accelerated
impl TileMatmulFamily for Accelerated
type Matmul<MP: MatmulPrecision> = Accelerated
fn tile_shape(config: &Self::Config) -> MatmulSize
fn requires_tensor_cores() -> bool
Auto Trait Implementations§
impl Freeze for Accelerated
impl RefUnwindSafe for Accelerated
impl Send for Accelerated
impl Sync for Accelerated
impl Unpin for Accelerated
impl UnwindSafe for Accelerated
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
Mutably borrows from an owned value. Read more