Skip to main content

AutoDiscoveryBackend

Struct AutoDiscoveryBackend 

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

Auto-discovery distributed backend.

Automatically discovers peers on the local network using mDNS/Bonjour and establishes connections for gradient synchronization.

Implementations§

Source§

impl AutoDiscoveryBackend

Source

pub async fn new() -> Result<Self>

Create a new auto-discovery backend with default configuration.

Source

pub async fn with_config(config: AutoDiscoveryConfig) -> Result<Self>

Create a new auto-discovery backend with custom configuration.

Source

pub fn peer_id(&self) -> &PeerId

Get the local node’s peer ID.

Source

pub fn peer_id_string(&self) -> String

Get the local node’s peer ID as a string.

Source

pub fn topology(&self) -> SharedTopology

Get the current cluster topology.

Source

pub fn peer_count(&self) -> usize

Get the number of discovered peers.

Source

pub async fn wait_for_peers( &self, min_peers: usize, timeout_duration: Duration, ) -> Result<usize>

Wait for a minimum number of peers to be discovered.

Returns the number of peers found, or an error if timeout occurs.

Source

pub async fn establish_ring(&self) -> Result<()>

Ensure the ring is established, initialising it exactly once.

Uses tokio::sync::OnceCell::get_or_try_init so that exactly one concurrent caller performs the TCP connection and all others wait. If the connection attempt fails the cell remains unset, allowing the caller to retry on the next all-reduce.

Source

pub fn is_ring_ready(&self) -> bool

Check if the ring has been successfully established.

Returns true iff establish_ring has completed successfully at least once. This is a cheap non-blocking check suitable for logging.

Trait Implementations§

Source§

impl Debug for AutoDiscoveryBackend

Source§

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

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

impl DistributedBackend for AutoDiscoveryBackend

Source§

fn rank(&self) -> usize

Get the rank of this node (0 to world_size - 1).
Source§

fn world_size(&self) -> usize

Get the total number of nodes.
Source§

fn all_reduce<'life0, 'life1, 'async_trait>( &'life0 self, buffer: &'life1 mut [u8], op: ReduceOp, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Perform an all-reduce operation on a buffer. Read more
Source§

fn barrier<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Barrier synchronization.

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more