Skip to main content

OpKind

Enum OpKind 

Source
pub enum OpKind {
    MatMul,
    MatMulId,
    Norm,
    Rope,
    Elementwise,
    Copy,
    Gather,
    Sdpa,
    Softmax,
    MoeGate,
    Other,
}
Expand description

Classification of a compute operation for reorder safety analysis.

Operations marked as reorderable can be freely reordered by the graph optimizer (Phase 4e.3) as long as their data dependencies allow it. Non-reorderable operations have side effects or dependencies that require them to stay in their original sequential position.

Variants§

§

MatMul

Matrix multiplication (reorderable).

§

MatMulId

Expert-routed matrix multiplication (reorderable).

§

Norm

Normalization — RMS norm, layer norm (reorderable).

§

Rope

Rotary position embedding (reorderable).

§

Elementwise

Elementwise ops — add, mul, scale, gelu, softcap, etc. (reorderable).

§

Copy

Memory copy — KV cache copy, embedding gather (reorderable).

§

Gather

Gather/scatter (reorderable).

§

Sdpa

Scaled dot-product attention (NOT reorderable).

§

Softmax

Softmax (NOT reorderable).

§

MoeGate

MoE gate with CPU readback dependency (NOT reorderable).

§

Other

Anything else (NOT reorderable).

Implementations§

Source§

impl OpKind

Source

pub fn is_reorderable(&self) -> bool

Whether this op kind is safe to reorder in the graph optimizer.

Trait Implementations§

Source§

impl Clone for OpKind

Source§

fn clone(&self) -> OpKind

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 Debug for OpKind

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for OpKind

Source§

fn eq(&self, other: &OpKind) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for OpKind

Source§

impl Eq for OpKind

Source§

impl StructuralPartialEq for OpKind

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.