MPI wrapper class. More...
#include <MPIUtil.h>
Classes | |
| struct | ProcDivision |
| Helper for dividing MPI processes into groups. More... | |
Public Types | |
| enum | ReduceOp { ReduceMin, ReduceMax, ReduceSum, ReduceProd, ReduceLAnd, ReduceBAnd, ReduceLOr, ReduceBOr, ReduceLXor, ReduceBXor } |
| typedef FILE * | File |
Public Member Functions | |
| int | iProcess () const |
| rank of current process | |
| int | nProcesses () const |
| number of processes | |
| bool | isHead () const |
| whether this is the root process (makes code more readable) | |
| MPIUtil (int argc, char **argv, ProcDivision procDivision=ProcDivision()) | |
| void | exit (int errCode) const |
| global exit (kill other MPI processes as well) | |
| void | checkErrors (const ostringstream &) const |
| collect error messages from all processes; if any, display them and quit | |
| template<typename T > | |
| void | send (const T *data, size_t nData, int dest, int tag) const |
| generic array send | |
| template<typename T > | |
| void | recv (T *data, size_t nData, int src, int tag) const |
| generic array receive | |
| template<typename T > | |
| void | send (const T &data, int dest, int tag) const |
| generic scalar send | |
| template<typename T > | |
| void | recv (T &data, int src, int tag) const |
| generic scalar receive | |
| void | send (const complex *data, size_t nData, int dest, int tag) const |
| send specialization for complex which is not natively supported by MPI | |
| void | recv (complex *data, size_t nData, int src, int tag) const |
| receive specialization for complex which is not natively supported by MPI | |
| void | send (const bool *data, size_t nData, int dest, int tag) const |
| send specialization for bool which is not natively supported by MPI | |
| void | recv (bool *data, size_t nData, int src, int tag) const |
| receive specialization for bool which is not natively supported by MPI | |
| void | send (const string &s, int dest, int tag) const |
| send string | |
| void | recv (string &s, int src, int tag) const |
| send string | |
| template<typename T > | |
| void | bcast (T *data, size_t nData, int root=0) const |
| generic array broadcast | |
| template<typename T > | |
| void | bcast (T &data, int root=0) const |
| generic scalar broadcast | |
| void | bcast (complex *data, size_t nData, int root=0) const |
| specialization for complex which is not natively supported by MPI | |
| void | bcast (bool *data, size_t nData, int root=0) const |
| specialization for bool which is not natively supported by MPI | |
| void | bcast (string &s, int root=0) const |
| broadcast string | |
| template<typename T > | |
| void | allReduce (T *data, size_t nData, ReduceOp op, bool safeMode=false) const |
| generic array reduction | |
| template<typename T > | |
| void | allReduce (T &data, ReduceOp op, bool safeMode=false) const |
| generic scalar reduction | |
| void | allReduce (complex *data, size_t nData, ReduceOp op, bool safeMode=false) const |
| specialization for complex which is not natively supported by MPI | |
| void | allReduce (bool *data, size_t nData, ReduceOp op, bool safeMode=false) const |
| specialization for bool which is not natively supported by MPI | |
| template<typename T > | |
| void | allReduce (T &data, int &index, ReduceOp op) const |
| maximum / minimum with index location (MAXLOC / MINLOC modes); use op = ReduceMin or ReduceMax | |
| void | fopenRead (File &fp, const char *fname, size_t fsizeExpected=0, const char *fsizeErrMsg=0) const |
| open file for reading and optionally check file size | |
| void | fopenWrite (File &fp, const char *fname) const |
| open file for writing | |
| void | fopenAppend (File &fp, const char *fname) const |
| open file for appending to the end. Implied barrier on exit. | |
| void | fclose (File &fp) const |
| void | fseek (File fp, long offset, int whence) const |
| syntax consistent with fseek from stdio | |
| void | fread (void *ptr, size_t size, size_t nmemb, File fp) const |
| void | fwrite (const void *ptr, size_t size, size_t nmemb, File fp) const |
Public Attributes | |
| struct MPIUtil::ProcDivision | procDivision |
MPI wrapper class.