PrimitiveType

Enum PrimitiveType 

Source
#[repr(i32)]
pub enum PrimitiveType {
Show 28 variants Invalid = 0, Pred = 1, S2 = 26, S4 = 21, S8 = 2, S16 = 3, S32 = 4, S64 = 5, U2 = 27, U4 = 22, U8 = 6, U16 = 7, U32 = 8, U64 = 9, F16 = 10, F32 = 11, Bf16 = 16, F64 = 12, F8e5m2 = 19, F8e4m3fn = 20, F8e4m3b11fnuz = 23, F8e5m2fnuz = 24, F8e4m3fnuz = 25, C64 = 15, C128 = 18, Tuple = 13, OpaqueType = 14, Token = 17,
}
Expand description

Primitive types are the individual values that can be held in rectangular multidimensional arrays. A description of the rectangular multidimensional array dimensions / primitive type is given by Shape, below.

LINT.IfChange

Variants§

§

Invalid = 0

Invalid primitive type to serve as default.

§

Pred = 1

Predicates are two-state booleans.

§

S2 = 26

Signed integral values of fixed width.

§

S4 = 21

§

S8 = 2

§

S16 = 3

§

S32 = 4

§

S64 = 5

§

U2 = 27

Unsigned integral values of fixed width.

§

U4 = 22

§

U8 = 6

§

U16 = 7

§

U32 = 8

§

U64 = 9

§

F16 = 10

Floating-point values of fixed width.

Note: if f16s are not natively supported on the device, they will be converted to f16 from f32 at arbirary points in the computation.

§

F32 = 11

§

Bf16 = 16

Truncated 16 bit floating-point format. This is similar to IEEE’s 16 bit floating-point format, but uses 1 bit for the sign, 8 bits for the exponent and 7 bits for the mantissa.

§

F64 = 12

§

F8e5m2 = 19

FP8 dtypes, as described in this paper: https://arxiv.org/abs/2209.05433

F8E5M2 has 5 exponent bits and 2 mantissa bits, and is similar to the existing IEEE types.

F8E4M3FN has 4 exponent bits and 3 mantissa bits. The “FN” means only Finite and NaN values are supported. Unlike IEEE types, infinities are not supported. NaN is represented when the exponent and mantissa bits are all 1s. All other values are finite.

F8E4M3B11FNUZ has 4 exponent bits and 3 mantissa bits and a bias of 11. The “FNUZ” means only Finite and NaN values are supported; zero is unsigned. Unlike IEEE types, infinities are not supported. NaN is represented when the exponent and mantissa bits are all 0s with a sign bit of 1. All other values are finite.

Support for these dtypes is under development. They do not yet work properly in most cases. TODO(b/259609697): Fully support FP8.

§

F8e4m3fn = 20

§

F8e4m3b11fnuz = 23

§

F8e5m2fnuz = 24

FP8 dtypes, as described in this paper: https://arxiv.org/abs/2206.02915

F8E5M2FNUZ has 5 exponent bits and 2 mantissa bits. F8E4M3FNUZ has 4 exponent bits and 3 mantissa bits.

The “FNUZ” means only Finite and NaN values are supported; zero is unsigned. Unlike IEEE types, infinities are not supported. NaN is represented when the exponent and mantissa bits are all 0s with a sign bit of 1. All other values are finite.

These differences mean there’s an additional exponent value available. To keep the same dynamic range as an IEEE-like FP8 type, the exponent is biased one more than would be expected given the number of exponent bits (8 for Float8E4M3FNUZ and 16 for Float8E5M2FNUZ).

§

F8e4m3fnuz = 25

§

C64 = 15

Complex values of fixed width.

Paired F32 (real, imag), as in std::complex.

§

C128 = 18

Paired F64 (real, imag), as in std::complex.

§

Tuple = 13

A tuple is a polymorphic sequence; e.g. a shape that holds different sub-shapes. They are used for things like returning multiple values from a computation; e.g. a computation that returns weights and biases may have a signature that results in a tuple like (f32[784x2000], f32[2000])

If a shape proto has the tuple element type, it may not have any entries in the dimensions field.

§

OpaqueType = 14

An opaque type used for passing context-specific data to a custom operation. Shapes of this primitive type will have empty dimensions and tuple_shapes fields.

(OPAQUE would be a better name for this identifier, but that conflicts with a macro defined in windows.h.)

§

Token = 17

A token type threaded between side-effecting operations. Shapes of this primitive type will have empty dimensions and tuple_shapes fields.

Implementations§

Source§

impl PrimitiveType

Source

pub fn is_valid(value: i32) -> bool

Returns true if value is a variant of PrimitiveType.

Source

pub fn from_i32(value: i32) -> Option<PrimitiveType>

👎Deprecated: Use the TryFrom<i32> implementation instead

Converts an i32 to a PrimitiveType, or None if value is not a valid variant.

Source§

impl PrimitiveType

Source

pub fn as_str_name(&self) -> &'static str

String value of the enum field names used in the ProtoBuf definition.

The values are not transformed in any way and thus are considered stable (if the ProtoBuf definition does not change) and safe for programmatic use.

Source

pub fn from_str_name(value: &str) -> Option<Self>

Creates an enum from field names used in the ProtoBuf definition.

Trait Implementations§

Source§

impl Clone for PrimitiveType

Source§

fn clone(&self) -> PrimitiveType

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PrimitiveType

Source§

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

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

impl Default for PrimitiveType

Source§

fn default() -> PrimitiveType

Returns the “default value” for a type. Read more
Source§

impl From<PrimitiveType> for i32

Source§

fn from(value: PrimitiveType) -> i32

Converts to this type from the input type.
Source§

impl Hash for PrimitiveType

Source§

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

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

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 Ord for PrimitiveType

Source§

fn cmp(&self, other: &PrimitiveType) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for PrimitiveType

Source§

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

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

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 PartialOrd for PrimitiveType

Source§

fn partial_cmp(&self, other: &PrimitiveType) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl TryFrom<i32> for PrimitiveType

Source§

type Error = UnknownEnumValue

The type returned in the event of a conversion error.
Source§

fn try_from(value: i32) -> Result<PrimitiveType, UnknownEnumValue>

Performs the conversion.
Source§

impl Copy for PrimitiveType

Source§

impl Eq for PrimitiveType

Source§

impl StructuralPartialEq for PrimitiveType

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

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
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.