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
DevicePointerStorage
struct DevicePointerStorage[*, element_width: Int = Int(1)]
Implements TensorOps backed by a DevicePointer handle.
DevicePointerStorage is the device-pointer-backed analogue of
PointerStorage, accepting the same element_width parameter. Its
StorageType handle is a DevicePointer, which on the host carries the
buffer's owning reference plus an element offset and size, and which
substitutes to a bare device UnsafePointer at the kernel boundary
(DevicePointer.device_type).
Because the handle conforms to DevicePassable, a host-side
DevicePointer shrinks to a real device address when the enclosing
TileTensor encodes its fields for a kernel launch. The address is written
into the first bytes of the handle's slot, so the memory operations here
reinterpret those bytes (_device_leaf_ptr) on device. They abort on host:
device memory is not guaranteed to be host-dereferenceable. The operations
that don't dereference storage (offset, distance, unsafe_cast) work
on both host and device using DevicePointer arithmetic or pure
reinterprets.
Parametersβ
- βelement_width (
Int): Number of scalar elements per logical element. A value of1(the default) is a non-vectorized tensor; larger values describe a vectorized view whose logical elements are SIMD vectors. TheDevicePointerhandle is always scalar-typed and every operation works in scalar-element units, soelement_widthonly setselement_size(and thus the tile's vectorizedElementType), exactly as forPointerStorage.
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]] = DevicePointerStorage[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] = DevicePointer[dtype, origin]
A DevicePointer handle borrowing the storage.
The address_space is part of the TensorStorage interface but is unused:
a DevicePointer always refers to GENERIC device memory.
Parametersβ
- βmut (
Bool): The mutability of the borrowed storage, inferred fromorigin. - β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): TheWriterto 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: DevicePointer) -> DevicePointer[to_dtype, to_origin]
Reinterprets a storage handle with new type parameters.
DevicePointer has an identical layout across dtype and origin, so
this is a byte-for-byte reinterpret of the handle; no DeviceBuffer
element conversion takes place. The caller is responsible for ensuring
the new parameters are valid for the referenced storage.
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 (
DevicePointer): The storage to reinterpret.
Returns:
DevicePointer[to_dtype, to_origin]: 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: DevicePointer[dtype]) -> SIMD[dtype, width]
Loads a SIMD value from the storage.
Device-only: reinterprets the encoded device pointer, which aborts on host. Device memory is not guaranteed to be host-dereferenceable.
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 (
DevicePointer[dtype]): 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: DevicePointer[dtype], offset: T) -> SIMD[dtype, width]
Loads a SIMD value at a scalar-element offset from the storage.
Device-only: reinterprets the encoded device pointer, which aborts on host. Device memory is not guaranteed to be host-dereferenceable.
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 (
DevicePointer[dtype]): 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: DevicePointer[dtype], value: SIMD[dtype])
Stores a SIMD value into the storage.
Device-only: reinterprets the encoded device pointer, which aborts on host. Device memory is not guaranteed to be host-dereferenceable.
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 (
DevicePointer[dtype]): The storage to store into. - βvalue (
SIMD[dtype]): TheSIMDvalue to store.
static def store[dtype: DType, alignment: Int, *, non_temporal: Bool = False](storage: DevicePointer[dtype], offset: T, value: SIMD[dtype])
Stores a SIMD value at a scalar-element offset in the storage.
Device-only: reinterprets the encoded device pointer, which aborts on host. Device memory is not guaranteed to be host-dereferenceable.
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 (
DevicePointer[dtype]): The storage to store into. - βoffset (
T): The scalar-element offset to store at. - βvalue (
SIMD[dtype]): TheSIMDvalue 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: DevicePointer[offset_dtype, offset_origin], var offset_coord: Coord[offset_types]) -> DevicePointer[offset_dtype, offset_origin]
Returns a storage handle offset by a number of scalar elements.
On host this advances the wrapped DevicePointer (bounds-checked
against the owning DeviceBuffer). On device it advances the encoded
device pointer held in the handle's first bytes, preserving the rest of
the handle's (unused) bytes.
Parameters:
- βoffset_mut (
Bool): The mutability of the storage, inferred fromoffset_origin. - βoffset_types (
TypeList[offset_types.values]): The coordinate element types ofoffset_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 (
DevicePointer[offset_dtype, offset_origin]): 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:
DevicePointer[offset_dtype, offset_origin]: 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: DevicePointer[dtype], other: DevicePointer[dtype]) -> Int
Returns the scalar-element distance from other to storage.
Parameters:
- βdtype (
DType): The storages'DType. - βaddress_space (
AddressSpace): The storages'AddressSpace.
Args:
- βstorage (
DevicePointer[dtype]): The storage to measure the distance to. - βother (
DevicePointer[dtype]): 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[DevicePointer[dst_dtype, self_origin], 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
DevicePointerStorage, casting to the destination dtype. Delegates to
the shared _copy_from loop. Device-only: the underlying loads and
stores reinterpret the encoded device pointer and abort on host.
- 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 fromSelfas long as the two policies are copy-compatible (same logical element size).
Args:
- βstorage (
Tuple[DevicePointer[dst_dtype, self_origin], SelfLayoutType]): A tuple of the destination storage (modified in place) and its layout. - βother (
Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), src_dtype, other_origin, other_address_space], OtherLayoutType]): A tuple of the source storage and its layout.
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[DevicePointer[dtype, self_origin], 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 fromSelfas long as the two policies have the same logical element size.
Args:
- βstorage (
Tuple[DevicePointer[dtype, self_origin], SelfLayoutType]): A tuple of the destination storage (modified in place) and its layout. - βother (
Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, self_origin], 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 fromSelfas long as the two policies have the same logical element size.
Args:
- βstorage (
Tuple[DevicePointer[dtype, self_origin], SelfLayoutType]): A tuple of the destination storage (modified in place) and its layout. - βother (
Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, self_origin], 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 fromSelfas long as the two policies have the same logical element size.
Args:
- βstorage (
Tuple[DevicePointer[dtype, self_origin], SelfLayoutType]): A tuple of the destination storage (modified in place) and its layout. - βother (
Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, self_origin], 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 fromSelfas long as the two policies have the same logical element size.
Args:
- βstorage (
Tuple[DevicePointer[dtype, self_origin], SelfLayoutType]): A tuple of the destination storage (modified in place) and its layout. - βother (
Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, self_origin], 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 fromSelfas long as the two policies have the same logical element size.
Args:
- βstorage (
Tuple[DevicePointer[dtype, self_origin], SelfLayoutType]): A tuple of the destination storage (modified in place) and its layout. - βother (
Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, self_origin], 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 fromSelfas long as the two policies have the same logical element size.
Args:
- βstorage (
Tuple[DevicePointer[dtype, self_origin], SelfLayoutType]): A tuple of the destination storage (modified in place) and its layout. - βother (
Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, self_origin], 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 fromSelfas long as the two policies have the same logical element size.
Args:
- βstorage (
Tuple[DevicePointer[dtype, self_origin], SelfLayoutType]): A tuple of the destination storage (modified in place) and its layout. - βother (
Tuple[OtherStorage.StorageType[other_mut, origin_of(other_origin), dtype, other_origin, other_address_space], OtherLayoutType]): A tuple of the right-hand storage operand and its layout.
iabsβ
static def iabs[dtype: DType, //](storage: DevicePointer[dtype], layout: T)
Takes the elementwise absolute value of storage, in place.
For unsigned dtypes this is the identity. Device-only: the underlying loads and stores reinterpret the encoded device pointer and abort on host.
Parameters:
- βdtype (
DType): The element data type of the storage.
Args:
- βstorage (
DevicePointer[dtype]): The storage to modify in place. - βlayout (
T): The layout describing the storage's elements.
irecipβ
static def irecip[dtype: DType, //](storage: DevicePointer[dtype], layout: T)
Replaces each element of storage with its reciprocal, in place.
Elements equal to zero produce infinity, following IEEE 754 division semantics. Device-only: the underlying loads and stores reinterpret the encoded device pointer and abort on host.
Parameters:
- βdtype (
DType): The element data type of the storage. Must be a floating-point type.
Args:
- βstorage (
DevicePointer[dtype]): 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: DevicePointer[dtype], 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.
Device-only: the underlying loads and stores reinterpret the encoded
device pointer and abort on host.
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 todtype; the scale is cast todtypebefore the multiplication. - βscale (
Scalar[scale_dtype]): The compile-time factor each element is multiplied by before exponentiation.
Args:
- βstorage (
DevicePointer[dtype]): 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[DevicePointer[dtype, dst_origin], 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 fromSelfas long as the policies have the same logical element size. - βRhsStorage (
TensorStorage): The storage policy of the right-hand operand. May differ fromSelfas long as the policies have the same logical element size.
Args:
- βdst (
Tuple[DevicePointer[dtype, dst_origin], DstLayoutType]): A tuple of the destination storage and its layout. - βlhs (
Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType]): A tuple of the left-hand storage operand and its layout. - βrhs (
Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, dst_origin], 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 fromSelfas long as the policies have the same logical element size. - βRhsStorage (
TensorStorage): The storage policy of the right-hand operand. May differ fromSelfas long as the policies have the same logical element size.
Args:
- βdst (
Tuple[DevicePointer[dtype, dst_origin], DstLayoutType]): A tuple of the destination storage and its layout. - βlhs (
Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType]): A tuple of the left-hand storage operand and its layout. - βrhs (
Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, dst_origin], 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 fromSelfas long as the policies have the same logical element size. - βRhsStorage (
TensorStorage): The storage policy of the right-hand operand. May differ fromSelfas long as the policies have the same logical element size.
Args:
- βdst (
Tuple[DevicePointer[dtype, dst_origin], DstLayoutType]): A tuple of the destination storage and its layout. - βlhs (
Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType]): A tuple of the left-hand storage operand and its layout. - βrhs (
Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, dst_origin], 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 fromSelfas long as the policies have the same logical element size. - βRhsStorage (
TensorStorage): The storage policy of the right-hand operand. May differ fromSelfas long as the policies have the same logical element size.
Args:
- βdst (
Tuple[DevicePointer[dtype, dst_origin], DstLayoutType]): A tuple of the destination storage and its layout. - βlhs (
Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType]): A tuple of the left-hand storage operand and its layout. - βrhs (
Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, dst_origin], 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 fromSelfas long as the policies have the same logical element size. - βRhsStorage (
TensorStorage): The storage policy of the right-hand operand. May differ fromSelfas long as the policies have the same logical element size.
Args:
- βdst (
Tuple[DevicePointer[dtype, dst_origin], DstLayoutType]): A tuple of the destination storage and its layout. - βlhs (
Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType]): A tuple of the left-hand storage operand and its layout. - βrhs (
Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, dst_origin], 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 fromSelfas long as the policies have the same logical element size. - βRhsStorage (
TensorStorage): The storage policy of the right-hand operand. May differ fromSelfas long as the policies have the same logical element size.
Args:
- βdst (
Tuple[DevicePointer[dtype, dst_origin], DstLayoutType]): A tuple of the destination storage and its layout. - βlhs (
Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType]): A tuple of the left-hand storage operand and its layout. - βrhs (
Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, dst_origin], 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 fromSelfas long as the policies have the same logical element size. - βRhsStorage (
TensorStorage): The storage policy of the right-hand operand. May differ fromSelfas long as the policies have the same logical element size.
Args:
- βdst (
Tuple[DevicePointer[dtype, dst_origin], DstLayoutType]): A tuple of the destination storage and its layout. - βlhs (
Tuple[LhsStorage.StorageType[lhs_mut, origin_of(lhs_origin), dtype, lhs_origin, lhs_address_space], LhsLayoutType]): A tuple of the left-hand storage operand and its layout. - βrhs (
Tuple[RhsStorage.StorageType[rhs_mut, origin_of(rhs_origin), dtype, rhs_origin, rhs_address_space], RhsLayoutType]): A tuple of the right-hand storage operand and its layout.
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[DevicePointer[dtype, dst_origin], 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. Device-only when Self or SrcStorage reinterprets a device pointer.
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 fromSelfas long as the two policies have the same logical element size.
Args:
- βdst (
Tuple[DevicePointer[dtype, dst_origin], DstLayoutType]): A tuple of the destination storage and its layout. - βsrc (
Tuple[SrcStorage.StorageType[src_mut, origin_of(src_origin), dtype, src_origin, src_address_space], SrcLayoutType]): A tuple of the source storage and its layout.
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[DevicePointer[dtype, dst_origin], 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. Device-only when Self or SrcStorage reinterprets a device pointer.
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 fromSelfas long as the two policies have the same logical element size.
Args:
- βdst (
Tuple[DevicePointer[dtype, dst_origin], DstLayoutType]): A tuple of the destination storage and its layout. - βsrc (
Tuple[SrcStorage.StorageType[src_mut, origin_of(src_origin), dtype, src_origin, src_address_space], SrcLayoutType]): A tuple of the source storage and its layout.
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[DevicePointer[dtype, dst_origin], 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. Device-only when Self or SrcStorage reinterprets a device pointer.
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 fromSelfas long as the two policies have the same logical element size. - βscale_dtype (
DType): The data type of the scale factor. Defaults todtype; the scale is cast todtypebefore the multiplication. - βscale (
Scalar[scale_dtype]): The compile-time factor each element is multiplied by before exponentiation.
Args:
- βdst (
Tuple[DevicePointer[dtype, dst_origin], DstLayoutType]): A tuple of the destination storage and its layout. - βsrc (
Tuple[SrcStorage.StorageType[src_mut, origin_of(src_origin), dtype, src_origin, src_address_space], SrcLayoutType]): A tuple of the source storage and its layout.