pub struct GemmOp {
pub m: usize,
pub n: usize,
pub k: usize,
}Expand description
C[m, n] = A[m, k] · B[n, k]^T (row-major, B already transposed
to head-major). Matches the Backend::gemm signature used by Linear.
Fields§
§m: usize§n: usize§k: usizeImplementations§
Source§impl GemmOp
impl GemmOp
Sourcepub fn expected_output_len(&self) -> Result<usize, String>
pub fn expected_output_len(&self) -> Result<usize, String>
Validate buffer sizes and the signed indices used by Metal/cuBLAS. These are arithmetic limits, not a guarantee of available device memory.
Examples found in repository?
examples/backend_numerics/config.rs (line 92)
77 fn expected_output_len(&self) -> Result<usize, String> {
78 match *self {
79 Self::MetalContext {
80 tokens,
81 intermediate,
82 k,
83 } => MetalContextOp {
84 tokens,
85 intermediate,
86 k,
87 }
88 .expected_output_len(),
89 Self::RmsNorm { tokens, dim, eps } => {
90 RmsNormOp { tokens, dim, eps }.expected_output_len()
91 }
92 Self::Gemm { m, n, k } => GemmOp { m, n, k }.expected_output_len(),
93 Self::SiluMul {
94 tokens,
95 intermediate,
96 } => SiluMulOp {
97 tokens,
98 intermediate,
99 }
100 .expected_output_len(),
101 }
102 }Trait Implementations§
Auto Trait Implementations§
impl Freeze for GemmOp
impl RefUnwindSafe for GemmOp
impl Send for GemmOp
impl Sync for GemmOp
impl Unpin for GemmOp
impl UnsafeUnpin for GemmOp
impl UnwindSafe for GemmOp
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
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> ⓘ
Converts
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> ⓘ
Converts
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