pub enum BalancingScheme {
BestWorst,
Tensor,
Tensors,
AlternatingTensors,
IntermediateTensors {
height_limit: Option<usize>,
},
AlternatingIntermediateTensors {
height_limit: Option<usize>,
},
AlternatingTreeTensors {
height_limit: usize,
},
}Expand description
The scheme used for greedy balancing of partitions.
Variants§
BestWorst
Moves a tensor from the slowest subtree to the fastest subtree each time.
Tensor
Identifies the tensor in the slowest subtree and passes it to the subtree with largest memory reduction.
Tensors
Identifies the tensor in the slowest subtree and passes it to the subtree with largest memory reduction. Then identifies the tensor with the largest memory reduction when passed to the fastest subtree. Both slowest and fastest subtrees are updated.
AlternatingTensors
Identifies the tensor in the slowest subtree and passes it to the subtree with largest memory reduction for odd iterations or the tensor with the largest memory reduction when passed to the fastest subtree for even iterations.
IntermediateTensors
Identifies the intermediate tensor in the slowest subtree and passes it to the subtree with largest memory reduction. Then identifies the intermediate tensor with the largest memory reduction when passed to the fastest subtree. Both slowest and fastest subtrees are updated.
Fields
height_limit: Option<usize>The height up the contraction tree we look when passing intermediate
tensors between partitions. A value of Some(1) allows intermediate tensors
that are a product of at most 1 contraction process. Using the value of
Some(0) is then equivalent to the Tensors method. Setting it to None
imposes no height limit.
AlternatingIntermediateTensors
Identifies the intermediate tensor in the slowest subtree and passes it to the subtree with largest memory reduction for odd iterations. Identifies the intermediate tensor with the largest memory reduction when passed to the fastest subtree for odd iterations.
Fields
height_limit: Option<usize>The height up the contraction tree we look when passing intermediate
tensors between partitions. A value of Some(1) allows intermediate tensors
that are a product of at most 1 contraction process. Using the value of
Some(0) is then equivalent to the Tensors method. Setting it to None
imposes no height limit.
AlternatingTreeTensors
Identifies the intermediate tensor in the slowest subtree and passes it to the subtree with largest memory reduction for odd iterations. Identifies the intermediate tensor with the largest memory reduction when passed to the fastest subtree for odd iterations.
Trait Implementations§
Source§impl Clone for BalancingScheme
impl Clone for BalancingScheme
Source§fn clone(&self) -> BalancingScheme
fn clone(&self) -> BalancingScheme
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BalancingScheme
impl Debug for BalancingScheme
impl Copy for BalancingScheme
Auto Trait Implementations§
impl Freeze for BalancingScheme
impl RefUnwindSafe for BalancingScheme
impl Send for BalancingScheme
impl Sync for BalancingScheme
impl Unpin for BalancingScheme
impl UnwindSafe for BalancingScheme
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specialization§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
§impl<T> ConvUtil for T
impl<T> ConvUtil for T
§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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