14 #ifndef COMMUNICATOR_INCLUDED 
   15 #define COMMUNICATOR_INCLUDED 
   58   static int init(
int *pargc, 
char ***pargv);
 
   84   static int setup(
int ninstance = 1);
 
   92   static int nodeid() { 
return self(); }  
 
   95 #ifdef ENABLE_MULTI_INSTANCE 
   96   static int self_global(); 
 
   97   static int world_id();    
 
  101   static int ipe(
const int dir);                          
 
  102   static int npe(
const int dir);                          
 
  111 #ifdef ENABLE_MULTI_INSTANCE 
  112   static int sync_global();   
 
  116   static int broadcast(
int count, 
double *data, 
int sender);                                          
 
  117   static int broadcast(
int count, 
int *data, 
int sender);                                             
 
  118   static int broadcast(
int count, 
string& data, 
int sender);                                          
 
  120   static int exchange(
int count, 
double *recv_buf, 
double *send_buf, 
int idir, 
int ipm, 
int tag);     
 
  121   static int exchange(
int count, 
int *recv_buf, 
int *send_buf, 
int idir, 
int ipm, 
int tag);           
 
  123   static int send_1to1(
int count, 
double *recv_buf, 
double *send_buf, 
int p_to, 
int p_from, 
int tag); 
 
  124   static int send_1to1(
int count, 
int *recv_buf, 
int *send_buf, 
int p_to, 
int p_from, 
int tag);       
 
  126   static int reduce_sum(
int count, 
double *recv_buf, 
double *send_buf, 
int pattern = 0);              
 
  127   static int reduce_sum(
int count, 
int *recv_buf, 
int *send_buf, 
int pattern = 0);                    
 
  129   static int reduce_max(
int count, 
double *recv_buf, 
double *send_buf, 
int pattern = 0);              
 
  130   static int reduce_max(
int count, 
int *recv_buf, 
int *send_buf, 
int pattern = 0);                    
 
  132   static int reduce_min(
int count, 
double *recv_buf, 
double *send_buf, 
int pattern = 0);              
 
  133   static int reduce_min(
int count, 
int *recv_buf, 
int *send_buf, 
int pattern = 0);                    
 
  161     static int exchange(
size_t size, 
void *recv_buf, 
void *send_buf, 
int idir, 
int ipm, 
int tag);
 
  163     static int send_1to1(
size_t size, 
void *recv_buf, 
void *send_buf, 
int send_to, 
int recv_from, 
int tag);
 
static int npe(const int dir)
logical grid extent 
 
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 t...
 
static void abort()
terminate communicator 
 
static bool is_primary_master()
check if the present node is primary in global communicator. 
 
static int init(int *pargc, char ***pargv)
initialize communicator 
 
static int grid_coord(int *grid_coord, const int rank)
find grid coordinate from rank number. 
 
Communication library which wraps MPI. 
 
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 t...
 
Communicator()
no instance at all 
 
Communicator(const Communicator &)
 
static Channel * recv_init(int count, int idir, int ipm)
 
static int broadcast(size_t size, void *data, int sender)
 
static int ipe(const int dir)
logical coordinate of current proc. 
 
Channel class for asynchronous communication. 
 
static int finalize()
finalize communicator 
 
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...
 
static int exchange(size_t size, void *recv_buf, void *send_buf, int idir, int ipm, int tag)
 
static int grid_dims(int *grid_dims)
find grid dimensions. 
 
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...
 
static int grid_rank(int *rank, const int *grid_coord)
find rank number from grid coordinate. 
 
static int setup(int ninstance=1)
setup communicator 
 
static int send_1to1(size_t size, void *recv_buf, void *send_buf, int send_to, int recv_from, int tag)
 
static int size()
size of small world. 
 
static double get_time()
obtain a wall-clock time. 
 
static Channel * send_init(int count, int idir, int ipm)
 
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...
 
static int sync()
synchronize within small world. 
 
Communicator & operator=(const Communicator &)
 
static int broadcast(int count, double *data, int sender)
broadcast array of double from sender. 
 
static int nodeid()
alternative name for self(). 
 
static bool is_primary()
check if the present node is primary in small communicator.