Skip to main content

PreparedDiagonalPlan

Struct PreparedDiagonalPlan 

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

Caller-owned, device-bound indices for repeated-axis diagonal extraction.

Axis ids represent the input side of an einsum equation: equal ids are the repeated labels whose diagonal is retained, and first occurrence order determines the output axes. Preparing once avoids rebuilding and uploading the same u32 index tensor for repeated calls with the same shape.

Implementations§

Source§

impl PreparedDiagonalPlan

Source

pub fn new( input_shape: &[usize], axis_ids: &[usize], device: &Device, ) -> Result<Self>

Prepares reusable diagonal indices for one exact shape and device.

Source

pub fn repeated( extent: usize, multiplicity: usize, device: &Device, ) -> Result<Self>

Convenience constructor for i i ... -> i extraction.

Source

pub fn interleaved( first_extent: usize, second_extent: usize, device: &Device, ) -> Result<Self>

Convenience constructor for i j i j -> i j extraction.

Source

pub fn execute(&self, input: &Tensor) -> Result<Tensor>

Extracts the prepared diagonal from one contiguous tensor.

Source

pub fn input_shape(&self) -> &[usize]

Exact input shape captured by this plan.

Source

pub fn axis_ids(&self) -> &[usize]

Axis ids captured from the input-side equation.

Source

pub fn output_shape(&self) -> &[usize]

Unique-axis output shape in first-occurrence order.

Source

pub const fn index_dtype(&self) -> DType

Device index representation used by the prepared gather.

Source

pub fn indices(&self) -> &Tensor

Prepared device-local indices, exposed for diagnostics and benchmarking.

Trait Implementations§

Source§

impl Debug for PreparedDiagonalPlan

Source§

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

Formats the value using the given formatter. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V