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§
Sourcefn send(
&self,
tensor: Box<dyn ArrayProtocol>,
destination: usize,
) -> CoreResult<()>
fn send( &self, tensor: Box<dyn ArrayProtocol>, destination: usize, ) -> CoreResult<()>
Send a tensor to another worker.
Sourcefn recv(&self, source: usize) -> CoreResult<Box<dyn ArrayProtocol>>
fn recv(&self, source: usize) -> CoreResult<Box<dyn ArrayProtocol>>
Receive a tensor from another worker.
Sourcefn broadcast(
&self,
tensor: Box<dyn ArrayProtocol>,
) -> CoreResult<Box<dyn ArrayProtocol>>
fn broadcast( &self, tensor: Box<dyn ArrayProtocol>, ) -> CoreResult<Box<dyn ArrayProtocol>>
Broadcast a tensor from the master to all workers.
Sourcefn gather(
&self,
tensor: Box<dyn ArrayProtocol>,
) -> CoreResult<Vec<Box<dyn ArrayProtocol>>>
fn gather( &self, tensor: Box<dyn ArrayProtocol>, ) -> CoreResult<Vec<Box<dyn ArrayProtocol>>>
Gather tensors from all workers to the master.
Sourcefn scatter(
&self,
tensors: Vec<Box<dyn ArrayProtocol>>,
) -> CoreResult<Box<dyn ArrayProtocol>>
fn scatter( &self, tensors: Vec<Box<dyn ArrayProtocol>>, ) -> CoreResult<Box<dyn ArrayProtocol>>
Scatter tensors from the master to all workers.
Sourcefn reduce(
&self,
tensor: Box<dyn ArrayProtocol>,
op: &str,
) -> CoreResult<Box<dyn ArrayProtocol>>
fn reduce( &self, tensor: Box<dyn ArrayProtocol>, op: &str, ) -> CoreResult<Box<dyn ArrayProtocol>>
Reduce tensors from all workers to the master.
Sourcefn all_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>>
All-reduce tensors across all workers.
Sourcefn all_gather(
&self,
tensor: Box<dyn ArrayProtocol>,
) -> CoreResult<Vec<Box<dyn ArrayProtocol>>>
fn all_gather( &self, tensor: Box<dyn ArrayProtocol>, ) -> CoreResult<Vec<Box<dyn ArrayProtocol>>>
All-gather tensors from all workers to all workers.
Sourcefn barrier(&self) -> CoreResult<()>
fn barrier(&self) -> CoreResult<()>
Barrier synchronization.
Sourcefn box_clone(&self) -> Box<dyn DistributedCommunication>
fn box_clone(&self) -> Box<dyn DistributedCommunication>
Clone this communication channel.