pub struct RmsNormOp {
pub tokens: usize,
pub dim: usize,
pub eps: f32,
}Expand description
One concrete rms_norm invocation. Inputs:
x: tokens × dim activationw: dim weight (per-channel scale)eps: the usual RMSNorm epsilon
Output: tokens × dim. This fixture uses F32 buffers on CPU and Metal; CUDA’s existing default buffers are F16. Host results are returned as f32.
Fields§
§tokens: usize§dim: usize§eps: f32Implementations§
Source§impl RmsNormOp
impl RmsNormOp
Sourcepub fn validate(&self) -> Result<(), String>
pub fn validate(&self) -> Result<(), String>
Validate the shared fixture before allocation or backend submission.
Sourcepub fn expected_output_len(&self) -> Result<usize, String>
pub fn expected_output_len(&self) -> Result<usize, String>
Checked host result size, including the kernels’ signed 32-bit row and column indices and the final column-loop increment. These are kernel/host limits, not a promise that the allocation fits available device memory.
Examples found in repository?
examples/backend_numerics/config.rs (line 90)
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 RmsNormOp
impl RefUnwindSafe for RmsNormOp
impl Send for RmsNormOp
impl Sync for RmsNormOp
impl Unpin for RmsNormOp
impl UnsafeUnpin for RmsNormOp
impl UnwindSafe for RmsNormOp
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