ESyS-Particle
4.0.1
|
class for variable size scatter/gather buffer, root component More...
#include <mpisgvbuf.h>
Public Member Functions | |
CMPIVarSGBufferRoot (MPI_Comm, int isize=16) | |
virtual void | clear () |
virtual void | gather () |
virtual void | scatter () |
virtual void | append (int, int) |
virtual void | append (double, int) |
virtual void | append (const char *, int) |
virtual int | pop_int (int) |
virtual double | pop_double (int) |
virtual void | pop_doubles (int, double *, int) |
![]() | |
AMPISGBufferRoot (MPI_Comm) | |
virtual void | append (const Vec3 &, int) |
virtual Vec3 | pop_vector (int) |
const MPI_Status & | status () |
Protected Member Functions | |
void | grow () |
void | growTo (int) |
Additional Inherited Members | |
![]() | |
MPI_Comm | m_comm |
the MPI communicator used for the scatter/gather operations | |
int | m_rank |
the rank in this communicator | |
int | m_size |
size of the communicator | |
int | m_int_increment |
int | m_dbl_increment |
the "packing size" of int/double | |
MPI_Status | m_status |
class for variable size scatter/gather buffer, root component
CMPIVarSGBufferRoot::CMPIVarSGBufferRoot | ( | MPI_Comm | comm, |
int | isize = 16 |
||
) |
Constructor for CMPISGBufferRoot
comm | the MPI communicator |
isize | initial buffer size per slice, default 16 byte |
References AMPISGBufferRoot::m_size.
|
virtual |
Append an integer to a given slice of the buffer.
i | the integer |
nslice | the nr. of the slice |
Implements AMPISGBufferRoot.
References grow(), and AMPISGBufferRoot::m_comm.
|
virtual |
Append a double to a given slice of the buffer.
d | the double |
nslice | the nr. of the slice |
Implements AMPISGBufferRoot.
References grow(), AMPISGBufferRoot::m_comm, and AMPISGBufferRoot::m_dbl_increment.
|
virtual |
Append a C-string to a given slice of the buffer.
str | the string |
nslice | the nr. of the slice |
Implements AMPISGBufferRoot.
References grow(), and AMPISGBufferRoot::m_comm.
|
virtual |
Send data to the root process, using MPI_Gather and MPI_Gatherv. The receive buffer grows to fit the data if neccessary.
Implements AMPISGBufferRoot.
References AMPISGBufferRoot::m_comm, AMPISGBufferRoot::m_rank, and AMPISGBufferRoot::m_size.
|
protected |
Grows the buffer to twice its current size, thus guaranteeing that append works in amortized constant time. Currently grows the buffer homogeneously, i.e. all slices have the same size.
References AMPISGBufferRoot::m_size.
Referenced by append().
|
virtual |
Pops an double from a given slice of the the buffer.
nslice | the nr. of the slice |
Implements AMPISGBufferRoot.
References AMPISGBufferRoot::m_comm.
|
virtual |
Pops an integer from a given slice of the the buffer, i.e. it pops the last sizeof(MPI_INT) bytes of the buffer, interpreting them as an int.
nslice | the nr. of the slice |
Implements AMPISGBufferRoot.
References AMPISGBufferRoot::m_comm.
|
virtual |
Send data to all other members of the communicator, using MPI_Scatter/MPI_Scatterv
Implements AMPISGBufferRoot.
References AMPISGBufferRoot::m_comm, AMPISGBufferRoot::m_rank, and AMPISGBufferRoot::m_size.