Definition at line 157 of file ParallelComm.hpp.
Public Member Functions | |
| ParallelMachine | parallel () const |
| unsigned | parallel_size () const |
| unsigned | parallel_rank () const |
| CommBuffer & | send_buffer (unsigned) const |
| CommBuffer & | recv_buffer (unsigned) const |
| CommAll () | |
| bool | allocate_buffers (ParallelMachine, const unsigned num_msg_bounds, const unsigned *const send_size, const unsigned *const recv_size, const bool local_flag=false) |
| CommAll (ParallelMachine) | |
| bool | allocate_buffers (const unsigned num_msg_bounds, const bool symmetric=false, const bool local_flag=false) |
| void | communicate () |
| void | swap_send_recv () |
| void | reset_buffers () |
| phdmesh::CommAll::CommAll | ( | ) |
Construct for undefined communication. No buffers are allocated.
| phdmesh::CommAll::CommAll | ( | ParallelMachine | ) | [explicit] |
Construct for a to-be-sized communication. Allocate surrogate send buffers to enable no-op packing for the purpose of send sizing. Surrogate send scenario: 1) Surrogate send buffers are "packed" for sizing where packing sizes are recorded but no data is copied. 2) 'allocate_buffers(symmetric,flag)' is called to allocate buffers. The symmetric flag guarantees that the send sizes matches the receive sizes. 3) Send buffers are identically packed; however, this packing copies data into the send buffers.
| CommBuffer & phdmesh::CommAll::send_buffer | ( | unsigned | ) | const [inline] |
Obtain the message buffer for a given processor
Definition at line 459 of file ParallelComm.hpp.
| CommBuffer & phdmesh::CommAll::recv_buffer | ( | unsigned | ) | const [inline] |
Obtain the message buffer for a given processor
Definition at line 466 of file ParallelComm.hpp.
| bool phdmesh::CommAll::allocate_buffers | ( | ParallelMachine | , | |
| const unsigned | num_msg_bounds, | |||
| const unsigned *const | send_size, | |||
| const unsigned *const | recv_size, | |||
| const bool | local_flag = false | |||
| ) |
Allocate send and receive buffers based upon input sizes. If recv_size == NULL then the receive size is determined by communicating the send sizes. Symmetry is given by passing the same data for both send and receive sizes. Return global parallel OR of local flags.
| bool phdmesh::CommAll::allocate_buffers | ( | const unsigned | num_msg_bounds, | |
| const bool | symmetric = false, |
|||
| const bool | local_flag = false | |||
| ) |
Allocate asymmetric communication based upon sizing from the surrogate send buffer packing. If symmetric then the receive sizes are guaranteed to be identical to the send sizes. Return global parallel OR of local flags.
| void phdmesh::CommAll::communicate | ( | ) |
Communicate send buffers to receive buffers.
| void phdmesh::CommAll::swap_send_recv | ( | ) |
Swap send and receive buffers leading to reversed communication.
| void phdmesh::CommAll::reset_buffers | ( | ) |
Reset, but do not reallocate, message buffers for reprocessing. Sets 'size() == 0' and 'remaining() == capacity()'.
1.4.7