Synchronously scatter data from the ghosts to the local decomposition of a slice using the halo reverse communication plan. This is a multiply-owned to uniquely owned communication.
More...
|
| Scatter (HaloType halo, SliceType slice, const double overallocation=1.0) |
|
auto | totalSend () |
| Total scatter send size for this rank.
|
|
auto | totalReceive () |
| Total scatter receive size for this rank.
|
|
template<class ExecutionSpace> |
void | apply (ExecutionSpace) |
| Perform the scatter operation.
|
|
void | apply () override |
| Perform the communication (migrate, gather, scatter).
|
|
void | reserve (const HaloType &halo, const SliceType &slice, const double overallocation) |
| Reserve new buffers as needed and update the halo and slice data. Reallocation only occurs if there is not enough space in the buffers.
|
|
void | reserve (const HaloType &halo, const SliceType &slice) |
| Reserve new buffers as needed and update the halo and slice data.
|
|
| CommunicationData (const HaloType &comm_plan, const particle_data_type &particles, const double overallocation=1.0) |
|
buffer_type | getSendBuffer () const |
| Get the communication send buffer.
|
|
buffer_type | getReceiveBuffer () const |
| Get the communication receive buffer.
|
|
particle_data_type | getData () const |
| Get the particles to communicate.
|
|
void | setData (const particle_data_type &particles) |
| Update particles to communicate.
|
|
auto | sendSize () |
| Current send buffer size.
|
|
auto | receiveSize () |
| Current receive buffer size.
|
|
auto | sendCapacity () |
| Current allocated send buffer space.
|
|
auto | receiveCapacity () |
| Current allocated receive buffer space.
|
|
void | shrinkToFit (const bool use_overallocation=false) |
| Reduce communication buffers to current send/receive sizes.
|
|
void | apply (ExecutionSpace) |
| Perform the communication (migrate, gather, scatter).
|
|
| CommunicationData (const HaloType &comm_plan, const particle_data_type &particles, const double overallocation=1.0) |
|
buffer_type | getSendBuffer () const |
| Get the communication send buffer.
|
|
buffer_type | getReceiveBuffer () const |
| Get the communication receive buffer.
|
|
particle_data_type | getData () const |
| Get the particles to communicate.
|
|
void | setData (const particle_data_type &particles) |
| Update particles to communicate.
|
|
auto | sendSize () |
| Current send buffer size.
|
|
auto | receiveSize () |
| Current receive buffer size.
|
|
auto | sendCapacity () |
| Current allocated send buffer space.
|
|
auto | receiveCapacity () |
| Current allocated receive buffer space.
|
|
void | shrinkToFit (const bool use_overallocation=false) |
| Reduce communication buffers to current send/receive sizes.
|
|
void | apply (ExecutionSpace) |
| Perform the communication (migrate, gather, scatter).
|
|
template<class HaloType, class SliceType>
class Cabana::Scatter< HaloType, SliceType >
Synchronously scatter data from the ghosts to the local decomposition of a slice using the halo reverse communication plan. This is a multiply-owned to uniquely owned communication.
In a scatter operation results from ghosted values on other processors are scattered back to the owning processor of the ghost and the value associated with the ghost is summed into the locally owned value the ghost represents. If a locally owned element is ghosted on multiple ranks, then multiple contributions will be made to the sum, one for each rank.