25 #include <queso/MpiComm.h> 
   26 #include <queso/Environment.h> 
   37                       "MpiComm::constructor()",
 
   38                       "should not be called");
 
   44 #ifdef QUESO_HAS_TRILINOS
 
   45   m_epetraMpiComm( new Epetra_MpiComm(inputRawComm) ),
 
   47   m_rawComm      (inputRawComm),
 
   52   int mpiRC = MPI_Comm_rank(inputRawComm,&
m_worldRank);
 
   55                       "MpiComm::constructor()",
 
   56                       "failed MPI_Comm_rank() on full rank");
 
   58   mpiRC = MPI_Comm_rank(inputRawComm,&
m_myPid);
 
   61                       "MpiComm::constructor()",
 
   62                       "failed MPI_Comm_rank() on inputRawComm");
 
   64   mpiRC = MPI_Comm_size(inputRawComm,&
m_numProc);
 
   67                       "MpiComm::constructor()",
 
   68                       "failed MPI_Comm_size() on inputRawComm");
 
   75 #ifdef QUESO_HAS_TRILINOS
 
   86 #ifdef QUESO_HAS_TRILINOS 
   87   delete m_epetraMpiComm;
 
   88   m_epetraMpiComm = NULL;
 
  105 #ifdef QUESO_HAS_TRILINOS 
  106   return m_epetraMpiComm->Comm();
 
  114 #ifdef QUESO_HAS_TRILINOS 
  115   return m_epetraMpiComm->MyPID();
 
  123 #ifdef QUESO_HAS_TRILINOS 
  124   return m_epetraMpiComm->NumProc();
 
  133   int mpiRC = MPI_Allreduce(sendbuf, recvbuf, count, datatype, op, 
m_rawComm);
 
  145 #ifdef QUESO_HAS_TRILINOS 
  146   return m_epetraMpiComm->Barrier();
 
  151                       "MPIComm::Barrier()", 
 
  152                       "mpiRC indicates failure");  
 
  159   int mpiRC = MPI_Bcast(buffer, count, datatype, root, 
m_rawComm);
 
  172   const char* whereMsg, 
const char* whatMsg)
 const 
  177   int mpiRC = MPI_Gather(sendbuf, sendcnt, sendtype,
 
  178                          recvbuf, recvcount, recvtype,
 
  192   const char* whereMsg, 
const char* whatMsg)
 const 
  197   int mpiRC = MPI_Gatherv(sendbuf, sendcnt, sendtype,
 
  198                           recvbuf, recvcnts, displs, recvtype,
 
  210   const char* whereMsg, 
const char* whatMsg)
 const 
  212   int mpiRC = MPI_Recv(buf, count, datatype, source, tag, 
m_rawComm, status);
 
  223   const char* whereMsg, 
const char* whatMsg)
 const 
  225   int mpiRC = MPI_Send(buf, count, datatype, dest, tag, 
m_rawComm);
 
  238     for (
int i = 0; i < this->
NumProc(); ++i) {
 
  239       if (i == this->
MyPID()) {
 
  259 #ifdef QUESO_HAS_TRILINOS 
  260 const Epetra_MpiComm&
 
  261 MpiComm::epetraMpiComm()
 const 
  263   return *m_epetraMpiComm;
 
  271 #ifdef QUESO_HAS_TRILINOS 
  272   delete m_epetraMpiComm;
 
  273   m_epetraMpiComm = 
new Epetra_MpiComm(*src.m_epetraMpiComm);
 
int NumProc() const 
Returns total number of processes. 
 
int m_myPid
Process ID of this process. 
 
int subRank() const 
Access function for sub-rank. 
 
unsigned int syncVerbosity() const 
Access function to private attribute m_syncVerbosity. 
 
int inter0Rank() const 
Returns the process inter0 rank. 
 
RawType_MPI_Comm Comm() const 
Extract MPI Communicator from a MpiComm object. 
 
void Bcast(void *buffer, int count, RawType_MPI_Datatype datatype, int root, const char *whereMsg, const char *whatMsg) const 
Broadcast values from the root process to the slave processes. 
 
int m_worldRank
World rank. 
 
const int UQ_UNAVAILABLE_RANK
 
MPI_Comm RawType_MPI_Comm
 
void Gather(void *sendbuf, int sendcnt, RawType_MPI_Datatype sendtype, void *recvbuf, int recvcount, RawType_MPI_Datatype recvtype, int root, const char *whereMsg, const char *whatMsg) const 
Gather values from each process to collect on all processes. 
 
RawType_MPI_Comm m_rawComm
Embedded wrapped opaque MPI_Comm object. 
 
void Barrier() const 
Pause every process in *this communicator until all the processes reach this point. 
 
MpiComm & operator=(const MpiComm &rhs)
Assignment operator. 
 
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
 
const BaseEnvironment & m_env
 
#define UQ_FATAL_TEST_MACRO(test, givenRank, where, what)
 
void Gatherv(void *sendbuf, int sendcnt, RawType_MPI_Datatype sendtype, void *recvbuf, int *recvcnts, int *displs, RawType_MPI_Datatype recvtype, int root, const char *whereMsg, const char *whatMsg) const 
Gathers into specified locations from all processes in a group. 
 
void Allreduce(void *sendbuf, void *recvbuf, int count, RawType_MPI_Datatype datatype, RawType_MPI_Op op, const char *whereMsg, const char *whatMsg) const 
Combines values from all processes and distributes the result back to all processes. 
 
void syncPrintDebugMsg(const char *msg, unsigned int msgVerbosity, unsigned int numUSecs) const 
Synchronizes all the processes and print debug message. 
 
int MyPID() const 
Return my process ID. 
 
void Send(void *buf, int count, RawType_MPI_Datatype datatype, int dest, int tag, const char *whereMsg, const char *whatMsg) const 
Possibly blocking send of data from this process to another process. 
 
MPI_Datatype RawType_MPI_Datatype
 
The QUESO MPI Communicator Class. 
 
int fullRank() const 
Returns the process full rank. 
 
void copy(const MpiComm &src)
Copies from an existing MpiComm instance. 
 
void Recv(void *buf, int count, RawType_MPI_Datatype datatype, int source, int tag, RawType_MPI_Status *status, const char *whereMsg, const char *whatMsg) const 
Blocking receive of data from this process to another process. 
 
This class sets up the environment underlying the use of the QUESO library by an executable. 
 
unsigned int subId() const 
Access function to the number of each sub-environment Id: m_subId. 
 
MPI_Status RawType_MPI_Status
 
MpiComm()
Default Constructor.