Skip to main content
Log in

Mojo struct

DeviceTensor

Fields

  • spec (TensorSpec):

Implemented traits

AnyType, CollectionElement, Copyable, DeviceBuffer, Movable, StringableRaising

Methods

__init__

__init__(inout self: Self, spec: TensorSpec, device: Device, name: Optional[String])

Allocates a DeviceTensor in the Device's address space.

Args:

  • spec (TensorSpec): TensorSpec describing the dtype and shape of the DeviceTensor.
  • device (Device): Device on which to perform the allocation.
  • name (Optional[String]): Optional name for the DeviceMemory.

__init__(inout self: Self)

Constructs a DeviceTensor in a state that is only valid for deletion. Can be used to represent a moved from state.

__init__(inout self: Self, owned storage: DeviceMemory, spec: TensorSpec)

Constructs a DeviceTensor from an existing storage buffer and spec.

Args:

  • storage (DeviceMemory): The storage backing the DeviceTensor.
  • spec (TensorSpec): TensorSpec describing the type and shape of the DeviceTensor.

__copyinit__

__copyinit__(inout self: Self, existing: Self)

__moveinit__

__moveinit__(inout self: Self, owned existing: Self)

copy_to

copy_to(self: Self, dev: Device, name: Optional[String] = #kgen.none) -> Self

Copies the contents of self into a DeviceTensor allocated on dev. Note: this function allocates memory on dev.

Args:

  • dev (Device): The Device on which to allocate the new DeviceTensor.
  • name (Optional[String]): Optional name of the new DeviceTensor.

Returns:

Newly allocated DeviceTensor containing a copy of self's contents.

Raises:

If the DeviceTensor is backed by the same Device object as dev.

copy_into

copy_into(self: Self, inout dst_tensor: Self)

Copies the contents of self into a preallocated DeviceTensor.

Args:

  • dst_tensor (Self): The destination DeviceTensor of the copy.

move_to

move_to(owned self: Self, dev: Device) -> Self

Returns self if already allocated on dev, otherwise copy the contents of self to dev.

Args:

  • dev (Device): The Device on which the returned buffer is allocated.

Returns:

A DeviceTensor located in dev's address space.

unsafe_ptr

unsafe_ptr(self: Self) -> UnsafePointer[SIMD[uint8, 1], 0, 0, alignof[::AnyType,__mlir_type.!kgen.target]() if triple_is_nvidia_cuda() else 1]

Returns a pointer to the DeviceTensor's storage in device memory.

to_tensor

to_tensor[type: DType, rank: Int](owned self: Self) -> Tensor[$0, $1]

Returns a Tensor created using the DeviceTensor's shape and storage.

device

device(self: Self) -> Device

Returns the Device on which the DeviceTensor was allocated.

name

name(self: Self) -> Optional[String]

Returns the name of the DeviceTensor.

__str__

__str__(self: Self) -> String

Returns a descriptor for the DeviceTensor.

bytecount

bytecount(self: Self) -> Int

Returns the number of bytes in the DeviceTensor.

take

take(inout self: Self) -> Self

Takes and returns the contents of self, leaving self in an empty but destructible state.

Was this page helpful?