Mojo struct
DType
@register_passable(trivial)
struct DType
Represents DType and provides methods for working with it.
Aliases
-
type = dtype
: -
invalid
: Represents an invalid or unknown data type. -
bool
: Represents a boolean data type. -
int8
: Represents a signed integer type whose bitwidth is 8. -
uint8
: Represents an unsigned integer type whose bitwidth is 8. -
int16
: Represents a signed integer type whose bitwidth is 16. -
uint16
: Represents an unsigned integer type whose bitwidth is 16. -
int32
: Represents a signed integer type whose bitwidth is 32. -
uint32
: Represents an unsigned integer type whose bitwidth is 32. -
int64
: Represents a signed integer type whose bitwidth is 64. -
uint64
: Represents an unsigned integer type whose bitwidth is 64. -
int128 = si128
: Represents a signed integer type whose bitwidth is 128. -
uint128 = ui128
: Represents an unsigned integer type whose bitwidth is 128. -
int256 = si256
: Represents a signed integer type whose bitwidth is 256. -
uint256 = ui256
: Represents an unsigned integer type whose bitwidth is 256. -
float8_e5m2
: Represents the 8-bit E5M2 floating point format from the OFP8 standard, encoded asseeeeemm
: - (s)ign: 1 bit - (e)xponent: 5 bits - (m)antissa: 2 bits - exponent bias: 15 - nan: {0,1}11111{01,10,11} - inf: 01111100 - -inf: 11111100 - -0: 10000000 -
float8_e5m2fnuz
: Represents an 8-bit floating point format, encoded asseeeeemm
: - (s)ign: 1 bit - (e)xponent: 5 bits - (m)antissa: 2 bits - exponent bias: 16 - nan: 10000000 - fn: finite (no inf or -inf encodings) - uz: unsigned zero (no -0 encoding) -
float8_e4m3fn
: Represents the E4M3 floating point format defined in the OFP8 standard. This type is named differently across libraries and vendors, for example:- Mojo, PyTorch, JAX, and LLVM refer to it as
e4m3fn
. - OCP, NVIDIA CUDA, and AMD ROCm refer to it as
e4m3
.
In these contexts, they are all referring to the same finite type specified in the OFP8 standard above, encoded as
seeeemmm
:- (s)ign: 1 bit
- (e)xponent: 4 bits
- (m)antissa: 3 bits
- exponent bias: 7
- nan: 01111111, 11111111
- -0: 10000000
- fn: finite (no inf or -inf encodings)
- Mojo, PyTorch, JAX, and LLVM refer to it as
-
float8_e3m4
: Represents an 8-bit e3m4 floating point format, encoded asseeemmmm
: - (s)ign: 1 bit - (e)xponent: 3 bits - (m)antissa: 4 bits - exponent bias: 3 - nan: 00111111, 11111111 - -0: 10000000 - fn: finite (no inf or -inf encodings) -
float8_e4m3fnuz
: Represents an 8-bit e4m3fnuz floating point format, encoded asseeeemmm
: - (s)ign: 1 bit - (e)xponent: 4 bits - (m)antissa: 3 bits - exponent bias: 8 - nan: 10000000 - fn: finite (no inf or -inf encodings) - uz: unsigned zero (no -0 encoding) -
bfloat16
: Represents a brain floating point value whose bitwidth is 16. -
float16
: Represents an IEEE754-2008binary16
floating point value. -
float32
: Represents an IEEE754-2008binary32
floating point value. -
tensor_float32
: Represents a special floating point format supported by NVIDIA Tensor Cores, with the same range as float32 and reduced precision (>=10 bits). Note that this dtype is only available on NVIDIA GPUs. -
float64
: Represents an IEEE754-2008binary64
floating point value. -
index
: Represents an integral type whose bitwidth is the maximum integral value on the system.
Fields
- value (
dtype
): The underlying storage for the DType value.
Implemented traits
AnyType
,
CollectionElement
,
CollectionElementNew
,
Copyable
,
EqualityComparable
,
EqualityComparableCollectionElement
,
ExplicitlyCopyable
,
Hashable
,
KeyElement
,
Movable
,
Representable
,
Stringable
,
UnknownDestructibility
,
Writable
,
_HashableWithHasher
Methods
__init__
@implicit
__init__(value: dtype) -> Self
Construct a DType from MLIR dtype.
Args:
- value (
dtype
): The MLIR dtype.
__eq__
__eq__(self, rhs: Self) -> Bool
Compares one DType to another for equality.
Args:
- rhs (
Self
): The DType to compare against.
Returns:
True if the DTypes are the same and False otherwise.
__ne__
__ne__(self, rhs: Self) -> Bool
Compares one DType to another for inequality.
Args:
- rhs (
Self
): The DType to compare against.
Returns:
False if the DTypes are the same and True otherwise.
__is__
__is__(self, rhs: Self) -> Bool
Compares one DType to another for equality.
Args:
- rhs (
Self
): The DType to compare against.
Returns:
True if the DTypes are the same and False otherwise.
__isnot__
__isnot__(self, rhs: Self) -> Bool
Compares one DType to another for inequality.
Args:
- rhs (
Self
): The DType to compare against.
Returns:
True if the DTypes are the same and False otherwise.
copy
copy(self) -> Self
Copy this DType.
Returns:
A copy of the value.
__str__
__str__(self) -> String
Gets the name of the DType.
Returns:
The name of the dtype.
write_to
write_to[W: Writer](self, mut writer: W)
Formats this dtype to the provided Writer.
Parameters:
- W (
Writer
): A type conforming to the Writable trait.
Args:
- writer (
W
): The object to write to.
__repr__
__repr__(self) -> String
Gets the representation of the DType e.g. "DType.float32"
.
Returns:
The representation of the dtype.
get_value
get_value(self) -> dtype
Gets the associated internal kgen.dtype value.
Returns:
The kgen.dtype value.
__hash__
__hash__(self) -> UInt
Return a 64-bit hash for this DType
value.
Returns:
A 64-bit integer hash of this DType
value.
__hash__[H: _Hasher](self, mut hasher: H)
Updates hasher with this DType
value.
Parameters:
- H (
_Hasher
): The hasher type.
Args:
- hasher (
H
): The hasher instance.
is_unsigned
is_unsigned(self) -> Bool
Returns True if the type parameter is unsigned and False otherwise.
Returns:
Returns True if the input type parameter is unsigned.
is_signed
is_signed(self) -> Bool
Returns True if the type parameter is signed and False otherwise.
Returns:
Returns True if the input type parameter is signed.
is_integral
is_integral(self) -> Bool
Returns True if the type parameter is an integer and False otherwise.
Returns:
Returns True if the input type parameter is an integer.
is_floating_point
is_floating_point(self) -> Bool
Returns True if the type parameter is a floating-point and False otherwise.
Returns:
Returns True if the input type parameter is a floating-point.
is_float8
is_float8(self) -> Bool
Returns True if the dtype is a 8bit-precision floating point type, e.g. float8_e5m2, float8_e5m2fnuz, float8_e4m3fn and float8_e4m3fnuz.
Returns:
True if the dtype is a 8bit-precision float, false otherwise.
is_half_float
is_half_float(self) -> Bool
Returns True if the dtype is a half-precision floating point type, e.g. either fp16 or bf16.
Returns:
True if the dtype is a half-precision float, false otherwise..
is_numeric
is_numeric(self) -> Bool
Returns True if the type parameter is numeric (i.e. you can perform arithmetic operations on).
Returns:
Returns True if the input type parameter is either integral or floating-point.
sizeof
sizeof(self) -> Int
Returns the size in bytes of the current DType.
Returns:
Returns the size in bytes of the current DType.
bitwidth
bitwidth(self) -> Int
Returns the size in bits of the current DType.
Returns:
Returns the size in bits of the current DType.
dispatch_integral
dispatch_integral[: origin.set, //, func: fn[DType]() capturing -> None](self)
Dispatches an integral function corresponding to the current DType.
Constraints:
DType must be integral.
Parameters:
- func (
fn[DType]() capturing -> None
): A parametrized on dtype function to dispatch.
dispatch_floating
dispatch_floating[: origin.set, //, func: fn[DType]() capturing -> None](self)
Dispatches a floating-point function corresponding to the current DType.
Constraints:
DType must be floating-point or integral.
Parameters:
- func (
fn[DType]() capturing -> None
): A parametrized on dtype function to dispatch.
dispatch_arithmetic
dispatch_arithmetic[: origin.set, //, func: fn[DType]() capturing -> None](self)
Dispatches a function corresponding to the current DType.
Parameters:
- func (
fn[DType]() capturing -> None
): A parametrized on dtype function to dispatch.
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!