The MPIMessageGrp class is an concrete implementation of MessageGrp that uses the MPI 1 library. More...
#include <messmpi.h>
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 | |
The MPIMessageGrp class is an concrete implementation of MessageGrp that uses the MPI 1 library.
| 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.
Construction MPIMessageGrp given a KeyVal input object.
| 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.