Skip to main content

BarrierAlgorithm

Enum BarrierAlgorithm 

Source
pub enum BarrierAlgorithm {
    Centralized,
    BinaryTree,
    Dissemination,
}
Expand description

Selects which barrier algorithm a Node uses.

All algorithms are implemented over one-sided RDMA writes and spin-poll on a local memory region, so no CPU involvement is required on the remote side during the synchronization itself.

The algorithm is chosen once at node construction and cannot be changed afterwards. The default used by Node::builder is BinaryTree.

Variants§

§

Centralized

Leader-based barrier. The lowest-ranked participant collects a notification from every other peer, then broadcasts back. O(n) messages; simple and correct but does not scale with large groups.

§

BinaryTree

Tree-structured barrier. Peers are arranged in a binary tree by their position in the sorted peer list. A reduce phase propagates notifications from leaves up to the root, followed by a broadcast phase back down. O(log n) rounds; balanced and generally a good default.

§

Dissemination

Dissemination barrier. In each round every peer notifies the peer at distance d to its right (circularly) and waits for the peer at distance d to its left. The distance doubles each round: 1, 2, 4, … Completes in ⌈log₂ n⌉ rounds with no designated leader and no single point of contention.

Implementations§

Source§

impl BarrierAlgorithm

Source

pub fn instance( &self, pd: &ProtectionDomain, rank: usize, world_size: usize, ) -> IbvResult<PreparedBarrier>

Creates a PreparedBarrier using this algorithm.

Trait Implementations§

Source§

impl Clone for BarrierAlgorithm

Source§

fn clone(&self) -> BarrierAlgorithm

Returns a duplicate 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 BarrierAlgorithm

Source§

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

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

impl Copy for BarrierAlgorithm

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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.