Trait mpi::collective::Root
[−]
[src]
pub trait Root: AsCommunicator { fn root_rank(&self) -> Rank; fn broadcast_into<Buf: ?Sized>(&self, buffer: &mut Buf)
where
Buf: BufferMut, { ... } fn gather_into<S: ?Sized>(&self, sendbuf: &S)
where
S: Buffer, { ... } fn gather_into_root<S: ?Sized, R: ?Sized>(
&self,
sendbuf: &S,
recvbuf: &mut R
)
where
S: Buffer,
R: BufferMut, { ... } fn gather_varcount_into<S: ?Sized>(&self, sendbuf: &S)
where
S: Buffer, { ... } fn gather_varcount_into_root<S: ?Sized, R: ?Sized>(
&self,
sendbuf: &S,
recvbuf: &mut R
)
where
S: Buffer,
R: PartitionedBufferMut, { ... } fn scatter_into<R: ?Sized>(&self, recvbuf: &mut R)
where
R: BufferMut, { ... } fn scatter_into_root<S: ?Sized, R: ?Sized>(
&self,
sendbuf: &S,
recvbuf: &mut R
)
where
S: Buffer,
R: BufferMut, { ... } fn scatter_varcount_into<R: ?Sized>(&self, recvbuf: &mut R)
where
R: BufferMut, { ... } fn scatter_varcount_into_root<S: ?Sized, R: ?Sized>(
&self,
sendbuf: &S,
recvbuf: &mut R
)
where
S: PartitionedBuffer,
R: BufferMut, { ... } fn reduce_into<S: ?Sized, O>(&self, sendbuf: &S, op: O)
where
S: Buffer,
O: Operation, { ... } fn reduce_into_root<S: ?Sized, R: ?Sized, O>(
&self,
sendbuf: &S,
recvbuf: &mut R,
op: O
)
where
S: Buffer,
R: BufferMut,
O: Operation, { ... } fn immediate_broadcast_into<'a, Sc, Buf: ?Sized>(
&self,
scope: Sc,
buf: &'a mut Buf
) -> Request<'a, Sc>
where
Buf: 'a + BufferMut,
Sc: Scope<'a>, { ... } fn immediate_gather_into<'a, Sc, S: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S
) -> Request<'a, Sc>
where
S: 'a + Buffer,
Sc: Scope<'a>, { ... } fn immediate_gather_into_root<'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_gather_varcount_into<'a, Sc, S: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S
) -> Request<'a, Sc>
where
S: 'a + Buffer,
Sc: Scope<'a>, { ... } fn immediate_gather_varcount_into_root<'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_scatter_into<'a, Sc, R: ?Sized>(
&self,
scope: Sc,
recvbuf: &'a mut R
) -> Request<'a, Sc>
where
R: 'a + BufferMut,
Sc: Scope<'a>, { ... } fn immediate_scatter_into_root<'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_scatter_varcount_into<'a, Sc, R: ?Sized>(
&self,
scope: Sc,
recvbuf: &'a mut R
) -> Request<'a, Sc>
where
R: 'a + BufferMut,
Sc: Scope<'a>, { ... } fn immediate_scatter_varcount_into_root<'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 + BufferMut,
Sc: Scope<'a>, { ... } fn immediate_reduce_into<'a, Sc, S: ?Sized, O>(
&self,
scope: Sc,
sendbuf: &'a S,
op: O
) -> Request<'a, Sc>
where
S: 'a + Buffer,
O: 'a + Operation,
Sc: Scope<'a>, { ... } fn immediate_reduce_into_root<'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>, { ... } }
Something that can take the role of 'root' in a collective operation.
Many collective operations define a 'root' process that takes a special role in the communication. These collective operations are implemented as default methods of this trait.
Required Methods
Provided Methods
fn broadcast_into<Buf: ?Sized>(&self, buffer: &mut Buf) where
Buf: BufferMut,
Buf: BufferMut,
Broadcast of the contents of a buffer
After the call completes, the Buffer
on all processes in the Communicator
of the Root
&self
will contain what it contains on the Root
.
Examples
See examples/broadcast.rs
Standard section(s)
5.4
fn gather_into<S: ?Sized>(&self, sendbuf: &S) where
S: Buffer,
S: Buffer,
Gather contents of buffers on Root
.
After the call completes, the contents of the Buffer
s on all ranks will be
concatenated into the Buffer
on Root
.
All send Buffer
s must have the same count of elements.
This function must be called on all non-root processes.
Examples
See examples/gather.rs
Standard section(s)
5.5
fn gather_into_root<S: ?Sized, R: ?Sized>(&self, sendbuf: &S, recvbuf: &mut R) where
S: Buffer,
R: BufferMut,
S: Buffer,
R: BufferMut,
Gather contents of buffers on Root
.
After the call completes, the contents of the Buffer
s on all ranks will be
concatenated into the Buffer
on Root
.
All send Buffer
s must have the same count of elements.
This function must be called on the root process.
Examples
See examples/gather.rs
Standard section(s)
5.5
fn gather_varcount_into<S: ?Sized>(&self, sendbuf: &S) where
S: Buffer,
S: Buffer,
Gather contents of buffers on Root
.
After the call completes, the contents of the Buffer
s on all ranks will be
concatenated into the Buffer
on Root
.
The send Buffer
s may contain different counts of elements on different processes. The
distribution of elements in the receive Buffer
is specified via Partitioned
.
This function must be called on all non-root processes.
Examples
See examples/gather_varcount.rs
Standard section(s)
5.5
fn gather_varcount_into_root<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 Root
.
After the call completes, the contents of the Buffer
s on all ranks will be
concatenated into the Buffer
on Root
.
The send Buffer
s may contain different counts of elements on different processes. The
distribution of elements in the receive Buffer
is specified via Partitioned
.
This function must be called on the root process.
Examples
See examples/gather_varcount.rs
Standard section(s)
5.5
fn scatter_into<R: ?Sized>(&self, recvbuf: &mut R) where
R: BufferMut,
R: BufferMut,
Scatter contents of a buffer on the root process to all processes.
After the call completes each participating process will have received a part of the send
Buffer
on the root process.
All send Buffer
s must have the same count of elements.
This function must be called on all non-root processes.
Examples
See examples/scatter.rs
Standard section(s)
5.6
fn scatter_into_root<S: ?Sized, R: ?Sized>(&self, sendbuf: &S, recvbuf: &mut R) where
S: Buffer,
R: BufferMut,
S: Buffer,
R: BufferMut,
Scatter contents of a buffer on the root process to all processes.
After the call completes each participating process will have received a part of the send
Buffer
on the root process.
All send Buffer
s must have the same count of elements.
This function must be called on the root process.
Examples
See examples/scatter.rs
Standard section(s)
5.6
fn scatter_varcount_into<R: ?Sized>(&self, recvbuf: &mut R) where
R: BufferMut,
R: BufferMut,
Scatter contents of a buffer on the root process to all processes.
After the call completes each participating process will have received a part of the send
Buffer
on the root process.
The send Buffer
may contain different counts of elements for different processes. The
distribution of elements in the send Buffer
is specified via Partitioned
.
This function must be called on all non-root processes.
Examples
See examples/scatter_varcount.rs
Standard section(s)
5.6
fn scatter_varcount_into_root<S: ?Sized, R: ?Sized>(
&self,
sendbuf: &S,
recvbuf: &mut R
) where
S: PartitionedBuffer,
R: BufferMut,
&self,
sendbuf: &S,
recvbuf: &mut R
) where
S: PartitionedBuffer,
R: BufferMut,
Scatter contents of a buffer on the root process to all processes.
After the call completes each participating process will have received a part of the send
Buffer
on the root process.
The send Buffer
may contain different counts of elements for different processes. The
distribution of elements in the send Buffer
is specified via Partitioned
.
This function must be called on the root process.
Examples
See examples/scatter_varcount.rs
Standard section(s)
5.6
fn reduce_into<S: ?Sized, O>(&self, sendbuf: &S, op: O) where
S: Buffer,
O: Operation,
S: Buffer,
O: Operation,
Performs a global reduction under the operation op
of the input data in sendbuf
and
stores the result on the Root
process.
This function must be called on all non-root processes.
Examples
See examples/reduce.rs
Standard section(s)
5.9.1
fn reduce_into_root<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 on the Root
process.
This function must be called on the root process.
Examples
See examples/reduce.rs
Standard section(s)
5.9.1
fn immediate_broadcast_into<'a, Sc, Buf: ?Sized>(
&self,
scope: Sc,
buf: &'a mut Buf
) -> Request<'a, Sc> where
Buf: 'a + BufferMut,
Sc: Scope<'a>,
&self,
scope: Sc,
buf: &'a mut Buf
) -> Request<'a, Sc> where
Buf: 'a + BufferMut,
Sc: Scope<'a>,
Initiate broadcast of a value from the Root
process to all other processes.
Examples
See examples/immediate_broadcast.rs
Standard section(s)
5.12.2
fn immediate_gather_into<'a, Sc, S: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S
) -> Request<'a, Sc> where
S: 'a + Buffer,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S
) -> Request<'a, Sc> where
S: 'a + Buffer,
Sc: Scope<'a>,
Initiate non-blocking gather of the contents of all sendbuf
s on Root
&self
.
This function must be called on all non-root processes.
Examples
See examples/immediate_gather.rs
Standard section(s)
5.12.3
fn immediate_gather_into_root<'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 on Root
&self
.
This function must be called on the root processes.
Examples
See examples/immediate_gather.rs
Standard section(s)
5.12.3
fn immediate_gather_varcount_into<'a, Sc, S: ?Sized>(
&self,
scope: Sc,
sendbuf: &'a S
) -> Request<'a, Sc> where
S: 'a + Buffer,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S
) -> Request<'a, Sc> where
S: 'a + Buffer,
Sc: Scope<'a>,
Initiate non-blocking gather of the contents of all sendbuf
s on Root
&self
.
This function must be called on all non-root processes.
Examples
See examples/immediate_gather_varcount.rs
Standard section(s)
5.12.3
fn immediate_gather_varcount_into_root<'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 on Root
&self
.
This function must be called on the root processes.
Examples
See examples/immediate_gather_varcount.rs
Standard section(s)
5.12.3
fn immediate_scatter_into<'a, Sc, R: ?Sized>(
&self,
scope: Sc,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
R: 'a + BufferMut,
Sc: Scope<'a>,
&self,
scope: Sc,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
R: 'a + BufferMut,
Sc: Scope<'a>,
Initiate non-blocking scatter of the contents of sendbuf
from Root
&self
.
This function must be called on all non-root processes.
Examples
See examples/immediate_scatter.rs
Standard section(s)
5.12.4
fn immediate_scatter_into_root<'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 scatter of the contents of sendbuf
from Root
&self
.
This function must be called on the root processes.
Examples
See examples/immediate_scatter.rs
Standard section(s)
5.12.4
fn immediate_scatter_varcount_into<'a, Sc, R: ?Sized>(
&self,
scope: Sc,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
R: 'a + BufferMut,
Sc: Scope<'a>,
&self,
scope: Sc,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
R: 'a + BufferMut,
Sc: Scope<'a>,
Initiate non-blocking scatter of the contents of sendbuf
from Root
&self
.
This function must be called on all non-root processes.
Examples
See examples/immediate_scatter_varcount.rs
Standard section(s)
5.12.4
fn immediate_scatter_varcount_into_root<'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 + BufferMut,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S,
recvbuf: &'a mut R
) -> Request<'a, Sc> where
S: 'a + PartitionedBuffer,
R: 'a + BufferMut,
Sc: Scope<'a>,
Initiate non-blocking scatter of the contents of sendbuf
from Root
&self
.
This function must be called on the root processes.
Examples
See examples/immediate_scatter_varcount.rs
Standard section(s)
5.12.4
fn immediate_reduce_into<'a, Sc, S: ?Sized, O>(
&self,
scope: Sc,
sendbuf: &'a S,
op: O
) -> Request<'a, Sc> where
S: 'a + Buffer,
O: 'a + Operation,
Sc: Scope<'a>,
&self,
scope: Sc,
sendbuf: &'a S,
op: O
) -> Request<'a, Sc> where
S: 'a + Buffer,
O: 'a + Operation,
Sc: Scope<'a>,
Initiates a non-blacking global reduction under the operation op
of the input data in
sendbuf
and stores the result on the Root
process.
This function must be called on all non-root processes.
Examples
See examples/immediate_reduce.rs
Standard section(s)
5.12.7
fn immediate_reduce_into_root<'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 on the Root
process.
Examples
See examples/immediate_reduce.rs
This function must be called on the root process.
Standard section(s)
5.12.7
Implementors
impl<'a, C: 'a + Communicator> Root for Process<'a, C>