Bridge++
Version 1.5.4
|
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 int | setup (const std::vector< int > &lattice_size, std::vector< int > &grid_size, int ninstance=1) |
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 | sync_usleep () |
synchronize within small world. (slow but no busy wait) More... | |
static int | broadcast (int count, double *data, int sender) |
broadcast array of double from sender. More... | |
static int | broadcast (int count, float *data, int sender) |
broadcast array of float 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, float *recv_buf, float *send_buf, int idir, int ipm, int tag) |
receive array of float 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, float *recv_buf, float *send_buf, int p_to, int p_from, int tag) |
send array of float 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, float *recv_buf, float *send_buf, int pattern=0) |
make a global sum of an array of float 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, float *recv_buf, float *send_buf, int pattern=0) |
find a global maximum of an array of float 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, float *recv_buf, float *send_buf, int pattern=0) |
find a global minimum of an array of float 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 float | reduce_sum (float) |
alternative interface to reduce_sum(). returns the global sum of a float over the whole communicator. More... | |
static float | reduce_max (float) |
alternative interface to reduce_max(). returns the global sum of a float over the whole communicator. More... | |
static float | reduce_min (float) |
alternative interface to reduce_min(). returns the global sum of a float over the whole communicator. More... | |
static double | get_time () |
obtain a wall-clock time. More... | |
static Channel * | send_init (int count, int idir, int ipm) |
static Channel * | recv_init (int count, int idir, int ipm) |
static Channel * | send_init (int count, int idir, int ipm, void *buf) |
static Channel * | recv_init (int count, int idir, int ipm, void *buf) |
static int | status () |
Private Member Functions | |
Communicator () | |
no instance at all More... | |
Communicator (const Communicator &) | |
Communicator & | operator= (const Communicator &) |
~Communicator () | |
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 47 of file communicator.h.
|
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 201 of file communicator.h.
|
inlineprivate |
Definition at line 202 of file communicator.h.
|
inlineprivate |
Definition at line 205 of file communicator.h.
|
static |
terminate communicator
terminate communicator immediately at some erroneous situations.
Definition at line 36 of file communicator.cpp.
|
static |
broadcast array of double from sender.
Definition at line 169 of file communicator.cpp.
|
static |
broadcast array of float from sender.
Definition at line 175 of file communicator.cpp.
|
static |
broadcast array of integer from sender.
Definition at line 181 of file communicator.cpp.
|
static |
broadcast a string from sender. count is insignificant.
Definition at line 187 of file communicator.cpp.
|
static |
receive array of double from upstream specified by idir and ipm, and send array to downstream.
Definition at line 200 of file communicator.cpp.
|
static |
receive array of float from upstream specified by idir and ipm, and send array to downstream.
Definition at line 206 of file communicator.cpp.
|
static |
receive array of int from upstream specified by idir and ipm, and send array to downstream.
Definition at line 212 of file communicator.cpp.
|
static |
finalize communicator
finalize communicator. terminates communication environment.
Definition at line 29 of file communicator.cpp.
|
static |
obtain a wall-clock time.
Definition at line 361 of file communicator.cpp.
|
static |
find grid coordinate from rank number.
Definition at line 126 of file communicator.cpp.
|
static |
find grid dimensions.
Definition at line 133 of file communicator.cpp.
|
static |
find rank number from grid coordinate.
Definition at line 119 of file communicator.cpp.
|
static |
initialize communicator
initialize communicator.
pargc | pointer to argc passed from main function. |
pargv | pointer 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 22 of file communicator.cpp.
|
static |
logical coordinate of current proc.
Definition at line 105 of file communicator.cpp.
|
static |
check if the present node is primary in small communicator.
Definition at line 60 of file communicator.cpp.
|
static |
check if the present node is primary in global communicator.
Definition at line 67 of file communicator.cpp.
|
inlinestatic |
alternative name for self().
Definition at line 105 of file communicator.h.
|
static |
logical grid extent
Definition at line 112 of file communicator.cpp.
|
private |
|
static |
Definition at line 382 of file communicator.cpp.
|
static |
Definition at line 68 of file channel.cpp.
|
static |
find a global maximum of an array of double over the communicator. pattern specifies the dimensions to be reduced.
Definition at line 263 of file communicator.cpp.
|
static |
find a global maximum of an array of float over the communicator. pattern specifies the dimensions to be reduced.
Definition at line 269 of file communicator.cpp.
|
static |
find a global maximum of an array of int over the communicator. pattern specifies the dimensions to be reduced.
Definition at line 275 of file communicator.cpp.
|
static |
alternative interface to reduce_max(). returns the global sum of a double over the whole communicator.
Definition at line 311 of file communicator.cpp.
|
static |
alternative interface to reduce_max(). returns the global sum of a float over the whole communicator.
Definition at line 341 of file communicator.cpp.
|
static |
find a global minimum of an array of double over the communicator. pattern specifies the dimensions to be reduced.
Definition at line 282 of file communicator.cpp.
|
static |
find a global minimum of an array of float over the communicator. pattern specifies the dimensions to be reduced.
Definition at line 288 of file communicator.cpp.
|
static |
find a global minimum of an array of int over the communicator. pattern specifies the dimensions to be reduced.
Definition at line 294 of file communicator.cpp.
|
static |
alternative interface to reduce_min(). returns the global sum of a double over the whole communicator.
Definition at line 321 of file communicator.cpp.
|
static |
alternative interface to reduce_min(). returns the global sum of a float over the whole communicator.
Definition at line 351 of file communicator.cpp.
|
static |
make a global sum of an array of double over the communicator. pattern specifies the dimensions to be reduced.
Definition at line 244 of file communicator.cpp.
|
static |
make a global sum of an array of float over the communicator. pattern specifies the dimensions to be reduced.
Definition at line 250 of file communicator.cpp.
|
static |
make a global sum of an array of int over the communicator. pattern specifies the dimensions to be reduced.
Definition at line 256 of file communicator.cpp.
|
static |
alternative interface to reduce_sum(). returns the global sum of a double over the whole communicator.
Definition at line 301 of file communicator.cpp.
|
static |
alternative interface to reduce_sum(). returns the global sum of a float over the whole communicator.
Definition at line 331 of file communicator.cpp.
|
static |
rank within small world.
Definition at line 74 of file communicator.cpp.
|
static |
send array of double from rank p_from to rank p_to. communication distinguished by tag.
Definition at line 225 of file communicator.cpp.
|
static |
send array of float from rank p_from to rank p_to. communication distinguished by tag.
Definition at line 231 of file communicator.cpp.
|
static |
send array of int from rank p_from to rank p_to. communication distinguished by tag.
Definition at line 237 of file communicator.cpp.
|
static |
Definition at line 375 of file communicator.cpp.
|
static |
Definition at line 51 of file channel.cpp.
|
static |
setup communicator
setup communicator environment such as logical layout. called after the parameters are obtained.
ninstance | specifies multiplicity of trivial parallelism. (expects 1 at present). |
Definition at line 43 of file communicator.cpp.
|
static |
setup communicator environment with lattice size and (hint of) grid size provided.
grid_size | may be incomplete, in that case it is determined from the total number of processes and the lattice size and overwritten. |
Definition at line 50 of file communicator.cpp.
|
static |
size of small world.
Definition at line 81 of file communicator.cpp.
|
static |
Definition at line 368 of file communicator.cpp.
|
static |
synchronize within small world.
Definition at line 140 of file communicator.cpp.
|
static |
synchronize within small world. (slow but no busy wait)
Definition at line 147 of file communicator.cpp.