IMPORTANT: To view this page as Markdown, append `.md` to the URL (e.g. /get-started.md). For the complete documentation index, see llms.txt.
Skip to main content
For the complete documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /get-started.md).

Mojo struct

PointerStorage

struct PointerStorage[*, element_width: Int = Int(1)]

Implements TensorOps backed by a raw UnsafePointer.

PointerStorage is the default storage policy for TileTensor. Its StorageType handle is a plain UnsafePointer, and every operation is expressed directly in terms of the underlying pointer.

Parameters​

  • ​element_width (Int): Number of scalar elements per logical element. A value of 1 (the default) is a non-vectorized tensor; larger values describe a vectorized view whose logical elements are SIMD vectors.

Implemented traits​

AnyType, ImplicitlyDeletable, TensorOps, TensorStorage

comptime members​

element_size​

comptime element_size = element_width

Number of scalar elements per logical element (alias of element_width).

OffsetResultType​

comptime OffsetResultType[offset_types: TypeList[values]] = PointerStorage[element_width=element_width]

The storage type produced by offsetting with a given coordinate.

Offsetting never changes the storage policy, so this is Self.

Parameters​

  • ​offset_types (TypeList[values]): The coordinate element types of the applied offset.

StorageType​

comptime StorageType[mut: Bool, //, dtype: DType, origin: Origin[mut=mut], address_space: AddressSpace] = Pointer[SIMD[dtype, element_width], origin, address_space=address_space]

A raw UnsafePointer to Scalar[dtype] borrowing the storage.

Parameters​

  • ​mut (Bool): The mutability of the borrowed storage, inferred from origin.
  • ​dtype (DType): The element data type of the borrowed storage.
  • ​origin (Origin[mut=mut]): The origin tracking the lifetime of the borrowed storage.
  • ​address_space (AddressSpace): The address space the borrowed storage resides in.

Methods​

write_type_name_to​

static def write_type_name_to(mut writer: T)

Writes the storage type name representation to the writer.

Args:

  • ​writer (T): The Writer to output to.

unsafe_cast​

static def unsafe_cast[to_mut: Bool, //, to_dtype: DType, to_origin: Origin[mut=to_mut], to_address_space: AddressSpace](storage: Pointer[SIMD[dtype, element_width], address_space=storage.address_space]) -> Pointer[SIMD[to_dtype, element_width], to_origin, address_space=to_address_space]

Reinterprets a storage handle with new type parameters.

Parameters:

  • ​to_mut (Bool): The mutability of the origin.
  • ​to_dtype (DType): The element data type to reinterpret the storage as.
  • ​to_origin (Origin[mut=to_mut]): The origin to reinterpret the storage as.
  • ​to_address_space (AddressSpace): The address space to reinterpret the storage as.

Args:

  • ​storage (Pointer[SIMD[dtype, element_width], address_space=storage.address_space]): The storage to reinterpret.

Returns:

Pointer[SIMD[to_dtype, element_width], to_origin, address_space=to_address_space]: A handle referring to the same storage, viewed with the new type parameters.

load​

static def load[dtype: DType, //, width: SIMDLength, alignment: Int, invariant: Bool = False, non_temporal: Bool = False](storage: Pointer[SIMD[dtype, element_width], address_space=storage.address_space]) -> SIMD[dtype, width]

Loads a SIMD value from the storage.

Parameters:

  • ​dtype (DType): The element data type of the storage.
  • ​width (SIMDLength): The number of elements to load.
  • ​alignment (Int): The alignment guarantee for the load.
  • ​invariant (Bool): If True, the compiler may assume the memory won't be modified during the kernel, enabling load hoisting and caching.
  • ​non_temporal (Bool): If True, indicates the data will not be reused soon, allowing the hardware to bypass caches (e.g., streaming loads).

Args:

  • ​storage (Pointer[SIMD[dtype, element_width], address_space=storage.address_space]): The storage to load from.

Returns:

SIMD[dtype, width]: The loaded SIMD value.

static def load[dtype: DType, //, width: SIMDLength, alignment: Int, invariant: Bool = False, non_temporal: Bool = False](storage: Pointer[SIMD[dtype, element_width], address_space=storage.address_space], offset: T) -> SIMD[dtype, width]

Loads a SIMD value at a scalar-element offset from the storage.

Parameters:

  • ​dtype (DType): The element data type of the storage.
  • ​width (SIMDLength): The number of elements to load.
  • ​alignment (Int): The alignment guarantee for the load.
  • ​invariant (Bool): If True, the compiler may assume the memory won't be modified during the kernel, enabling load hoisting and caching.
  • ​non_temporal (Bool): If True, indicates the data will not be reused soon, allowing the hardware to bypass caches (e.g., streaming loads).

Args:

  • ​storage (Pointer[SIMD[dtype, element_width], address_space=storage.address_space]): The storage to load from.
  • ​offset (T): The scalar-element offset to load at.

Returns:

SIMD[dtype, width]: The loaded SIMD value.

store​

static def store[dtype: DType, alignment: Int, *, non_temporal: Bool = False](storage: Pointer[SIMD[dtype, element_width], address_space=storage.address_space], value: SIMD[dtype])

Stores a SIMD value into the storage.

Parameters:

  • ​dtype (DType): The element data type of the storage.
  • ​alignment (Int): The alignment guarantee for the store.
  • ​non_temporal (Bool): If True, indicates the data will not be reused soon, allowing the hardware to bypass caches (e.g., streaming stores).

Args:

  • ​storage (Pointer[SIMD[dtype, element_width], address_space=storage.address_space]): The storage to store into.
  • ​value (SIMD[dtype]): The SIMD value to store.

static def store[dtype: DType, alignment: Int, *, non_temporal: Bool = False](storage: Pointer[SIMD[dtype, element_width], address_space=storage.address_space], offset: T, value: SIMD[dtype])

Stores a SIMD value at a scalar-element offset in the storage.

Parameters:

  • ​dtype (DType): The element data type of the storage.
  • ​alignment (Int): The alignment guarantee for the store.
  • ​non_temporal (Bool): If True, indicates the data will not be reused soon, allowing the hardware to bypass caches (e.g., streaming stores).

Args:

  • ​storage (Pointer[SIMD[dtype, element_width], address_space=storage.address_space]): The storage to store into.
  • ​offset (T): The scalar-element offset to store at.
  • ​value (SIMD[dtype]): The SIMD value to store.

offset​

static def offset[offset_mut: Bool, offset_types: TypeList[offset_types.values], //, offset_dtype: DType, offset_origin: Origin[mut=offset_mut], offset_address_space: AddressSpace](var storage: Pointer[SIMD[offset_dtype, element_width], offset_origin, address_space=offset_address_space], var offset_coord: Coord[offset_types]) -> Pointer[SIMD[offset_dtype, element_width], offset_origin, address_space=offset_address_space]

Returns a storage handle offset by a number of scalar elements.

The returned handle refers to the same externally owned storage, advanced by the scalar-element offset in offset_coord. The offset is measured in scalar elements (not logical SIMD elements) so that it matches the scalar-unit offsets produced by a tensor's layout and consumed by load/store; for a vectorized storage (element_width > 1) advancing the raw SIMD-typed handle directly would over-advance by element_width.

Parameters:

  • ​offset_mut (Bool): The mutability of the storage, inferred from offset_origin.
  • ​offset_types (TypeList[offset_types.values]): The coordinate element types of offset_coord.
  • ​offset_dtype (DType): The element data type of the storage.
  • ​offset_origin (Origin[mut=offset_mut]): The origin tracking the lifetime of the storage.
  • ​offset_address_space (AddressSpace): The address space the storage resides in.

Args:

  • ​storage (Pointer[SIMD[offset_dtype, element_width], offset_origin, address_space=offset_address_space]): The storage to offset from.
  • ​offset_coord (Coord[offset_types]): A rank-1 coordinate holding the number of scalar elements to advance the handle by.

Returns:

Pointer[SIMD[offset_dtype, element_width], offset_origin, address_space=offset_address_space]: A handle of the same type starting the given number of scalar elements into the referenced storage.

distance​

static def distance[dtype: DType, address_space: AddressSpace, //](storage: Pointer[SIMD[dtype, element_width], address_space=address_space], other: Pointer[SIMD[dtype, element_width], address_space=address_space]) -> Int

Returns the scalar-element distance from other to storage.

Parameters:

  • ​dtype (DType): The storages' DType.
  • ​address_space (AddressSpace): The storages' AddressSpace.

Args:

  • ​storage (Pointer[SIMD[dtype, element_width], address_space=address_space]): The storage to measure the distance to.
  • ​other (Pointer[SIMD[dtype, element_width], address_space=address_space]): The storage to measure the distance from.

Returns:

Int: The number of scalar elements separating the two handles. The value is positive when storage is ahead of other and negative when it precedes other.

copy_from​

static def copy_from[SelfLayoutType: TensorLayout, self_origin: MutOrigin, self_address_space: AddressSpace, OtherLayoutType: TensorLayout, other_mut: Bool, other_origin: Origin[mut=other_mut], other_address_space: AddressSpace, //, dst_dtype: DType, src_dtype: DType, OtherStorage: TensorStorage](storage: Tuple[Pointer[SIMD[dst_dtype, element_width], self_origin, address_space=self_address_space], SelfLayoutType], other: Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), src_dtype, other_origin, other_address_space], OtherLayoutType])

Copies the elements of other into storage, in place.

Loads each logical element from other through its (possibly different) storage policy and stores it into storage through PointerStorage, casting to the destination dtype. Delegates to the shared _copy_from loop.

  • Both operands must have statically known shapes with matching total element count.
  • Both operands must have the same logical element size.
  • Source and destination dtypes may differ; each logical element is cast to the destination dtype.

Parameters:

  • ​SelfLayoutType (TensorLayout): The layout type of the destination storage.
  • ​self_origin (MutOrigin): The origin of the destination storage.
  • ​self_address_space (AddressSpace): The address space of the destination storage.
  • ​OtherLayoutType (TensorLayout): The layout type of the source storage.
  • ​other_mut (Bool): The mutability of the source storage.
  • ​other_origin (Origin[mut=other_mut]): The origin of the source storage.
  • ​other_address_space (AddressSpace): The address space of the source storage.
  • ​dst_dtype (DType): The element data type of the destination storage.
  • ​src_dtype (DType): The element data type of the source storage.
  • ​OtherStorage (TensorStorage): The storage policy of the source. May differ from Self as long as the two policies are copy-compatible (same logical element size).

Args:

iadd​

static def iadd[SelfLayoutType: TensorLayout, self_origin: MutOrigin, self_address_space: AddressSpace, OtherLayoutType: TensorLayout, other_mut: Bool, other_origin: Origin[mut=other_mut], other_address_space: AddressSpace, //, dtype: DType, OtherStorage: TensorStorage](storage: Tuple[Pointer[SIMD[dtype, element_width], self_origin, address_space=self_address_space], SelfLayoutType], other: Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType])

Adds other into storage elementwise, in place.

Parameters:

  • ​SelfLayoutType (TensorLayout): The layout type of the destination storage.
  • ​self_origin (MutOrigin): The origin of the destination storage.
  • ​self_address_space (AddressSpace): The address space of the destination storage.
  • ​OtherLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​other_mut (Bool): The mutability of the right-hand storage operand.
  • ​other_origin (Origin[mut=other_mut]): The origin of the right-hand storage operand.
  • ​other_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of both storages.
  • ​OtherStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the two policies have the same logical element size.

Args:

imul​

static def imul[SelfLayoutType: TensorLayout, self_origin: MutOrigin, self_address_space: AddressSpace, OtherLayoutType: TensorLayout, other_mut: Bool, other_origin: Origin[mut=other_mut], other_address_space: AddressSpace, //, dtype: DType, OtherStorage: TensorStorage](storage: Tuple[Pointer[SIMD[dtype, element_width], self_origin, address_space=self_address_space], SelfLayoutType], other: Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType])

Multiplies storage by other elementwise, in place.

Parameters:

  • ​SelfLayoutType (TensorLayout): The layout type of the destination storage.
  • ​self_origin (MutOrigin): The origin of the destination storage.
  • ​self_address_space (AddressSpace): The address space of the destination storage.
  • ​OtherLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​other_mut (Bool): The mutability of the right-hand storage operand.
  • ​other_origin (Origin[mut=other_mut]): The origin of the right-hand storage operand.
  • ​other_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of both storages.
  • ​OtherStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the two policies have the same logical element size.

Args:

isub​

static def isub[SelfLayoutType: TensorLayout, self_origin: MutOrigin, self_address_space: AddressSpace, OtherLayoutType: TensorLayout, other_mut: Bool, other_origin: Origin[mut=other_mut], other_address_space: AddressSpace, //, dtype: DType, OtherStorage: TensorStorage](storage: Tuple[Pointer[SIMD[dtype, element_width], self_origin, address_space=self_address_space], SelfLayoutType], other: Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType])

Subtracts other from storage elementwise, in place.

Parameters:

  • ​SelfLayoutType (TensorLayout): The layout type of the destination storage.
  • ​self_origin (MutOrigin): The origin of the destination storage.
  • ​self_address_space (AddressSpace): The address space of the destination storage.
  • ​OtherLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​other_mut (Bool): The mutability of the right-hand storage operand.
  • ​other_origin (Origin[mut=other_mut]): The origin of the right-hand storage operand.
  • ​other_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of both storages.
  • ​OtherStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the two policies have the same logical element size.

Args:

ifloordiv​

static def ifloordiv[SelfLayoutType: TensorLayout, self_origin: MutOrigin, self_address_space: AddressSpace, OtherLayoutType: TensorLayout, other_mut: Bool, other_origin: Origin[mut=other_mut], other_address_space: AddressSpace, //, dtype: DType, OtherStorage: TensorStorage](storage: Tuple[Pointer[SIMD[dtype, element_width], self_origin, address_space=self_address_space], SelfLayoutType], other: Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType])

Floor-divides storage by other elementwise, in place.

Parameters:

  • ​SelfLayoutType (TensorLayout): The layout type of the destination storage.
  • ​self_origin (MutOrigin): The origin of the destination storage.
  • ​self_address_space (AddressSpace): The address space of the destination storage.
  • ​OtherLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​other_mut (Bool): The mutability of the right-hand storage operand.
  • ​other_origin (Origin[mut=other_mut]): The origin of the right-hand storage operand.
  • ​other_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of both storages.
  • ​OtherStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the two policies have the same logical element size.

Args:

itruediv​

static def itruediv[SelfLayoutType: TensorLayout, self_origin: MutOrigin, self_address_space: AddressSpace, OtherLayoutType: TensorLayout, other_mut: Bool, other_origin: Origin[mut=other_mut], other_address_space: AddressSpace, //, dtype: DType, OtherStorage: TensorStorage](storage: Tuple[Pointer[SIMD[dtype, element_width], self_origin, address_space=self_address_space], SelfLayoutType], other: Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType])

True-divides storage by other elementwise, in place.

Parameters:

  • ​SelfLayoutType (TensorLayout): The layout type of the destination storage.
  • ​self_origin (MutOrigin): The origin of the destination storage.
  • ​self_address_space (AddressSpace): The address space of the destination storage.
  • ​OtherLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​other_mut (Bool): The mutability of the right-hand storage operand.
  • ​other_origin (Origin[mut=other_mut]): The origin of the right-hand storage operand.
  • ​other_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of both storages.
  • ​OtherStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the two policies have the same logical element size.

Args:

imin​

static def imin[SelfLayoutType: TensorLayout, self_origin: MutOrigin, self_address_space: AddressSpace, OtherLayoutType: TensorLayout, other_mut: Bool, other_origin: Origin[mut=other_mut], other_address_space: AddressSpace, //, dtype: DType, OtherStorage: TensorStorage](storage: Tuple[Pointer[SIMD[dtype, element_width], self_origin, address_space=self_address_space], SelfLayoutType], other: Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType])

Takes the elementwise minimum of storage and other, in place.

Parameters:

  • ​SelfLayoutType (TensorLayout): The layout type of the destination storage.
  • ​self_origin (MutOrigin): The origin of the destination storage.
  • ​self_address_space (AddressSpace): The address space of the destination storage.
  • ​OtherLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​other_mut (Bool): The mutability of the right-hand storage operand.
  • ​other_origin (Origin[mut=other_mut]): The origin of the right-hand storage operand.
  • ​other_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of both storages.
  • ​OtherStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the two policies have the same logical element size.

Args:

imax​

static def imax[SelfLayoutType: TensorLayout, self_origin: MutOrigin, self_address_space: AddressSpace, OtherLayoutType: TensorLayout, other_mut: Bool, other_origin: Origin[mut=other_mut], other_address_space: AddressSpace, //, dtype: DType, OtherStorage: TensorStorage](storage: Tuple[Pointer[SIMD[dtype, element_width], self_origin, address_space=self_address_space], SelfLayoutType], other: Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType])

Takes the elementwise maximum of storage and other, in place.

Parameters:

  • ​SelfLayoutType (TensorLayout): The layout type of the destination storage.
  • ​self_origin (MutOrigin): The origin of the destination storage.
  • ​self_address_space (AddressSpace): The address space of the destination storage.
  • ​OtherLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​other_mut (Bool): The mutability of the right-hand storage operand.
  • ​other_origin (Origin[mut=other_mut]): The origin of the right-hand storage operand.
  • ​other_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of both storages.
  • ​OtherStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the two policies have the same logical element size.

Args:

iabs​

static def iabs[dtype: DType, //](storage: Pointer[SIMD[dtype, element_width], address_space=storage.address_space], layout: T)

Takes the elementwise absolute value of storage, in place.

For unsigned dtypes this is the identity.

Parameters:

  • ​dtype (DType): The element data type of the storage.

Args:

  • ​storage (Pointer[SIMD[dtype, element_width], address_space=storage.address_space]): The storage to modify in place.
  • ​layout (T): The layout describing the storage's elements.

irecip​

static def irecip[dtype: DType, //](storage: Pointer[SIMD[dtype, element_width], address_space=storage.address_space], layout: T)

Replaces each element of storage with its reciprocal, in place.

Elements equal to zero produce infinity, following IEEE 754 division semantics.

Parameters:

  • ​dtype (DType): The element data type of the storage. Must be a floating-point type.

Args:

  • ​storage (Pointer[SIMD[dtype, element_width], address_space=storage.address_space]): The storage to modify in place.
  • ​layout (T): The layout describing the storage's elements.

iexp​

static def iexp[dtype: DType, scale_dtype: DType = dtype, //, scale: Scalar[scale_dtype]](storage: Pointer[SIMD[dtype, element_width], address_space=storage.address_space], layout: T)

Replaces each element x of storage with exp(scale * x), in place.

The scale factor is applied before exponentiation so that scaled exponentials (for example softmax logit scaling) fuse into a single pass over the elements. Pass a scale of 1 for a plain exponential.

Parameters:

  • ​dtype (DType): The element data type of the storage. Must be a floating-point type.
  • ​scale_dtype (DType): The data type of the scale factor. Defaults to dtype; the scale is cast to dtype before the multiplication.
  • ​scale (Scalar[scale_dtype]): The compile-time factor each element is multiplied by before exponentiation.

Args:

  • ​storage (Pointer[SIMD[dtype, element_width], address_space=storage.address_space]): The storage to modify in place.
  • ​layout (T): The layout describing the storage's elements.

add​

static def add[DstLayoutType: TensorLayout, dst_origin: MutOrigin, dst_address_space: AddressSpace, LhsLayoutType: TensorLayout, lhs_mut: Bool, lhs_origin: Origin[mut=lhs_mut], lhs_address_space: AddressSpace, RhsLayoutType: TensorLayout, rhs_mut: Bool, rhs_origin: Origin[mut=rhs_mut], rhs_address_space: AddressSpace, //, dtype: DType, LhsStorage: TensorStorage, RhsStorage: TensorStorage](*, dst: Tuple[Pointer[SIMD[dtype, element_width], dst_origin, address_space=dst_address_space], DstLayoutType], lhs: Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType], rhs: Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType])

Out-of-place elementwise add into dst.

Parameters:

  • ​DstLayoutType (TensorLayout): The layout type of the destination storage.
  • ​dst_origin (MutOrigin): The origin of the destination storage.
  • ​dst_address_space (AddressSpace): The address space of the destination storage.
  • ​LhsLayoutType (TensorLayout): The layout type of the left-hand storage operand.
  • ​lhs_mut (Bool): The mutability of the left-hand storage operand.
  • ​lhs_origin (Origin[mut=lhs_mut]): The origin of the left-hand storage operand.
  • ​lhs_address_space (AddressSpace): The address space of the left-hand storage operand.
  • ​RhsLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​rhs_mut (Bool): The mutability of the right-hand storage operand.
  • ​rhs_origin (Origin[mut=rhs_mut]): The origin of the right-hand storage operand.
  • ​rhs_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of all three storages.
  • ​LhsStorage (TensorStorage): The storage policy of the left-hand operand. May differ from Self as long as the policies have the same logical element size.
  • ​RhsStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the policies have the same logical element size.

Args:

mul​

static def mul[DstLayoutType: TensorLayout, dst_origin: MutOrigin, dst_address_space: AddressSpace, LhsLayoutType: TensorLayout, lhs_mut: Bool, lhs_origin: Origin[mut=lhs_mut], lhs_address_space: AddressSpace, RhsLayoutType: TensorLayout, rhs_mut: Bool, rhs_origin: Origin[mut=rhs_mut], rhs_address_space: AddressSpace, //, dtype: DType, LhsStorage: TensorStorage, RhsStorage: TensorStorage](*, dst: Tuple[Pointer[SIMD[dtype, element_width], dst_origin, address_space=dst_address_space], DstLayoutType], lhs: Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType], rhs: Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType])

Out-of-place elementwise mul into dst.

Parameters:

  • ​DstLayoutType (TensorLayout): The layout type of the destination storage.
  • ​dst_origin (MutOrigin): The origin of the destination storage.
  • ​dst_address_space (AddressSpace): The address space of the destination storage.
  • ​LhsLayoutType (TensorLayout): The layout type of the left-hand storage operand.
  • ​lhs_mut (Bool): The mutability of the left-hand storage operand.
  • ​lhs_origin (Origin[mut=lhs_mut]): The origin of the left-hand storage operand.
  • ​lhs_address_space (AddressSpace): The address space of the left-hand storage operand.
  • ​RhsLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​rhs_mut (Bool): The mutability of the right-hand storage operand.
  • ​rhs_origin (Origin[mut=rhs_mut]): The origin of the right-hand storage operand.
  • ​rhs_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of all three storages.
  • ​LhsStorage (TensorStorage): The storage policy of the left-hand operand. May differ from Self as long as the policies have the same logical element size.
  • ​RhsStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the policies have the same logical element size.

Args:

sub​

static def sub[DstLayoutType: TensorLayout, dst_origin: MutOrigin, dst_address_space: AddressSpace, LhsLayoutType: TensorLayout, lhs_mut: Bool, lhs_origin: Origin[mut=lhs_mut], lhs_address_space: AddressSpace, RhsLayoutType: TensorLayout, rhs_mut: Bool, rhs_origin: Origin[mut=rhs_mut], rhs_address_space: AddressSpace, //, dtype: DType, LhsStorage: TensorStorage, RhsStorage: TensorStorage](*, dst: Tuple[Pointer[SIMD[dtype, element_width], dst_origin, address_space=dst_address_space], DstLayoutType], lhs: Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType], rhs: Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType])

Out-of-place elementwise sub into dst.

Parameters:

  • ​DstLayoutType (TensorLayout): The layout type of the destination storage.
  • ​dst_origin (MutOrigin): The origin of the destination storage.
  • ​dst_address_space (AddressSpace): The address space of the destination storage.
  • ​LhsLayoutType (TensorLayout): The layout type of the left-hand storage operand.
  • ​lhs_mut (Bool): The mutability of the left-hand storage operand.
  • ​lhs_origin (Origin[mut=lhs_mut]): The origin of the left-hand storage operand.
  • ​lhs_address_space (AddressSpace): The address space of the left-hand storage operand.
  • ​RhsLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​rhs_mut (Bool): The mutability of the right-hand storage operand.
  • ​rhs_origin (Origin[mut=rhs_mut]): The origin of the right-hand storage operand.
  • ​rhs_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of all three storages.
  • ​LhsStorage (TensorStorage): The storage policy of the left-hand operand. May differ from Self as long as the policies have the same logical element size.
  • ​RhsStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the policies have the same logical element size.

Args:

floordiv​

static def floordiv[DstLayoutType: TensorLayout, dst_origin: MutOrigin, dst_address_space: AddressSpace, LhsLayoutType: TensorLayout, lhs_mut: Bool, lhs_origin: Origin[mut=lhs_mut], lhs_address_space: AddressSpace, RhsLayoutType: TensorLayout, rhs_mut: Bool, rhs_origin: Origin[mut=rhs_mut], rhs_address_space: AddressSpace, //, dtype: DType, LhsStorage: TensorStorage, RhsStorage: TensorStorage](*, dst: Tuple[Pointer[SIMD[dtype, element_width], dst_origin, address_space=dst_address_space], DstLayoutType], lhs: Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType], rhs: Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType])

Out-of-place elementwise floordiv into dst.

Parameters:

  • ​DstLayoutType (TensorLayout): The layout type of the destination storage.
  • ​dst_origin (MutOrigin): The origin of the destination storage.
  • ​dst_address_space (AddressSpace): The address space of the destination storage.
  • ​LhsLayoutType (TensorLayout): The layout type of the left-hand storage operand.
  • ​lhs_mut (Bool): The mutability of the left-hand storage operand.
  • ​lhs_origin (Origin[mut=lhs_mut]): The origin of the left-hand storage operand.
  • ​lhs_address_space (AddressSpace): The address space of the left-hand storage operand.
  • ​RhsLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​rhs_mut (Bool): The mutability of the right-hand storage operand.
  • ​rhs_origin (Origin[mut=rhs_mut]): The origin of the right-hand storage operand.
  • ​rhs_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of all three storages.
  • ​LhsStorage (TensorStorage): The storage policy of the left-hand operand. May differ from Self as long as the policies have the same logical element size.
  • ​RhsStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the policies have the same logical element size.

Args:

truediv​

static def truediv[DstLayoutType: TensorLayout, dst_origin: MutOrigin, dst_address_space: AddressSpace, LhsLayoutType: TensorLayout, lhs_mut: Bool, lhs_origin: Origin[mut=lhs_mut], lhs_address_space: AddressSpace, RhsLayoutType: TensorLayout, rhs_mut: Bool, rhs_origin: Origin[mut=rhs_mut], rhs_address_space: AddressSpace, //, dtype: DType, LhsStorage: TensorStorage, RhsStorage: TensorStorage](*, dst: Tuple[Pointer[SIMD[dtype, element_width], dst_origin, address_space=dst_address_space], DstLayoutType], lhs: Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType], rhs: Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType])

Out-of-place elementwise truediv into dst.

Parameters:

  • ​DstLayoutType (TensorLayout): The layout type of the destination storage.
  • ​dst_origin (MutOrigin): The origin of the destination storage.
  • ​dst_address_space (AddressSpace): The address space of the destination storage.
  • ​LhsLayoutType (TensorLayout): The layout type of the left-hand storage operand.
  • ​lhs_mut (Bool): The mutability of the left-hand storage operand.
  • ​lhs_origin (Origin[mut=lhs_mut]): The origin of the left-hand storage operand.
  • ​lhs_address_space (AddressSpace): The address space of the left-hand storage operand.
  • ​RhsLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​rhs_mut (Bool): The mutability of the right-hand storage operand.
  • ​rhs_origin (Origin[mut=rhs_mut]): The origin of the right-hand storage operand.
  • ​rhs_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of all three storages.
  • ​LhsStorage (TensorStorage): The storage policy of the left-hand operand. May differ from Self as long as the policies have the same logical element size.
  • ​RhsStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the policies have the same logical element size.

Args:

min​

static def min[DstLayoutType: TensorLayout, dst_origin: MutOrigin, dst_address_space: AddressSpace, LhsLayoutType: TensorLayout, lhs_mut: Bool, lhs_origin: Origin[mut=lhs_mut], lhs_address_space: AddressSpace, RhsLayoutType: TensorLayout, rhs_mut: Bool, rhs_origin: Origin[mut=rhs_mut], rhs_address_space: AddressSpace, //, dtype: DType, LhsStorage: TensorStorage, RhsStorage: TensorStorage](*, dst: Tuple[Pointer[SIMD[dtype, element_width], dst_origin, address_space=dst_address_space], DstLayoutType], lhs: Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType], rhs: Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType])

Out-of-place elementwise min into dst.

Parameters:

  • ​DstLayoutType (TensorLayout): The layout type of the destination storage.
  • ​dst_origin (MutOrigin): The origin of the destination storage.
  • ​dst_address_space (AddressSpace): The address space of the destination storage.
  • ​LhsLayoutType (TensorLayout): The layout type of the left-hand storage operand.
  • ​lhs_mut (Bool): The mutability of the left-hand storage operand.
  • ​lhs_origin (Origin[mut=lhs_mut]): The origin of the left-hand storage operand.
  • ​lhs_address_space (AddressSpace): The address space of the left-hand storage operand.
  • ​RhsLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​rhs_mut (Bool): The mutability of the right-hand storage operand.
  • ​rhs_origin (Origin[mut=rhs_mut]): The origin of the right-hand storage operand.
  • ​rhs_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of all three storages.
  • ​LhsStorage (TensorStorage): The storage policy of the left-hand operand. May differ from Self as long as the policies have the same logical element size.
  • ​RhsStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the policies have the same logical element size.

Args:

max​

static def max[DstLayoutType: TensorLayout, dst_origin: MutOrigin, dst_address_space: AddressSpace, LhsLayoutType: TensorLayout, lhs_mut: Bool, lhs_origin: Origin[mut=lhs_mut], lhs_address_space: AddressSpace, RhsLayoutType: TensorLayout, rhs_mut: Bool, rhs_origin: Origin[mut=rhs_mut], rhs_address_space: AddressSpace, //, dtype: DType, LhsStorage: TensorStorage, RhsStorage: TensorStorage](*, dst: Tuple[Pointer[SIMD[dtype, element_width], dst_origin, address_space=dst_address_space], DstLayoutType], lhs: Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType], rhs: Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType])

Out-of-place elementwise max into dst.

Parameters:

  • ​DstLayoutType (TensorLayout): The layout type of the destination storage.
  • ​dst_origin (MutOrigin): The origin of the destination storage.
  • ​dst_address_space (AddressSpace): The address space of the destination storage.
  • ​LhsLayoutType (TensorLayout): The layout type of the left-hand storage operand.
  • ​lhs_mut (Bool): The mutability of the left-hand storage operand.
  • ​lhs_origin (Origin[mut=lhs_mut]): The origin of the left-hand storage operand.
  • ​lhs_address_space (AddressSpace): The address space of the left-hand storage operand.
  • ​RhsLayoutType (TensorLayout): The layout type of the right-hand storage operand.
  • ​rhs_mut (Bool): The mutability of the right-hand storage operand.
  • ​rhs_origin (Origin[mut=rhs_mut]): The origin of the right-hand storage operand.
  • ​rhs_address_space (AddressSpace): The address space of the right-hand storage operand.
  • ​dtype (DType): The element data type of all three storages.
  • ​LhsStorage (TensorStorage): The storage policy of the left-hand operand. May differ from Self as long as the policies have the same logical element size.
  • ​RhsStorage (TensorStorage): The storage policy of the right-hand operand. May differ from Self as long as the policies have the same logical element size.

Args:

abs​

static def abs[DstLayoutType: TensorLayout, dst_origin: MutOrigin, dst_address_space: AddressSpace, SrcLayoutType: TensorLayout, src_mut: Bool, src_origin: Origin[mut=src_mut], src_address_space: AddressSpace, //, dtype: DType, SrcStorage: TensorStorage](*, dst: Tuple[Pointer[SIMD[dtype, element_width], dst_origin, address_space=dst_address_space], DstLayoutType], src: Tuple[SrcStorage.StorageType[src_mut, origin_of(src_origin), dtype, src_origin, src_address_space], SrcLayoutType])

Out-of-place elementwise abs into dst.

Parameters:

  • ​DstLayoutType (TensorLayout): The layout type of the destination storage.
  • ​dst_origin (MutOrigin): The origin of the destination storage.
  • ​dst_address_space (AddressSpace): The address space of the destination storage.
  • ​SrcLayoutType (TensorLayout): The layout type of the source storage.
  • ​src_mut (Bool): The mutability of the source storage.
  • ​src_origin (Origin[mut=src_mut]): The origin of the source storage.
  • ​src_address_space (AddressSpace): The address space of the source storage.
  • ​dtype (DType): The element data type of both storages.
  • ​SrcStorage (TensorStorage): The storage policy of the source. May differ from Self as long as the two policies have the same logical element size.

Args:

recip​

static def recip[DstLayoutType: TensorLayout, dst_origin: MutOrigin, dst_address_space: AddressSpace, SrcLayoutType: TensorLayout, src_mut: Bool, src_origin: Origin[mut=src_mut], src_address_space: AddressSpace, //, dtype: DType, SrcStorage: TensorStorage](*, dst: Tuple[Pointer[SIMD[dtype, element_width], dst_origin, address_space=dst_address_space], DstLayoutType], src: Tuple[SrcStorage.StorageType[src_mut, origin_of(src_origin), dtype, src_origin, src_address_space], SrcLayoutType])

Out-of-place elementwise recip into dst.

Parameters:

  • ​DstLayoutType (TensorLayout): The layout type of the destination storage.
  • ​dst_origin (MutOrigin): The origin of the destination storage.
  • ​dst_address_space (AddressSpace): The address space of the destination storage.
  • ​SrcLayoutType (TensorLayout): The layout type of the source storage.
  • ​src_mut (Bool): The mutability of the source storage.
  • ​src_origin (Origin[mut=src_mut]): The origin of the source storage.
  • ​src_address_space (AddressSpace): The address space of the source storage.
  • ​dtype (DType): The element data type of both storages.
  • ​SrcStorage (TensorStorage): The storage policy of the source. May differ from Self as long as the two policies have the same logical element size.

Args:

exp​

static def exp[DstLayoutType: TensorLayout, dst_origin: MutOrigin, dst_address_space: AddressSpace, SrcLayoutType: TensorLayout, src_mut: Bool, src_origin: Origin[mut=src_mut], src_address_space: AddressSpace, dtype: DType, SrcStorage: TensorStorage, scale_dtype: DType = dtype, //, scale: Scalar[scale_dtype] = 1](*, dst: Tuple[Pointer[SIMD[dtype, element_width], dst_origin, address_space=dst_address_space], DstLayoutType], src: Tuple[SrcStorage.StorageType[src_mut, origin_of(src_origin), dtype, src_origin, src_address_space], SrcLayoutType])

Writes exp(scale * x) for each element x of src into dst.

Parameters:

  • ​DstLayoutType (TensorLayout): The layout type of the destination storage.
  • ​dst_origin (MutOrigin): The origin of the destination storage.
  • ​dst_address_space (AddressSpace): The address space of the destination storage.
  • ​SrcLayoutType (TensorLayout): The layout type of the source storage.
  • ​src_mut (Bool): The mutability of the source storage.
  • ​src_origin (Origin[mut=src_mut]): The origin of the source storage.
  • ​src_address_space (AddressSpace): The address space of the source storage.
  • ​dtype (DType): The element data type of both storages. Must be a floating-point type.
  • ​SrcStorage (TensorStorage): The storage policy of the source. May differ from Self as long as the two policies have the same logical element size.
  • ​scale_dtype (DType): The data type of the scale factor. Defaults to dtype; the scale is cast to dtype before the multiplication.
  • ​scale (Scalar[scale_dtype]): The compile-time factor each element is multiplied by before exponentiation.

Args:

Was this page helpful?