ESyS-Particle  2.3.4
mpia2abuf.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 #ifndef __MPIA2ABUFFER_H
14 #define __MPIA2ABUFFER_H
15 
16 #include <mpi.h>
17 
27 {
28  private:
29  MPI_Comm m_comm;
30  int m_rank;
31  int m_size;
33  MPI_Status m_status;
34  char* m_buffer_s;
35  char* m_buffer_r;
37  int *m_position_s;
38  int *m_position_r;
39 
40  public:
41  CMPIA2ABuffer(MPI_Comm,int);
42  virtual ~CMPIA2ABuffer();
43 
44  virtual void clear();
45  virtual void all2all();
46  virtual void append(int,int);
47  virtual void append(double,int);
48  virtual int pop_int(int);
49  virtual double pop_double(int);
50 };
51 
52 #endif //__MPIA2ABUFFER_H
CMPIA2ABuffer::~CMPIA2ABuffer
virtual ~CMPIA2ABuffer()
Definition: mpia2abuf.cpp:34
CMPIA2ABuffer::m_comm
MPI_Comm m_comm
Definition: mpia2abuf.h:29
CMPIA2ABuffer::CMPIA2ABuffer
CMPIA2ABuffer(MPI_Comm, int)
Definition: mpia2abuf.cpp:15
CMPIA2ABuffer::m_dbl_increment
int m_dbl_increment
the "packing size" of int/double
Definition: mpia2abuf.h:32
CMPIA2ABuffer
class for a MPI-buffer supporting all-to-all communication
Definition: mpia2abuf.h:27
CMPIA2ABuffer::m_status
MPI_Status m_status
Definition: mpia2abuf.h:33
CMPIA2ABuffer::pop_double
virtual double pop_double(int)
Definition: mpia2abuf.cpp:105
CMPIA2ABuffer::m_rank
int m_rank
the rank in this communicator
Definition: mpia2abuf.h:30
CMPIA2ABuffer::m_buffersize
int m_buffersize
the size of the buffer per slice
Definition: mpia2abuf.h:36
CMPIA2ABuffer::clear
virtual void clear()
Definition: mpia2abuf.cpp:42
CMPIA2ABuffer::m_position_r
int * m_position_r
the current end of the content in each slice of the receive buffer
Definition: mpia2abuf.h:38
CMPIA2ABuffer::m_size
int m_size
size of the communicator
Definition: mpia2abuf.h:31
CMPIA2ABuffer::pop_int
virtual int pop_int(int)
Definition: mpia2abuf.cpp:89
CMPIA2ABuffer::all2all
virtual void all2all()
Definition: mpia2abuf.cpp:50
CMPIA2ABuffer::m_int_increment
int m_int_increment
Definition: mpia2abuf.h:32
CMPIA2ABuffer::m_buffer_s
char * m_buffer_s
send buffer
Definition: mpia2abuf.h:34
CMPIA2ABuffer::m_buffer_r
char * m_buffer_r
receive buffer
Definition: mpia2abuf.h:35
CMPIA2ABuffer::append
virtual void append(int, int)
Definition: mpia2abuf.cpp:63
CMPIA2ABuffer::m_position_s
int * m_position_s
the current end of the content in each slice of the send buffer
Definition: mpia2abuf.h:37
mpia2abuf.h