Trait mpi::collective::CommunicatorCollectives
[−]
[src]
pub trait CommunicatorCollectives: Communicator { fn barrier(&self) { ... } fn all_gather_into<S: ?Sized, R: ?Sized>(
&self,
sendbuf: &S,
recvbuf: &mut R
)
where
S: Buffer,
R: BufferMut, { ... } fn all_gather_varcount_into<S: ?Sized, R: ?Sized>(
&self,
sendbuf: &S,
recvbuf: &mut R
)
where
S: Buffer,
R: PartitionedBufferMut, { ... } fn all_to_all_into<S: ?Sized, R: ?Sized>(
&self,
sendbuf: &S,
recvbuf: &mut R
)
where
S: Buffer,
R: BufferMut, { ... } fn all_to_all_varcount_into<S: ?Sized, R: ?Sized>(
&self,
sendbuf: &S,
recvbuf: &mut R
)
where
S: PartitionedBuffer,
R: PartitionedBufferMut, { ... } fn all_reduce_into<S: ?Sized, R: ?Sized, O>(
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
)
where
S: Buffer,
R: BufferMut,
O: Operation, { ... } fn reduce_scatter_block_into<S: ?Sized, R: ?Sized, O>(
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
)
where
S: Buffer,
R: BufferMut,
O: Operation, { ... } fn scan_into<S: ?Sized, R: ?Sized, O>(
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
)
where
S: Buffer,
R: BufferMut,
O: Operation, { ... } fn exclusive_scan_into<S: ?Sized, R: ?Sized, O>(
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
)
where
S: Buffer,
R: BufferMut,
O: Operation, { ... } fn immediate_barrier(&self) -> Request<'static, StaticScope> { ... } fn immediate_all_gather_into<'a, Sc, S: ?Sized, R: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc>
where
S: 'a + Buffer,
R: 'a + BufferMut,
Sc: Scope<'a>, { ... } fn immediate_all_gather_varcount_into<'a, Sc, S: ?Sized, R: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc>
where
S: 'a + Buffer,
R: 'a + PartitionedBufferMut,
Sc: Scope<'a>, { ... } fn immediate_all_to_all_into<'a, Sc, S: ?Sized, R: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc>
where
S: 'a + Buffer,
R: 'a + BufferMut,
Sc: Scope<'a>, { ... } fn immediate_all_to_all_varcount_into<'a, Sc, S: ?Sized, R: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc>
where
S: 'a + PartitionedBuffer,
R: 'a + PartitionedBufferMut,
Sc: Scope<'a>, { ... } fn immediate_all_reduce_into<'a, Sc, S: ?Sized, R: ?Sized, O>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc>
where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>, { ... } fn immediate_reduce_scatter_block_into<'a, Sc, S: ?Sized, R: ?Sized, O>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc>
where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>, { ... } fn immediate_scan_into<'a, Sc, S: ?Sized, R: ?Sized, O>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc>
where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>, { ... } fn immediate_exclusive_scan_into<'a, Sc, S: ?Sized, R: ?Sized, O>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc>
where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>, { ... } }
Collective communication patterns defined on Communicator
s
Provided Methods
fn barrier(&self)
Barrier synchronization among all processes in a Communicator
Partake in a barrier synchronization across all processes in the Communicator
&self
.
Calling processes (or threads within the calling processes) will enter the barrier and block
execution until all processes in the Communicator
&self
have entered the barrier.
Examples
See examples/barrier.rs
Standard section(s)
5.3
fn all_gather_into<S: ?Sized, R: ?Sized>(&self, sendbuf: &S, recvbuf: &mut R) where
S: Buffer,
R: BufferMut,
S: Buffer,
R: BufferMut,
Gather contents of buffers on all participating processes.
After the call completes, the contents of the send Buffer
s on all processes will be
concatenated into the receive Buffer
s on all ranks.
All send Buffer
s must contain the same count of elements.
Examples
See examples/all_gather.rs
Standard section(s)
5.7
fn all_gather_varcount_into<S: ?Sized, R: ?Sized>(
&self,
sendbuf: &S,
recvbuf: &mut R
) where
S: Buffer,
R: PartitionedBufferMut,
&self,
sendbuf: &S,
recvbuf: &mut R
) where
S: Buffer,
R: PartitionedBufferMut,
Gather contents of buffers on all participating processes.
After the call completes, the contents of the send Buffer
s on all processes will be
concatenated into the receive Buffer
s on all ranks.
The send Buffer
s may contain different counts of elements on different processes. The
distribution of elements in the receive Buffer
s is specified via Partitioned
.
Examples
See examples/all_gather_varcount.rs
Standard section(s)
5.7
fn all_to_all_into<S: ?Sized, R: ?Sized>(&self, sendbuf: &S, recvbuf: &mut R) where
S: Buffer,
R: BufferMut,
S: Buffer,
R: BufferMut,
Distribute the send Buffer
s from all processes to the receive Buffer
s on all processes.
Each process sends and receives the same count of elements to and from each process.
Examples
See examples/all_to_all.rs
Standard section(s)
5.8
fn all_to_all_varcount_into<S: ?Sized, R: ?Sized>(
&self,
sendbuf: &S,
recvbuf: &mut R
) where
S: PartitionedBuffer,
R: PartitionedBufferMut,
&self,
sendbuf: &S,
recvbuf: &mut R
) where
S: PartitionedBuffer,
R: PartitionedBufferMut,
Distribute the send Buffer
s from all processes to the receive Buffer
s on all processes.
The count of elements to send and receive to and from each process can vary and is specified
using Partitioned
.
Standard section(s)
5.8
fn all_reduce_into<S: ?Sized, R: ?Sized, O>(
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
) where
S: Buffer,
R: BufferMut,
O: Operation,
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
) where
S: Buffer,
R: BufferMut,
O: Operation,
Performs a global reduction under the operation op
of the input data in sendbuf
and
stores the result in recvbuf
on all processes.
Examples
See examples/reduce.rs
Standard section(s)
5.9.6
fn reduce_scatter_block_into<S: ?Sized, R: ?Sized, O>(
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
) where
S: Buffer,
R: BufferMut,
O: Operation,
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
) where
S: Buffer,
R: BufferMut,
O: Operation,
Performs an element-wise global reduction under the operation op
of the input data in
sendbuf
and scatters the result into equal sized blocks in the receive buffers on all
processes.
Examples
See examples/reduce.rs
Standard section(s)
5.10.1
fn scan_into<S: ?Sized, R: ?Sized, O>(
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
) where
S: Buffer,
R: BufferMut,
O: Operation,
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
) where
S: Buffer,
R: BufferMut,
O: Operation,
Performs a global inclusive prefix reduction of the data in sendbuf
into recvbuf
under
operation op
.
Examples
See examples/scan.rs
Standard section(s)
5.11.1
fn exclusive_scan_into<S: ?Sized, R: ?Sized, O>(
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
) where
S: Buffer,
R: BufferMut,
O: Operation,
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
) where
S: Buffer,
R: BufferMut,
O: Operation,
Performs a global exclusive prefix reduction of the data in sendbuf
into recvbuf
under
operation op
.
Examples
See examples/scan.rs
Standard section(s)
5.11.2
fn immediate_barrier(&self) -> Request<'static, StaticScope>
Non-blocking barrier synchronization among all processes in a Communicator
Calling processes (or threads within the calling processes) enter the barrier. Completion methods on the associated request object will block until all processes have entered.
Examples
See examples/immediate_barrier.rs
Standard section(s)
5.12.1
fn immediate_all_gather_into<'a, Sc, S: ?Sized, R: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
Sc: Scope<'a>,
Initiate non-blocking gather of the contents of all sendbuf
s into all rcevbuf
s on all
processes in the communicator.
Examples
See examples/immediate_all_gather.rs
Standard section(s)
5.12.5
fn immediate_all_gather_varcount_into<'a, Sc, S: ?Sized, R: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + PartitionedBufferMut,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + PartitionedBufferMut,
Sc: Scope<'a>,
Initiate non-blocking gather of the contents of all sendbuf
s into all rcevbuf
s on all
processes in the communicator.
Examples
See examples/immediate_all_gather_varcount.rs
Standard section(s)
5.12.5
fn immediate_all_to_all_into<'a, Sc, S: ?Sized, R: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
Sc: Scope<'a>,
Initiate non-blocking all-to-all communication.
Examples
See examples/immediate_all_to_all.rs
Standard section(s)
5.12.6
fn immediate_all_to_all_varcount_into<'a, Sc, S: ?Sized, R: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
S: 'a + PartitionedBuffer,
R: 'a + PartitionedBufferMut,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
S: 'a + PartitionedBuffer,
R: 'a + PartitionedBufferMut,
Sc: Scope<'a>,
fn immediate_all_reduce_into<'a, Sc, S: ?Sized, R: ?Sized, O>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>,
Initiates a non-blocking global reduction under the operation op
of the input data in
sendbuf
and stores the result in recvbuf
on all processes.
Examples
See examples/immediate_reduce.rs
Standard section(s)
5.12.8
fn immediate_reduce_scatter_block_into<'a, Sc, S: ?Sized, R: ?Sized, O>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>,
Initiates a non-blocking element-wise global reduction under the operation op
of the
input data in sendbuf
and scatters the result into equal sized blocks in the receive
buffers on all processes.
Examples
See examples/immediate_reduce.rs
Standard section(s)
5.12.9
fn immediate_scan_into<'a, Sc, S: ?Sized, R: ?Sized, O>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>,
Initiates a non-blocking global inclusive prefix reduction of the data in sendbuf
into
recvbuf
under operation op
.
Examples
See examples/immediate_scan.rs
Standard section(s)
5.12.11
fn immediate_exclusive_scan_into<'a, Sc, S: ?Sized, R: ?Sized, O>(
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R,
op: O
) -> Request<'a, Sc> where
S: 'a + Buffer,
R: 'a + BufferMut,
O: 'a + Operation,
Sc: Scope<'a>,
Initiates a non-blocking global exclusive prefix reduction of the data in sendbuf
into
recvbuf
under operation op
.
Examples
See examples/immediate_scan.rs
Standard section(s)
5.12.12
Implementors
impl<C: Communicator> CommunicatorCollectives for C