Skip to main content

ElementwiseOp

Enum ElementwiseOp 

Source
pub enum ElementwiseOp {
Show 25 variants Add, Sub, Mul, Div, Relu, Gelu, Sigmoid, Silu, Tanh, Neg, Abs, Sqrt, Rsqrt, Exp, Log, Scale, AddScalar, Ceil, Floor, HardSigmoid, HardSwish, Softplus, LeakyRelu, FusedAddRelu, FusedScaleAdd,
}
Expand description

Elementwise operation type.

Covers binary arithmetic, unary activations, unary math, and fused operations. Each variant determines the kernel signature (number of input/output pointers) and the PTX instruction sequence emitted in the kernel body.

Variants§

§

Add

Element-wise addition: c[i] = a[i] + b[i].

§

Sub

Element-wise subtraction: c[i] = a[i] - b[i].

§

Mul

Element-wise multiplication: c[i] = a[i] * b[i].

§

Div

Element-wise division: c[i] = a[i] / b[i].

§

Relu

Rectified linear unit: b[i] = max(0, a[i]).

§

Gelu

Gaussian error linear unit (tanh approximation): b[i] = 0.5 * a[i] * (1 + tanh(sqrt(2/pi) * (a[i] + 0.044715 * a[i]^3))).

§

Sigmoid

Sigmoid activation: b[i] = 1 / (1 + exp(-a[i])).

§

Silu

Sigmoid linear unit: b[i] = a[i] * sigmoid(a[i]).

§

Tanh

Hyperbolic tangent: b[i] = tanh(a[i]).

§

Neg

Arithmetic negation: b[i] = -a[i].

§

Abs

Absolute value: b[i] = |a[i]|.

§

Sqrt

Square root: b[i] = sqrt(a[i]).

§

Rsqrt

Reciprocal square root: b[i] = 1 / sqrt(a[i]).

§

Exp

Exponential: b[i] = exp(a[i]).

§

Log

Natural logarithm: b[i] = ln(a[i]).

§

Scale

Scalar scaling: b[i] = alpha * a[i].

§

AddScalar

Add scalar: b[i] = a[i] + scalar.

§

Ceil

Ceiling (round toward +inf): b[i] = ceil(a[i]).

§

Floor

Floor (round toward -inf): b[i] = floor(a[i]).

§

HardSigmoid

Hard sigmoid: b[i] = max(0, min(1, 0.2*a[i] + 0.5)).

§

HardSwish

Hard swish: b[i] = a[i] * max(0, min(6, a[i]+3)) / 6.

§

Softplus

Softplus: b[i] = ln(1 + exp(a[i])).

§

LeakyRelu

Leaky relu: b[i] = a[i] >= 0 ? a[i] : 0.01 * a[i].

§

FusedAddRelu

Fused add-relu: c[i] = relu(a[i] + b[i]).

§

FusedScaleAdd

Fused scale-add: c[i] = alpha * a[i] + beta * b[i].

Implementations§

Source§

impl ElementwiseOp

Source

pub const fn as_str(self) -> &'static str

Returns a short lowercase name suitable for kernel naming.

Source

pub const fn is_binary(self) -> bool

Returns true if this is a binary operation requiring two input arrays.

Source

pub const fn needs_scalar(self) -> bool

Returns true if this operation requires scalar parameter(s).

Trait Implementations§

Source§

impl Clone for ElementwiseOp

Source§

fn clone(&self) -> ElementwiseOp

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 ElementwiseOp

Source§

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

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

impl Hash for ElementwiseOp

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ElementwiseOp

Source§

fn eq(&self, other: &ElementwiseOp) -> 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 ElementwiseOp

Source§

impl Eq for ElementwiseOp

Source§

impl StructuralPartialEq for ElementwiseOp

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.