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 trait
TensorStorage
Defines a non-owning interface for accessing tensor storage.
A conforming type describes how to access storage that is owned elsewhere.
It provides a concrete StorageType handle along with static operations to
load from, store into, and reinterpret values of that handle. The
trait never owns the underlying memory; the handle's origin parameter
tracks the lifetime and mutability of the borrowed storage.
Implemented traitsβ
comptime membersβ
element_sizeβ
comptime element_size = Int(1)
OffsetResultTypeβ
comptime OffsetResultType[offset_types: TypeList[values]]
The storage type produced by offsetting with a given coordinate.
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]
The concrete, register-passable handle to the borrowed storage.
Every operation in this trait acts on values of this type. It is
parameterized on the element dtype, the origin that tracks the lifetime
and mutability of the borrowed storage, and the address_space the storage
resides in, so a single conforming type describes a whole family of handles.
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.
Required methodsβ
unsafe_castβ
static def unsafe_cast[to_mut: Bool, //, to_dtype: DType, to_origin: Origin[mut=to_mut], to_address_space: AddressSpace](storage: Self.StorageType[origin.mut, origin_of(origin), dtype, origin, address_space]) -> Self.StorageType[to_mut, origin_of(to_origin), to_dtype, to_origin, to_address_space]
Reinterprets a storage handle with new type parameters.
This performs an unchecked reinterpretation of the underlying reference;
no conversion of the stored elements takes place. The caller is
responsible for ensuring the new dtype, origin, and address_space
are valid for the referenced storage.
Parameters:
- βto_mut (
Bool): The mutability to reinterpret the storage as. - β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 (
_Self.StorageType[origin.mut, origin_of(origin), dtype, origin, address_space]): The storage to reinterpret.
Returns:
_Self.StorageType[to_mut, origin_of(to_origin), to_dtype, to_origin, 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: Self.StorageType[False, origin_of(origin), dtype, origin, 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 (
_Self.StorageType[False, origin_of(origin), dtype, origin, 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: Self.StorageType[False, origin_of(origin), dtype, origin, 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 (
_Self.StorageType[False, origin_of(origin), dtype, origin, 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: Self.StorageType[True, origin_of(origin), dtype, origin, 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 (
_Self.StorageType[True, origin_of(origin), dtype, origin, address_space]): The storage to store into. - βvalue (
SIMD[dtype]): TheSIMDvalue to store.
static def store[dtype: DType, alignment: Int, *, non_temporal: Bool = False](storage: Self.StorageType[True, origin_of(origin), dtype, origin, address_space], offset: T, value: SIMD[dtype])
Stores a SIMD value at a scalar-element offset in the storage.
The caller is responsible for ensuring the storage is actually mutable.
The dtype, origin, and address_space are inferred from the
storage argument for concrete storage types; callers using the trait
through an abstract TensorStorage bound must pass them explicitly
(before alignment).
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 (
_Self.StorageType[True, origin_of(origin), dtype, origin, address_space]): 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: Self.StorageType[offset_mut, origin_of(offset_origin), offset_dtype, offset_origin, offset_address_space], var offset_coord: Coord[offset_types]) -> Self.OffsetResultType[offset_types.values, offset_types].StorageType[offset_mut, origin_of(offset_origin), offset_dtype, offset_origin, offset_address_space]
Returns a storage handle offset by a number of scalar elements.
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 (
_Self.StorageType[offset_mut, origin_of(offset_origin), offset_dtype, offset_origin, 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:
_Self.OffsetResultType[offset_types.values, offset_types].StorageType[offset_mut, origin_of(offset_origin), offset_dtype, offset_origin, offset_address_space]: A handle of the same type starting the given number of scalar
elements into the referenced storage.
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[Self.StorageType[True, origin_of(self_origin), dst_dtype, self_origin, 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.
Performs an element-by-element copy from other into storage,
respecting the layouts of both operands. Each logical element is loaded
from other using its layout and stored into storage using its own
layout, so the copy works correctly even when the two sides have
different shapes or strides (as long as they agree on total element
count). When both operands have fully static, row-major layouts and a
scalar logical element, the copy widens to SIMD load + cast + SIMD
store using the narrower of the two dtypes' native SIMD widths.
- 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[_Self.StorageType[True, origin_of(self_origin), dst_dtype, self_origin, self_address_space], 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.
distanceβ
static def distance[dtype: DType, address_space: AddressSpace, //](storage: Self.StorageType[False, origin_of(origin), dtype, origin, address_space], other: Self.StorageType[False, origin_of(origin), dtype, origin, 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 (
_Self.StorageType[False, origin_of(origin), dtype, origin, address_space]): The storage to measure the distance to. - βother (
_Self.StorageType[False, origin_of(origin), dtype, origin, 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.
Provided 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.