10#ifndef TEUCHOS_COMM_HPP 
   11#define TEUCHOS_COMM_HPP 
   13#include "Teuchos_ReductionOp.hpp" 
   14#include "Teuchos_ArrayRCP.hpp" 
   38template<
class OrdinalType>
 
   52template<
class OrdinalType>
 
  104template<
class OrdinalType>
 
  116  virtual bool isReady() = 0;
 
 
  281template<
typename Ordinal>
 
  352          const int root) 
const = 0;
 
  449        const int tag) 
const = 0;
 
  479         const int tag) 
const = 0;
 
  527             const int tag) 
const = 0;
 
  553         const int tag) 
const = 0;
 
  578            const int tag) 
const = 0;
 
 
Encapsulation of a pending nonblocking communication operation.
 
virtual ~CommRequest()
Destructor; cancels the request if it is still pending.
 
virtual RCP< CommStatus< OrdinalType > > wait()=0
Wait on this request (a blocking operation).
 
Encapsulation of the result of a receive (blocking or nonblocking).
 
virtual OrdinalType getSourceRank()=0
The source rank that sent the message.
 
virtual ~CommStatus()
Destructor (declared virtual for memory safety)
 
virtual OrdinalType getTag()=0
The tag of the received message.
 
Abstract interface for distributed-memory communication.
 
virtual void broadcast(const int rootRank, const Ordinal bytes, char buffer[]) const =0
Broadcast values from the root process to the slave processes.
 
virtual void gather(const Ordinal sendBytes, const char sendBuffer[], const Ordinal recvBytes, char recvBuffer[], const int root) const =0
Gather values from all processes to the root process.
 
virtual RCP< CommRequest< Ordinal > > ireceive(const ArrayView< char > &recvBuffer, const int sourceRank, const int tag) const =0
Variant of ireceive that takes a tag.
 
virtual RCP< Comm > split(const int color, const int key) const =0
Split a communicator into subcommunicators based on color and key.
 
virtual void waitAll(const ArrayView< RCP< CommRequest< Ordinal > > > &requests) const =0
Wait on a set of communication requests.
 
virtual void readySend(const ArrayView< const char > &sendBuffer, const int destRank) const =0
Ready send of data from this process to another process.
 
virtual RCP< Comm > duplicate() const =0
Duplicate this communicator.
 
virtual RCP< CommRequest< Ordinal > > ireceive(const ArrayView< char > &recvBuffer, const int sourceRank) const =0
Non-blocking receive.
 
virtual void reduceAll(const ValueTypeReductionOp< Ordinal, char > &reductOp, const Ordinal bytes, const char sendBuffer[], char globalReducts[]) const =0
Global reduction.
 
virtual ~Comm()
Destructor, declared virtual for safety of derived classes.
 
virtual int getSize() const =0
Returns the number of processes that make up this communicator.
 
virtual void gatherAll(const Ordinal sendBytes, const char sendBuffer[], const Ordinal recvBytes, char recvBuffer[]) const =0
Gather values from each process to collect on all processes.
 
virtual RCP< Comm > createSubcommunicator(const ArrayView< const int > &ranks) const =0
Create a subcommunicator containing the specified processes.
 
virtual void ssend(const Ordinal bytes, const char sendBuffer[], const int destRank, const int tag) const =0
Variant of ssend() that takes a message tag.
 
virtual void send(const Ordinal bytes, const char sendBuffer[], const int destRank) const =0
Possibly blocking send of data from this process to another process.
 
virtual RCP< CommStatus< Ordinal > > wait(const Ptr< RCP< CommRequest< Ordinal > > > &request) const =0
Wait on a single communication request, and return its status.
 
virtual void scan(const ValueTypeReductionOp< Ordinal, char > &reductOp, const Ordinal bytes, const char sendBuffer[], char scanReducts[]) const =0
Scan reduction.
 
virtual int getTag() const =0
The current tag.
 
virtual int receive(const int sourceRank, const Ordinal bytes, char recvBuffer[]) const =0
Blocking receive of data from this process to another process.
 
virtual void ssend(const Ordinal bytes, const char sendBuffer[], const int destRank) const =0
Always blocking send of data from this process to another process.
 
virtual RCP< CommRequest< Ordinal > > isend(const ArrayView< const char > &sendBuffer, const int destRank, const int tag) const =0
Variant of isend() that takes a tag.
 
virtual int getRank() const =0
Returns the rank of this process.
 
virtual void readySend(const Ordinal bytes, const char sendBuffer[], const int destRank, const int tag) const =0
Variant of readySend() that accepts a message tag.
 
virtual void barrier() const =0
Pause every process in *this communicator until all the processes reach this point.
 
virtual void waitAll(const ArrayView< RCP< CommRequest< Ordinal > > > &requests, const ArrayView< RCP< CommStatus< Ordinal > > > &statuses) const =0
Wait on communication requests, and return their statuses.
 
virtual RCP< CommRequest< Ordinal > > isend(const ArrayView< const char > &sendBuffer, const int destRank) const =0
Non-blocking send.
 
virtual void send(const Ordinal bytes, const char sendBuffer[], const int destRank, const int tag) const =0
Variant of send() that takes a tag.
 
virtual int incrementTag()=0
Increments the tag and then returns it.
 
Base class for all objects that can describe themselves.
 
Simple wrapper class for raw pointers to single objects where no persisting relationship exists.
 
Smart reference counting pointer class for automatic garbage collection.
 
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...