pub enum OpDesc<'a, T: Scalar> {
Gemm(GemmDescriptor<'a, T>),
Svd(SvdDescriptor<'a, T>),
Qr(QrDescriptor<'a, T>),
Lq(LqDescriptor<'a, T>),
Eigh(EighDescriptor<'a, T>),
Eig(EigDescriptor<'a, T>),
Solve(SolveDescriptor<'a, T>),
Transpose(TransposeDescriptor<'a, T>),
}Expand description
One generic-descriptor backend operation, tagged by which op it is.
This is the unit that DispatchScalar::dispatch_op carries from a generic
T: Scalar context down to a concrete per-type kernel. Bundling every op
into one enum lets a backend expose a single typed entry point per scalar
(see ScalarKernels) instead of one per (op, type) pair, which is what
makes type-directed dispatch possible without reinterpreting a
Descriptor<T> into a Descriptor<concrete> through unsafe.
Variants§
Gemm(GemmDescriptor<'a, T>)
GEMM operation.
Svd(SvdDescriptor<'a, T>)
Thin SVD operation.
Qr(QrDescriptor<'a, T>)
Thin QR operation.
Lq(LqDescriptor<'a, T>)
Thin LQ operation.
Eigh(EighDescriptor<'a, T>)
Self-adjoint eigendecomposition operation.
Eig(EigDescriptor<'a, T>)
General eigendecomposition operation.
Solve(SolveDescriptor<'a, T>)
Linear-solve operation.
Transpose(TransposeDescriptor<'a, T>)
Tensor-transpose operation.
Auto Trait Implementations§
impl<'a, T> !UnwindSafe for OpDesc<'a, T>
impl<'a, T> Freeze for OpDesc<'a, T>where
T: Freeze,
impl<'a, T> RefUnwindSafe for OpDesc<'a, T>
impl<'a, T> Send for OpDesc<'a, T>
impl<'a, T> Sync for OpDesc<'a, T>
impl<'a, T> Unpin for OpDesc<'a, T>where
T: Unpin,
impl<'a, T> UnsafeUnpin for OpDesc<'a, T>where
T: UnsafeUnpin,
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