tvm_ffi::collections::tensor

Struct TensorView

Source
pub struct TensorView { /* private fields */ }
Expand description

A non-owning view of a tensor: a pointer to a DLTensor.

This mirrors tvm::ffi::TensorView in C++. A function argument of this type accepts both a borrowed DLTensor* (type index kTVMFFIDLTensorPtr, how C and C++ callers pass tensors) and a Tensor object (type index kTVMFFITensor), and is passed on as a DLTensor*. Prefer it over Tensor for arguments of exported functions that only read a tensor’s metadata and data.

The view does not keep anything alive. The caller must ensure that the DLTensor it points to, and the memory that the DLTensor points to (data, shape and strides), outlive every use of the view. For an argument of an exported function, that is the duration of the call. For the same reason, as in C++, a view cannot be moved into an owned Any; use Tensor instead.

Implementations§

Source§

impl TensorView

Source

pub unsafe fn from_raw(tensor: *const DLTensor) -> Self

Creates a view of a DLTensor.

§Safety

tensor must be non-null and valid for every use of the view.

Source

pub fn as_raw(&self) -> *const DLTensor

The viewed DLTensor.

Source

pub fn data_ptr(&self) -> *mut c_void

The data pointer, as in the DLTensor; byte_offset is not applied.

Source

pub fn device(&self) -> DLDevice

Source

pub fn dtype(&self) -> DLDataType

Source

pub fn ndim(&self) -> usize

Source

pub fn shape(&self) -> &[i64]

Source

pub fn numel(&self) -> usize

Source

pub fn strides(&self) -> &[i64]

The strides, in elements.

§Panics

If the DLTensor has null strides and at least one dimension, which DLPack forbids since v1.2, as C++ TensorView::strides checks.

Source

pub fn is_contiguous(&self) -> bool

Whether the elements are laid out in row-major order without gaps, as C++ tvm::ffi::IsContiguous decides: a DLTensor with null strides or no elements is contiguous, and a dimension of extent 1 may have any stride.

Trait Implementations§

Source§

impl AnyCompatible for TensorView

Source§

fn type_str() -> String

the type string of the type
Source§

unsafe fn copy_to_any_view(src: &Self, data: &mut TVMFFIAny)

the value to copy to TVMFFIAny
Source§

unsafe fn move_to_any(_src: Self, _data: &mut TVMFFIAny)

consume the value to move to Any
Source§

unsafe fn check_any_strict(data: &TVMFFIAny) -> bool

Source§

unsafe fn copy_from_any_view_after_check(data: &TVMFFIAny) -> Self

Copy value from TVMFFIAny after checking caller must ensure that the value is compatible with the type
Source§

unsafe fn move_from_any_after_check(_data: &mut TVMFFIAny) -> Self

the value to move from TVMFFIAny NOTE: pay very careful attention to avoid memory leak! Read more
Source§

unsafe fn try_cast_from_any_view(data: &TVMFFIAny) -> Result<Self, ()>

try to cast the value from AnyView
Source§

unsafe fn is_undefined(field: *const Self) -> bool

Whether field, which holds a value of this type or all-zero bytes, holds all-zero bytes that are no value of this type, as a null object reference, a string of type index None or a zero device type: a field that a creator left undefined for reflection to set, as C++ UnsafeInit leaves a reference undefined (null). Unlike a C++ undefined reference, it is no value; a nullable reference is Option<T>, whose None is a defined value. Read more
Source§

fn get_mismatch_type_info(data: &TVMFFIAny) -> String

Get the type key of a type when TryCastFromAnyView fails.
Source§

fn type_schema() -> String

The type schema of the type: the JSON object C++ TypeTraits<T>::TypeSchema writes, which the type schemas of functions and fields embed. Read more
Source§

fn to_any(&self) -> Any

Borrow self into an owned Any, increfing object-backed values. Read more
Source§

impl Clone for TensorView

Source§

fn clone(&self) -> TensorView

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TensorView

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<&Tensor> for TensorView

Source§

fn from(tensor: &Tensor) -> Self

Converts to this type from the input type.
Source§

impl<'a> TryFrom<AnyView<'a>> for TensorView

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(value: AnyView<'a>) -> Result<Self>

Performs the conversion.
Source§

impl Copy for TensorView

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.