Struct ndarray_einsum_beta::contractors::pair_contractors::StackedTensordotGeneral [−][src]
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 i
th (2-D) subview of the output is the matrix product of the i
th
subview of the LHS matrix-multiplied by the i
th 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: 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
Implementations
impl StackedTensordotGeneral
[src]
pub fn new(sc: &SizedContraction) -> Self
[src]
Trait Implementations
impl Clone for StackedTensordotGeneral
[src]
fn clone(&self) -> StackedTensordotGeneral
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for StackedTensordotGeneral
[src]
impl<A> PairContractor<A> for StackedTensordotGeneral
[src]
fn contract_pair<'a, 'b, 'c, 'd>(
&self,
lhs: &'b ArrayViewD<'a, A>,
rhs: &'d ArrayViewD<'c, A>
) -> ArrayD<A> where
'a: 'b,
'c: 'd,
A: Clone + LinalgScalar,
[src]
&self,
lhs: &'b ArrayViewD<'a, A>,
rhs: &'d ArrayViewD<'c, A>
) -> ArrayD<A> where
'a: 'b,
'c: 'd,
A: Clone + LinalgScalar,
fn contract_and_assign_pair<'a, 'b, 'c, 'd, 'e, 'f>(
&self,
lhs: &'b ArrayViewD<'a, A>,
rhs: &'d ArrayViewD<'c, A>,
out: &'f mut ArrayViewMutD<'e, A>
) where
'a: 'b,
'c: 'd,
'e: 'f,
A: Clone + LinalgScalar,
[src]
&self,
lhs: &'b ArrayViewD<'a, A>,
rhs: &'d ArrayViewD<'c, A>,
out: &'f mut ArrayViewMutD<'e, A>
) where
'a: 'b,
'c: 'd,
'e: 'f,
A: Clone + LinalgScalar,
Auto Trait Implementations
impl RefUnwindSafe for StackedTensordotGeneral
impl Send for StackedTensordotGeneral
impl Sync for StackedTensordotGeneral
impl Unpin for StackedTensordotGeneral
impl UnwindSafe for StackedTensordotGeneral
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,