# 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:

List of all members.

## 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)

## 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 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.

## Static Protected Attributes

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

## 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::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::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.

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

- messmpi.h