Bridge++  Version 1.4.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Communicator Class Reference

Communication library which wraps MPI. More...

#include <communicator.h>

Classes

class  Base
 base case More...
 

Static Public Member Functions

static int init (int *pargc, char ***pargv)
 initialize communicator More...
 
static int finalize ()
 finalize communicator More...
 
static void abort ()
 terminate communicator More...
 
static int setup (int ninstance=1)
 setup communicator More...
 
static bool is_primary ()
 check if the present node is primary in small communicator. More...
 
static bool is_primary_master ()
 check if the present node is primary in global communicator. More...
 
static int self ()
 rank within small world. More...
 
static int nodeid ()
 alternative name for self(). More...
 
static int size ()
 size of small world. More...
 
static int ipe (const int dir)
 logical coordinate of current proc. More...
 
static int npe (const int dir)
 logical grid extent More...
 
static int grid_rank (int *rank, const int *grid_coord)
 find rank number from grid coordinate. More...
 
static int grid_coord (int *grid_coord, const int rank)
 find grid coordinate from rank number. More...
 
static int grid_dims (int *grid_dims)
 find grid dimensions. More...
 
static int sync ()
 synchronize within small world. More...
 
static int broadcast (int count, double *data, int sender)
 broadcast array of double from sender. More...
 
static int broadcast (int count, int *data, int sender)
 broadcast array of integer from sender. More...
 
static int broadcast (int count, string &data, int sender)
 broadcast a string from sender. count is insignificant. More...
 
static int exchange (int count, double *recv_buf, double *send_buf, int idir, int ipm, int tag)
 receive array of double from upstream specified by idir and ipm, and send array to downstream. More...
 
static int exchange (int count, int *recv_buf, int *send_buf, int idir, int ipm, int tag)
 receive array of int from upstream specified by idir and ipm, and send array to downstream. More...
 
static int send_1to1 (int count, double *recv_buf, double *send_buf, int p_to, int p_from, int tag)
 send array of double from rank p_from to rank p_to. communication distinguished by tag. More...
 
static int send_1to1 (int count, int *recv_buf, int *send_buf, int p_to, int p_from, int tag)
 send array of int from rank p_from to rank p_to. communication distinguished by tag. More...
 
static int reduce_sum (int count, double *recv_buf, double *send_buf, int pattern=0)
 make a global sum of an array of double over the communicator. pattern specifies the dimensions to be reduced. More...
 
static int reduce_sum (int count, int *recv_buf, int *send_buf, int pattern=0)
 make a global sum of an array of int over the communicator. pattern specifies the dimensions to be reduced. More...
 
static int reduce_max (int count, double *recv_buf, double *send_buf, int pattern=0)
 find a global maximum of an array of double over the communicator. pattern specifies the dimensions to be reduced. More...
 
static int reduce_max (int count, int *recv_buf, int *send_buf, int pattern=0)
 find a global maximum of an array of int over the communicator. pattern specifies the dimensions to be reduced. More...
 
static int reduce_min (int count, double *recv_buf, double *send_buf, int pattern=0)
 find a global minimum of an array of double over the communicator. pattern specifies the dimensions to be reduced. More...
 
static int reduce_min (int count, int *recv_buf, int *send_buf, int pattern=0)
 find a global minimum of an array of int over the communicator. pattern specifies the dimensions to be reduced. More...
 
static double reduce_sum (double)
 alternative interface to reduce_sum(). returns the global sum of a double over the whole communicator. More...
 
static double reduce_max (double)
 alternative interface to reduce_max(). returns the global sum of a double over the whole communicator. More...
 
static double reduce_min (double)
 alternative interface to reduce_min(). returns the global sum of a double over the whole communicator. More...
 
static double get_time ()
 obtain a wall-clock time. More...
 
static Channelsend_init (int count, int idir, int ipm)
 
static Channelrecv_init (int count, int idir, int ipm)
 
static Channelsend_init (int count, int idir, int ipm, void *buf)
 
static Channelrecv_init (int count, int idir, int ipm, void *buf)
 
static int status ()
 

Private Member Functions

 Communicator ()
 no instance at all More...
 
 Communicator (const Communicator &)
 
Communicatoroperator= (const Communicator &)
 
 ~Communicator ()
 

Detailed Description

Communication library which wraps MPI.

This class provides communication library which wraps MPI (message passing interface) if the implementation file communicator_mpi.cpp is bound. For single processor environment with no MPI library, communicator_dummy.cpp should be bound instead. [28 Dec 2011 H.Matsufuru]

This class defines interface of inter-node communication routines. All methods are static, i.e. class-methods (like global). The explicit definitions are hidden in the implementation classes.

Definition at line 46 of file communicator.h.

Constructor & Destructor Documentation

Communicator::Communicator ( )
inlineprivate

no instance at all

communicator class is not indented to be instantiated. constructor, copy constroctor, assignment operator, and destructor are defined as private.

Definition at line 175 of file communicator.h.

Communicator::Communicator ( const Communicator )
inlineprivate

Definition at line 176 of file communicator.h.

Communicator::~Communicator ( )
inlineprivate

Definition at line 179 of file communicator.h.

Member Function Documentation

void Communicator::abort ( )
static

terminate communicator

terminate communicator immediately at some erroneous situations.

Definition at line 41 of file communicator.cpp.

int Communicator::broadcast ( int  count,
double *  data,
int  sender 
)
static

broadcast array of double from sender.

Definition at line 153 of file communicator.cpp.

int Communicator::broadcast ( int  count,
int *  data,
int  sender 
)
static

broadcast array of integer from sender.

Definition at line 160 of file communicator.cpp.

int Communicator::broadcast ( int  count,
string &  data,
int  sender 
)
static

broadcast a string from sender. count is insignificant.

Definition at line 167 of file communicator.cpp.

int Communicator::exchange ( int  count,
double *  recv_buf,
double *  send_buf,
int  idir,
int  ipm,
int  tag 
)
static

receive array of double from upstream specified by idir and ipm, and send array to downstream.

Definition at line 174 of file communicator.cpp.

int Communicator::exchange ( int  count,
int *  recv_buf,
int *  send_buf,
int  idir,
int  ipm,
int  tag 
)
static

receive array of int from upstream specified by idir and ipm, and send array to downstream.

Definition at line 184 of file communicator.cpp.

int Communicator::finalize ( )
static

finalize communicator

finalize communicator. terminates communication environment.

Definition at line 34 of file communicator.cpp.

double Communicator::get_time ( )
static

obtain a wall-clock time.

Definition at line 306 of file communicator.cpp.

int Communicator::grid_coord ( int *  grid_coord,
const int  rank 
)
static

find grid coordinate from rank number.

Definition at line 118 of file communicator.cpp.

int Communicator::grid_dims ( int *  grid_dims)
static

find grid dimensions.

Definition at line 125 of file communicator.cpp.

int Communicator::grid_rank ( int *  rank,
const int *  grid_coord 
)
static

find rank number from grid coordinate.

Definition at line 111 of file communicator.cpp.

int Communicator::init ( int *  pargc,
char ***  pargv 
)
static

initialize communicator

initialize communicator.

Parameters
pargcpointer to argc passed from main function.
pargvpointer to argv passed from main function.

they would further be passed to communication library for hints to machine-dependent configurations.

MPI implementation of Communicator class which delegates to Communicator_impl class.

Definition at line 27 of file communicator.cpp.

int Communicator::ipe ( const int  dir)
static

logical coordinate of current proc.

Definition at line 97 of file communicator.cpp.

bool Communicator::is_primary ( )
static

check if the present node is primary in small communicator.

Definition at line 55 of file communicator.cpp.

bool Communicator::is_primary_master ( )
static

check if the present node is primary in global communicator.

Definition at line 62 of file communicator.cpp.

static int Communicator::nodeid ( )
inlinestatic

alternative name for self().

Definition at line 92 of file communicator.h.

int Communicator::npe ( const int  dir)
static

logical grid extent

Definition at line 104 of file communicator.cpp.

Communicator& Communicator::operator= ( const Communicator )
private
Channel * Communicator::recv_init ( int  count,
int  idir,
int  ipm 
)
static

Definition at line 320 of file communicator.cpp.

Channel * Communicator::recv_init ( int  count,
int  idir,
int  ipm,
void *  buf 
)
static

Definition at line 68 of file channel.cpp.

int Communicator::reduce_max ( int  count,
double *  recv_buf,
double *  send_buf,
int  pattern = 0 
)
static

find a global maximum of an array of double over the communicator. pattern specifies the dimensions to be reduced.

Definition at line 235 of file communicator.cpp.

int Communicator::reduce_max ( int  count,
int *  recv_buf,
int *  send_buf,
int  pattern = 0 
)
static

find a global maximum of an array of int over the communicator. pattern specifies the dimensions to be reduced.

Definition at line 245 of file communicator.cpp.

double Communicator::reduce_max ( double  a)
static

alternative interface to reduce_max(). returns the global sum of a double over the whole communicator.

Definition at line 286 of file communicator.cpp.

int Communicator::reduce_min ( int  count,
double *  recv_buf,
double *  send_buf,
int  pattern = 0 
)
static

find a global minimum of an array of double over the communicator. pattern specifies the dimensions to be reduced.

Definition at line 255 of file communicator.cpp.

int Communicator::reduce_min ( int  count,
int *  recv_buf,
int *  send_buf,
int  pattern = 0 
)
static

find a global minimum of an array of int over the communicator. pattern specifies the dimensions to be reduced.

Definition at line 265 of file communicator.cpp.

double Communicator::reduce_min ( double  a)
static

alternative interface to reduce_min(). returns the global sum of a double over the whole communicator.

Definition at line 296 of file communicator.cpp.

int Communicator::reduce_sum ( int  count,
double *  recv_buf,
double *  send_buf,
int  pattern = 0 
)
static

make a global sum of an array of double over the communicator. pattern specifies the dimensions to be reduced.

Definition at line 215 of file communicator.cpp.

int Communicator::reduce_sum ( int  count,
int *  recv_buf,
int *  send_buf,
int  pattern = 0 
)
static

make a global sum of an array of int over the communicator. pattern specifies the dimensions to be reduced.

Definition at line 225 of file communicator.cpp.

double Communicator::reduce_sum ( double  a)
static

alternative interface to reduce_sum(). returns the global sum of a double over the whole communicator.

Definition at line 275 of file communicator.cpp.

int Communicator::self ( )
static

rank within small world.

Definition at line 69 of file communicator.cpp.

int Communicator::send_1to1 ( int  count,
double *  recv_buf,
double *  send_buf,
int  p_to,
int  p_from,
int  tag 
)
static

send array of double from rank p_from to rank p_to. communication distinguished by tag.

Definition at line 194 of file communicator.cpp.

int Communicator::send_1to1 ( int  count,
int *  recv_buf,
int *  send_buf,
int  p_to,
int  p_from,
int  tag 
)
static

send array of int from rank p_from to rank p_to. communication distinguished by tag.

Definition at line 204 of file communicator.cpp.

Channel * Communicator::send_init ( int  count,
int  idir,
int  ipm 
)
static

Definition at line 313 of file communicator.cpp.

Channel * Communicator::send_init ( int  count,
int  idir,
int  ipm,
void *  buf 
)
static

Definition at line 51 of file channel.cpp.

int Communicator::setup ( int  ninstance = 1)
static

setup communicator

setup communicator environment such as logical layout. called after the parameters are obtained.

Parameters
ninstancespecifies multiplicity of trivial parallelism. (expects 1 at present).

Definition at line 48 of file communicator.cpp.

int Communicator::size ( )
static

size of small world.

Definition at line 76 of file communicator.cpp.

int Communicator::status ( )
static

Definition at line 327 of file communicator.cpp.

int Communicator::sync ( )
static

synchronize within small world.

Definition at line 132 of file communicator.cpp.


The documentation for this class was generated from the following files: