DistributedCommunication

Trait DistributedCommunication 

Source
pub trait DistributedCommunication: Send + Sync {
    // Required methods
    fn send(
        &self,
        tensor: Box<dyn ArrayProtocol>,
        destination: usize,
    ) -> CoreResult<()>;
    fn recv(&self, source: usize) -> CoreResult<Box<dyn ArrayProtocol>>;
    fn broadcast(
        &self,
        tensor: Box<dyn ArrayProtocol>,
    ) -> CoreResult<Box<dyn ArrayProtocol>>;
    fn gather(
        &self,
        tensor: Box<dyn ArrayProtocol>,
    ) -> CoreResult<Vec<Box<dyn ArrayProtocol>>>;
    fn scatter(
        &self,
        tensors: Vec<Box<dyn ArrayProtocol>>,
    ) -> CoreResult<Box<dyn ArrayProtocol>>;
    fn reduce(
        &self,
        tensor: Box<dyn ArrayProtocol>,
        op: &str,
    ) -> CoreResult<Box<dyn ArrayProtocol>>;
    fn all_reduce(
        &self,
        tensor: Box<dyn ArrayProtocol>,
        op: &str,
    ) -> CoreResult<Box<dyn ArrayProtocol>>;
    fn all_gather(
        &self,
        tensor: Box<dyn ArrayProtocol>,
    ) -> CoreResult<Vec<Box<dyn ArrayProtocol>>>;
    fn barrier(&self) -> CoreResult<()>;
    fn box_clone(&self) -> Box<dyn DistributedCommunication>;
}
Expand description

Trait for distributed communication between nodes.

Required Methods§

Source

fn send( &self, tensor: Box<dyn ArrayProtocol>, destination: usize, ) -> CoreResult<()>

Send a tensor to another worker.

Source

fn recv(&self, source: usize) -> CoreResult<Box<dyn ArrayProtocol>>

Receive a tensor from another worker.

Source

fn broadcast( &self, tensor: Box<dyn ArrayProtocol>, ) -> CoreResult<Box<dyn ArrayProtocol>>

Broadcast a tensor from the master to all workers.

Source

fn gather( &self, tensor: Box<dyn ArrayProtocol>, ) -> CoreResult<Vec<Box<dyn ArrayProtocol>>>

Gather tensors from all workers to the master.

Source

fn scatter( &self, tensors: Vec<Box<dyn ArrayProtocol>>, ) -> CoreResult<Box<dyn ArrayProtocol>>

Scatter tensors from the master to all workers.

Source

fn reduce( &self, tensor: Box<dyn ArrayProtocol>, op: &str, ) -> CoreResult<Box<dyn ArrayProtocol>>

Reduce tensors from all workers to the master.

Source

fn all_reduce( &self, tensor: Box<dyn ArrayProtocol>, op: &str, ) -> CoreResult<Box<dyn ArrayProtocol>>

All-reduce tensors across all workers.

Source

fn all_gather( &self, tensor: Box<dyn ArrayProtocol>, ) -> CoreResult<Vec<Box<dyn ArrayProtocol>>>

All-gather tensors from all workers to all workers.

Source

fn barrier(&self) -> CoreResult<()>

Barrier synchronization.

Source

fn box_clone(&self) -> Box<dyn DistributedCommunication>

Clone this communication channel.

Trait Implementations§

Source§

impl Clone for Box<dyn DistributedCommunication>

Make the Box<dyn DistributedCommunication> cloneable via box_clone

Source§

fn clone(&self) -> Self

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

Implementors§