sc::MPIMessageGrp Class Reference

    The MPIMessageGrp class is an concrete implementation of MessageGrp

that uses the MPI 1 library. More...

`#include <messmpi.h>`

Inheritance diagram for sc::MPIMessageGrp:
[legend]
Collaboration diagram for sc::MPIMessageGrp:
[legend]

## Public Member Functions

| MPIMessageGrp (MPI_Comm comm)
| Use an MPI communicator to create a MessageGrp. More...
| MPIMessageGrp (int *argc, char ***argv)
| Use argc and argv to create a MPIMessageGrp. More...
| MPIMessageGrp (const Ref< KeyVal > &)
| Construction MPIMessageGrp given a KeyVal input object. More...
Ref< MessageGrp > | clone (void)
| Clones (dups) an MPIMessageGrp from MPI_COMM_WORLD.
void | raw_send (int target, const void *data, int nbyte)
void | raw_recv (int sender, void *data, int nbyte)
void | raw_sendt (int target, int type, const void *data, int nbyte)
void | raw_recvt (int type, void *data, int nbyte)
int | probet (int type)
| Ask if a given typed message has been received.
void | sync ()
| Synchronize all of the processors.
void | sum (double *, int n, double *scratch=0, int target=-1)
| Global sum reduction. More...
void | sum (int *, int n, int *scratch=0, int target=-1)
void | reduce (double *, int n, GrpReduce< double > &, double *scratch=0, int target=-1)
| Global generic reduction. More...
void | reduce (unsigned int *, int n, GrpReduce< unsigned int > &, unsigned int *scratch=0, int target=-1)
void | reduce (int *, int n, GrpReduce< int > &, int *scratch=0, int target=-1)
void | reduce (char *, int n, GrpReduce< char > &, char *scratch=0, int target=-1)
void | reduce (unsigned char *, int n, GrpReduce< unsigned char > &, unsigned char *scratch=0, int target=-1)
void | reduce (signed char *, int n, GrpReduce< signed char > &, signed char *scratch=0, int target=-1)
void | reduce (short *, int n, GrpReduce< short > &, short *scratch=0, int target=-1)
void | reduce (float *, int n, GrpReduce< float > &, float *scratch=0, int target=-1)
void | reduce (long *, int n, GrpReduce< long > &, long *scratch=0, int target=-1)
void | raw_bcast (void *data, int nbyte, int from)
Public Member Functions inherited from sc::MessageGrp
| MessageGrp (const Ref< KeyVal > &)
int | n ()
| Returns the number of processors.
int | me ()
| Returns my processor number. In the range [0,n()).
virtual void | send (int target, const double *data, int ndata)
| Send messages sequentially to the target processor. More...
virtual void | send (int target, const unsigned int *data, int ndata)
virtual void | send (int target, const int *data, int ndata)
virtual void | send (int target, const char *data, int nbyte)
virtual void | send (int target, const unsigned char *data, int nbyte)
virtual void | send (int target, const signed char *data, int nbyte)
virtual void | send (int target, const short *data, int ndata)
virtual void | send (int target, const long *data, int ndata)
virtual void | send (int target, const float *data, int ndata)
void | send (int target, double data)
void | send (int target, int data)
virtual void | sendt (int target, int type, const double *data, int ndata)
| Send typed messages to the target processor. More...
virtual void | sendt (int target, int type, const unsigned int *data, int ndata)
virtual void | sendt (int target, int type, const int *data, int ndata)
virtual void | sendt (int target, int type, const char *data, int nbyte)
virtual void | sendt (int target, int type, const unsigned char *data, int nbyte)
virtual void | sendt (int target, int type, const signed char *data, int nbyte)
virtual void | sendt (int target, int type, const short *data, int ndata)
virtual void | sendt (int target, int type, const long *data, int ndata)
virtual void | sendt (int target, int type, const float *data, int ndata)
void | sendt (int target, int type, double data)
void | sendt (int target, int type, int data)
virtual void | recv (int sender, double *data, int ndata)
| Receive messages sent sequentually from the sender. More...
virtual void | recv (int sender, unsigned int *data, int ndata)
virtual void | recv (int sender, int *data, int ndata)
virtual void | recv (int sender, char *data, int nbyte)
virtual void | recv (int sender, unsigned char *data, int nbyte)
virtual void | recv (int sender, signed char *data, int nbyte)
virtual void | recv (int sender, short *data, int ndata)
virtual void | recv (int sender, long *data, int ndata)
virtual void | recv (int sender, float *data, int ndata)
void | recv (int sender, double &data)
void | recv (int sender, int &data)
virtual void | recvt (int type, double *data, int ndata)
| Receive messages sent by type. More...
virtual void | recvt (int type, unsigned int *data, int ndata)
virtual void | recvt (int type, int *data, int ndata)
virtual void | recvt (int type, char *data, int nbyte)
virtual void | recvt (int type, unsigned char *data, int nbyte)
virtual void | recvt (int type, signed char *data, int nbyte)
virtual void | recvt (int type, short *data, int ndata)
virtual void | recvt (int type, long *data, int ndata)
virtual void | recvt (int type, float *data, int ndata)
void | recvt (int type, double &data)
void | recvt (int type, int &data)
virtual void | bcast (double *data, int ndata, int from=0)
| Do broadcasts of various types of data. More...
virtual void | bcast (unsigned int *data, int ndata, int from=0)
virtual void | bcast (int *data, int ndata, int from=0)
virtual void | bcast (char *data, int nbyte, int from=0)
virtual void | bcast (unsigned char *data, int nbyte, int from=0)
virtual void | bcast (signed char *data, int nbyte, int from=0)
virtual void | bcast (short *data, int ndata, int from=0)
virtual void | bcast (long *data, int ndata, int from=0)
virtual void | bcast (float *data, int ndata, int from=0)
void | bcast (double &data, int from=0)
void | bcast (int &data, int from=0)
virtual void | raw_collect (const void *part, const int *lengths, void *whole, int bytes_per_datum=1)
| Collect data distributed on the nodes to a big array replicated on each node. More...
void | collect (const double *part, const int *lengths, double *whole)
virtual void | sum (unsigned int *data, int n, unsigned int *=0, int target=-1)
virtual void | sum (char *data, int n, char *=0, int target=-1)
virtual void | sum (unsigned char *data, int n, unsigned char *=0, int target=-1)
virtual void | sum (signed char *data, int n, signed char *=0, int target=-1)
void | sum (double &data)
void | sum (int &data)
virtual void | max (double *data, int n, double *=0, int target=-1)
| Global maximization. More...
virtual void | max (int *data, int n, int *=0, int target=-1)
virtual void | max (unsigned int *data, int n, unsigned int *=0, int target=-1)
virtual void | max (char *data, int n, char *=0, int target=-1)
virtual void | max (unsigned char *data, int n, unsigned char *=0, int target=-1)
virtual void | max (signed char *data, int n, signed char *=0, int target=-1)
void | max (double &data)
void | max (int &data)
virtual void | min (double *data, int n, double *=0, int target=-1)
| Global minimization. More...
virtual void | min (int *data, int n, int *=0, int target=-1)
virtual void | min (unsigned int *data, int n, unsigned int *=0, int target=-1)
virtual void | min (char *data, int n, char *=0, int target=-1)
virtual void | min (unsigned char *data, int n, unsigned char *=0, int target=-1)
virtual void | min (signed char *data, int n, signed char *=0, int target=-1)
void | min (double &data)
void | min (int &data)
void | reduce (double &data, GrpReduce< double > &r)
void | reduce (int &data, GrpReduce< int > &r)
Ref< MachineTopology > | topology ()
| Return the MachineTopology object.
int | classdesc_to_index (const ClassDesc *)
| Each message group maintains an association of ClassDesc with a global index so SavableState information can be sent between nodes without needing to send the classname and look up the ClassDesc with each transfer. More...
const ClassDesc * | index_to_classdesc (int)
int | nclass () const
Public Member Functions inherited from sc::DescribedClass
| DescribedClass (const DescribedClass &)
DescribedClass & | operator= (const DescribedClass &)
ClassDesc * | class_desc () const throw ()
| This returns the unique pointer to the ClassDesc corresponding to the given type_info object. More...
const char * | class_name () const
| Return the name of the object's exact type.
int | class_version () const
| Return the version of the class.
virtual void | print (std::ostream &=ExEnv::out0()) const
| Print the object.
Public Member Functions inherited from sc::RefCount
int | lock_ptr () const
| Lock this object.
int | unlock_ptr () const
| Unlock this object.
void | use_locks (bool inVal)
| start and stop using locks on this object
refcount_t | nreference () const
| Return the reference count.
refcount_t | reference ()
| Increment the reference count and return the new count.
refcount_t | dereference ()
| Decrement the reference count and return the new count.
int | managed () const
void | unmanage ()
| Turn off the reference counting mechanism for this object. More...
int | managed () const
| Return 1 if the object is managed. Otherwise return 0.
Public Member Functions inherited from sc::Identity
Identifier | identifier ()
| Return the Identifier for this argument. More...

## Protected Member Functions

void | init (MPI_Comm comm, int *argc=0, char ***argv=0)
| Not thread-safe due to race condition on nmpi_grps variable.
Protected Member Functions inherited from sc::MessageGrp
void | initialize (int me, int n)
| The classdesc_to_index_ and index_to_classdesc_ arrays cannot be initialized by the MessageGrp CTOR, because the MessageGrp specialization has not yet been initialized and communication is not available. More...

## Protected Attributes

void * | buf
int | bufsize
int | rnode
int | rtag
int | rlen
bool | use_messagegrp_collectives_
| If true use the generic collective routines in the base class.
Ref< ThreadGrp > | threadgrp
MPI_Comm | commgrp
| Currently each commgrp is a dup of MPI_COMM_WORLD.
Protected Attributes inherited from sc::MessageGrp
Ref< MachineTopology > | topology_
int | debug_

## Static Protected Attributes

static int | nmpi_grps
| Number of MPIMessageGrp's currently in use.
static Ref< ThreadLock > | grplock
| lock to access nmpi_grps variable

## Additional Inherited Members

Static Public Member Functions inherited from sc::MessageGrp
static void | set_default_messagegrp (const Ref< MessageGrp > &)
| The default message group contains the primary message group to be used by an application. More...
static MessageGrp * | get_default_messagegrp ()
| Returns the default message group.
static MessageGrp * | initial_messagegrp (int &argc, char **&argv)
| Create a message group. More...

## Detailed Description

    The MPIMessageGrp class is an concrete implementation of MessageGrp

that uses the MPI 1 library.

## Constructor & Destructor Documentation

sc::MPIMessageGrp::MPIMessageGrp | ( | MPI_Comm | comm | ) |

Use an MPI communicator to create a MessageGrp.

The comm argument could be a subset of MPI_COMM_WORLD, for example.

sc::MPIMessageGrp::MPIMessageGrp | ( | int * | argc,
|  | char *** | argv
| ) |  |

Use argc and argv to create a MPIMessageGrp.

This would have to be used for implementations of MPI that have MPI_Init fill in argc and argv.

sc::MPIMessageGrp::MPIMessageGrp | ( | const Ref< KeyVal > & |  | ) |

Construction MPIMessageGrp given a KeyVal input object.

## Member Function Documentation

void sc::MPIMessageGrp::reduce | ( | double * | ,
|  | int | n,
|  | GrpReduce< double > & | ,
|  | double * | scratch = `0`,
|  | int | target = `-1`
| ) |  |

virtual

Global generic reduction.

Similar members exist for each of the basic types.

Reimplemented from sc::MessageGrp.

void sc::MPIMessageGrp::sum | ( | double * | data,
|  | int | n,
|  | double * | = `0`,
|  | int | target = `-1`
| ) |  |

virtual

Global sum reduction.

Similar members exist for each of the basic types.

Reimplemented from sc::MessageGrp.

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

- messmpi.h