sc_MPIMessageGrp - Man Page

The MPIMessageGrp class is an concrete implementation of MessageGrp that uses the MPI 1 library.

Synopsis

#include <messmpi.h>

Inherits sc::MessageGrp.

Public Member Functions

MPIMessageGrp (MPI_Comm comm)
Use an MPI communicator to create a MessageGrp.
MPIMessageGrp (int *argc, char ***argv)
Use argc and argv to create a MPIMessageGrp.
MPIMessageGrp (const Ref< KeyVal > &)
Construction MPIMessageGrp given a KeyVal input object.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.

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.

Protected Member Functions inherited from sc::RefCount
RefCount (const RefCount &)
RefCount & operator= (const RefCount &)

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.
static MessageGrp * get_default_messagegrp ()
Returns the default message group.
static MessageGrp * initial_messagegrp (int &argc, char **&argv)
Create a message group.

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.

Member Function Documentation

Ref< MessageGrp > sc::MPIMessageGrp::clone (void) [virtual]

Clones (dups) an MPIMessageGrp from MPI_COMM_WORLD.

Implements sc::MessageGrp.

int sc::MPIMessageGrp::probet (int type) [virtual]

Ask if a given typed message has been received.

Implements sc::MessageGrp.

void sc::MPIMessageGrp::raw_bcast (void * data, int nbyte, int from) [virtual]

Reimplemented from sc::MessageGrp.

void sc::MPIMessageGrp::raw_recv (int sender, void * data, int nbyte) [virtual]

Implements sc::MessageGrp.

void sc::MPIMessageGrp::raw_recvt (int type, void * data, int nbyte) [virtual]

Implements sc::MessageGrp.

void sc::MPIMessageGrp::raw_send (int target, const void * data, int nbyte) [virtual]

Implements sc::MessageGrp.

void sc::MPIMessageGrp::raw_sendt (int target, int type, const void * data, int nbyte) [virtual]

Implements sc::MessageGrp.

void sc::MPIMessageGrp::reduce (char *, int n, GrpReduce< char > &, char * scratch = 0, int target = -1) [virtual]

Reimplemented from sc::MessageGrp.

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::reduce (float *, int n, GrpReduce< float > &, float * scratch = 0, int target = -1) [virtual]

Reimplemented from sc::MessageGrp.

void sc::MPIMessageGrp::reduce (int *, int n, GrpReduce< int > &, int * scratch = 0, int target = -1) [virtual]

Reimplemented from sc::MessageGrp.

void sc::MPIMessageGrp::reduce (long *, int n, GrpReduce< long > &, long * scratch = 0, int target = -1) [virtual]

Reimplemented from sc::MessageGrp.

void sc::MPIMessageGrp::reduce (short *, int n, GrpReduce< short > &, short * scratch = 0, int target = -1) [virtual]

Reimplemented from sc::MessageGrp.

void sc::MPIMessageGrp::reduce (signed char *, int n, GrpReduce< signed char > &, signed char * scratch = 0, int target = -1) [virtual]

Reimplemented from sc::MessageGrp.

void sc::MPIMessageGrp::reduce (unsigned char *, int n, GrpReduce< unsigned char > &, unsigned char * scratch = 0, int target = -1) [virtual]

Reimplemented from sc::MessageGrp.

void sc::MPIMessageGrp::reduce (unsigned int *, int n, GrpReduce< unsigned int > &, unsigned int * scratch = 0, int target = -1) [virtual]

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.

void sc::MPIMessageGrp::sum (int *, int n, int * scratch = 0, int target = -1) [virtual]

Reimplemented from sc::MessageGrp.

void sc::MPIMessageGrp::sync () [virtual]

Synchronize all of the processors.

Reimplemented from sc::MessageGrp.

Author

Generated automatically by Doxygen for MPQC from the source code.

Info

Version 2.3.1 MPQC