Bridge++  Ver. 1.1.x
 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 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 40 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 161 of file communicator.h.

Communicator::Communicator ( const Communicator )
inlineprivate

Definition at line 162 of file communicator.h.

Communicator::~Communicator ( )
inlineprivate

Definition at line 165 of file communicator.h.

Member Function Documentation

void Communicator::abort ( )
static

terminate communicator

terminate communicator immediately at some erroneous situations.

Definition at line 38 of file communicator.cpp.

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

broadcast array of double from sender.

Definition at line 136 of file communicator.cpp.

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

broadcast array of integer from sender.

Definition at line 142 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 148 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 160 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 166 of file communicator.cpp.

int Communicator::finalize ( )
static

finalize communicator

finalize communicator. terminates communication environment.

Definition at line 32 of file communicator.cpp.

double Communicator::get_time ( )
static

obtain a wall-clock time.

Definition at line 253 of file communicator.cpp.

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

find grid coordinate from rank number.

Definition at line 105 of file communicator.cpp.

int Communicator::grid_dims ( int *  grid_dims)
static

find grid dimensions.

Definition at line 111 of file communicator.cpp.

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

find rank number from grid coordinate.

Definition at line 99 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 26 of file communicator.cpp.

int Communicator::ipe ( const int  dir)
static

logical coordinate of current proc.

Definition at line 87 of file communicator.cpp.

bool Communicator::is_primary ( )
static

check if the present node is primary in small communicator.

Definition at line 50 of file communicator.cpp.

bool Communicator::is_primary_master ( )
static

check if the present node is primary in global communicator.

Definition at line 56 of file communicator.cpp.

static int Communicator::nodeid ( )
inlinestatic

alternative name for self().

Definition at line 86 of file communicator.h.

int Communicator::npe ( const int  dir)
static

logical grid extent

Definition at line 93 of file communicator.cpp.

Communicator& Communicator::operator= ( const Communicator )
private
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 202 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 208 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 235 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 214 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 220 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 244 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 190 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 196 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 226 of file communicator.cpp.

int Communicator::self ( )
static

rank within small world.

Definition at line 62 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 178 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 184 of file communicator.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 44 of file communicator.cpp.

int Communicator::size ( )
static

size of small world.

Definition at line 68 of file communicator.cpp.

int Communicator::status ( )
static

Definition at line 259 of file communicator.cpp.

int Communicator::sync ( )
static

synchronize within small world.

Definition at line 117 of file communicator.cpp.


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