Struct ndarray_einsum_beta::contractors::pair_contractors::StackedTensordotGeneral[][src]

pub struct StackedTensordotGeneral {
    lhs_permutation: Permutation,
    rhs_permutation: Permutation,
    lhs_output_shape: Vec<usize>,
    rhs_output_shape: Vec<usize>,
    intermediate_shape: Vec<usize>,
    tensordot_fixed_position: TensordotFixedPosition,
    output_shape: Vec<usize>,
    output_permutation: Permutation,
}

Repeatedly computes the tensor dot of subviews of the two tensors, iterating over indices which appear in the LHS, RHS, and output.

The indices appearing in all three places are referred to here as the “stack” indices. For example, in the contraction ijk,ikl->ijl, i would be the (only) “stack” index. This contraction is an instance of batch matrix multiplication. The LHS and RHS are both 3-D tensors and the ith (2-D) subview of the output is the matrix product of the ith subview of the LHS matrix-multiplied by the ith subview of the RHS.

This is the most general contraction and in theory could handle all pairwise contractions, but is less performant than special-casing when there are no “stack” indices. It is also currently the only case that requires .outer_iter_mut() (which might make parallelizing operations more difficult).

Fields

lhs_permutation: Permutationrhs_permutation: Permutationlhs_output_shape: Vec<usize>rhs_output_shape: Vec<usize>intermediate_shape: Vec<usize>tensordot_fixed_position: TensordotFixedPositionoutput_shape: Vec<usize>output_permutation: Permutation

Implementations

impl StackedTensordotGeneral[src]

pub fn new(sc: &SizedContraction) -> Self[src]

Trait Implementations

impl Clone for StackedTensordotGeneral[src]

impl Debug for StackedTensordotGeneral[src]

impl<A> PairContractor<A> for StackedTensordotGeneral[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.