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 int | Request |
| 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()) | |
| MPIUtil (const MPIUtil *mpiUtil, std::vector< int > ranks) | |
| create a sub-communicator from listed ranks in parent communicator | |
| 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 | sendData (const ManagedMemory< T > &v, int dest, int tag, Request *request=0) const |
| managed memory send | |
| template<typename T > | |
| void | sendData (const std::vector< T > &v, int dest, int tag, Request *request=0) const |
| vector send | |
| template<typename T > | |
| void | send (const T *data, size_t nData, int dest, int tag, Request *request=0) const |
| generic array send | |
| template<typename T > | |
| void | send (const T &data, int dest, int tag, Request *request=0) const |
| generic scalar send | |
| void | send (const bool *data, size_t nData, int dest, int tag, Request *request=0) const |
| send specialization for bool which is not natively supported by MPI | |
| void | send (const string &s, int dest, int tag, Request *request=0) const |
| send string | |
| template<typename T > | |
| void | recvData (ManagedMemory< T > &v, int dest, int tag, Request *request=0) const |
| managed memory receive | |
| template<typename T > | |
| void | recvData (std::vector< T > &v, int dest, int tag, Request *request=0) const |
| vector receive | |
| template<typename T > | |
| void | recv (T *data, size_t nData, int src, int tag, Request *request=0) const |
| generic array receive | |
| template<typename T > | |
| void | recv (T &data, int src, int tag, Request *request=0) const |
| generic scalar receive | |
| void | recv (bool *data, size_t nData, int src, int tag, Request *request=0) const |
| receive specialization for bool which is not natively supported by MPI | |
| void | recv (string &s, int src, int tag, Request *request=0) const |
| send string | |
| template<typename T > | |
| void | bcastData (ManagedMemory< T > &v, int root=0, Request *request=0) const |
| managed memory broadcast | |
| template<typename T > | |
| void | bcastData (std::vector< T > &v, int root=0, Request *request=0) const |
| vector broadcast | |
| template<typename T > | |
| void | bcast (T *data, size_t nData, int root=0, Request *request=0) const |
| generic array broadcast | |
| template<typename T > | |
| void | bcast (T &data, int root=0, Request *request=0) const |
| generic scalar broadcast | |
| void | bcast (bool *data, size_t nData, int root=0, Request *request=0) const |
| specialization for bool which is not natively supported by MPI | |
| void | bcast (string &s, int root=0, Request *request=0) const |
| broadcast string | |
| template<typename T > | |
| void | allReduceData (ManagedMemory< T > &v, ReduceOp op, bool safeMode=false, Request *request=0) const |
| managed memory reduction | |
| template<typename T > | |
| void | allReduceData (std::vector< T > &v, ReduceOp op, bool safeMode=false, Request *request=0) const |
| vector reduction | |
| template<typename T > | |
| void | allReduce (T *data, size_t nData, ReduceOp op, bool safeMode=false, Request *request=0) const |
| generic array reduction | |
| template<typename T > | |
| void | allReduce (T &data, ReduceOp op, bool safeMode=false, Request *request=0) const |
| generic scalar reduction | |
| void | allReduce (bool *data, size_t nData, ReduceOp op, bool safeMode=false, Request *request=0) 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 | |
| template<typename T > | |
| void | reduceData (ManagedMemory< T > &v, ReduceOp op, int root=0, Request *request=0) const |
| managed memory reduction | |
| template<typename T > | |
| void | reduceData (std::vector< T > &v, ReduceOp op, int root=0, Request *request=0) const |
| vector reduction | |
| template<typename T > | |
| void | reduce (T *data, size_t nData, ReduceOp op, int root=0, Request *request=0) const |
| generic array reduction | |
| template<typename T > | |
| void | reduce (T &data, ReduceOp op, int root=0, Request *request=0) const |
| generic scalar reduction | |
| void | reduce (bool *data, size_t nData, ReduceOp op, int root=0, Request *request=0) const |
| specialization for bool which is not natively supported by MPI | |
| template<typename T > | |
| void | reduce (T &data, int &index, ReduceOp op, int root=0) 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 |
| template<typename T > | |
| void | freadData (ManagedMemory< T > &v, File fp) const |
| template<typename T > | |
| void | freadData (std::vector< T > &v, File fp) const |
| template<typename T > | |
| void | fwriteData (const ManagedMemory< T > &v, File fp) const |
| template<typename T > | |
| void | fwriteData (const std::vector< T > &v, File fp) const |
Static Public Member Functions | |
| static void | wait (Request request) |
| wait till request finishes | |
| static void | waitAll (const std::vector< Request > &requests) |
| wait till all requests finish | |
Public Attributes | |
| const struct MPIUtil::ProcDivision | procDivision |
MPI wrapper class.