Epetra Package Browser (Single Doxygen Collection)
Development
|
Epetra_MpiSmpComm: The Epetra MPI Shared Memory Parallel Communication Class. More...
#include <Epetra_MpiSmpComm.h>
Public Member Functions | |
Epetra_MpiSmpComm & | operator= (const Epetra_MpiSmpComm &Comm) |
Assignment Operator. More... | |
Public Member Functions inherited from Epetra_Object | |
Epetra_Object (int TracebackModeIn=-1, bool set_label=true) | |
Epetra_Object Constructor. More... | |
Epetra_Object (const char *const Label, int TracebackModeIn=-1) | |
Epetra_Object Constructor. More... | |
Epetra_Object (const Epetra_Object &Object) | |
Epetra_Object Copy Constructor. More... | |
virtual | ~Epetra_Object () |
Epetra_Object Destructor. More... | |
virtual void | SetLabel (const char *const Label) |
Epetra_Object Label definition using char *. More... | |
virtual const char * | Label () const |
Epetra_Object Label access funtion. More... | |
virtual int | ReportError (const std::string Message, int ErrorCode) const |
Error reporting method. More... | |
Public Member Functions inherited from Epetra_Comm | |
virtual | ~Epetra_Comm () |
Epetra_Comm Destructor. More... | |
virtual int | Broadcast (long long *MyVals, int Count, int Root) const =0 |
Epetra_Comm Broadcast function. More... | |
virtual int | GatherAll (long long *MyVals, long long *AllVals, int Count) const =0 |
Epetra_Comm All Gather function. More... | |
virtual int | SumAll (long long *PartialSums, long long *GlobalSums, int Count) const =0 |
Epetra_Comm Global Sum function. More... | |
virtual int | MaxAll (long long *PartialMaxs, long long *GlobalMaxs, int Count) const =0 |
Epetra_Comm Global Max function. More... | |
virtual int | MinAll (long long *PartialMins, long long *GlobalMins, int Count) const =0 |
virtual int | ScanSum (long long *MyVals, long long *ScanSums, int Count) const =0 |
Epetra_Comm Scan Sum function. More... | |
Private Member Functions | |
void | CleanupData () |
Private Attributes | |
Epetra_MpiSmpCommData * | MpiSmpCommData_ |
Constructor/Destructor Methods | |
Epetra_MpiSmpComm (MPI_Comm comm) | |
Epetra_MpiSmpComm MPI Constructor. More... | |
Epetra_MpiSmpComm (const Epetra_MpiSmpComm &Comm) | |
Epetra_MpiSmpComm Copy Constructor. More... | |
Epetra_Comm * | Clone () const |
Clone method. More... | |
virtual | ~Epetra_MpiSmpComm () |
Epetra_MpiSmpComm Destructor. More... | |
Barrier Methods | |
void | Barrier () const |
Epetra_MpiSmpComm Barrier function. More... | |
Broadcast Methods | |
int | Broadcast (double *MyVals, int Count, int Root) const |
Epetra_MpiSmpComm Broadcast function. More... | |
int | Broadcast (int *MyVals, int Count, int Root) const |
Epetra_MpiSmpComm Broadcast function. More... | |
int | Broadcast (long *MyVals, int Count, int Root) const |
Epetra_MpiSmpComm Broadcast function. More... | |
int | Broadcast (char *MyVals, int Count, int Root) const |
Epetra_MpiSmpComm Broadcast function. More... | |
Gather Methods | |
int | GatherAll (double *MyVals, double *AllVals, int Count) const |
Epetra_MpiSmpComm All Gather function. More... | |
int | GatherAll (int *MyVals, int *AllVals, int Count) const |
Epetra_MpiSmpComm All Gather function. More... | |
int | GatherAll (long *MyVals, long *AllVals, int Count) const |
Epetra_MpiSmpComm All Gather function. More... | |
Sum Methods | |
int | SumAll (double *PartialSums, double *GlobalSums, int Count) const |
Epetra_MpiSmpComm Global Sum function. More... | |
int | SumAll (int *PartialSums, int *GlobalSums, int Count) const |
Epetra_MpiSmpComm Global Sum function. More... | |
int | SumAll (long *PartialSums, long *GlobalSums, int Count) const |
Epetra_MpiSmpComm Global Sum function. More... | |
Max/Min Methods | |
int | MaxAll (double *PartialMaxs, double *GlobalMaxs, int Count) const |
Epetra_MpiSmpComm Global Max function. More... | |
int | MaxAll (int *PartialMaxs, int *GlobalMaxs, int Count) const |
Epetra_MpiSmpComm Global Max function. More... | |
int | MaxAll (long *PartialMaxs, long *GlobalMaxs, int Count) const |
Epetra_MpiSmpComm Global Max function. More... | |
int | MinAll (double *PartialMins, double *GlobalMins, int Count) const |
Epetra_MpiSmpComm Global Min function. More... | |
int | MinAll (int *PartialMins, int *GlobalMins, int Count) const |
Epetra_MpiSmpComm Global Min function. More... | |
int | MinAll (long *PartialMins, long *GlobalMins, int Count) const |
Epetra_MpiSmpComm Global Min function. More... | |
Parallel Prefix Methods | |
int | ScanSum (double *MyVals, double *ScanSums, int Count) const |
Epetra_MpiSmpComm Scan Sum function. More... | |
int | ScanSum (int *MyVals, int *ScanSums, int Count) const |
Epetra_MpiSmpComm Scan Sum function. More... | |
int | ScanSum (long *MyVals, long *ScanSums, int Count) const |
Epetra_MpiSmpComm Scan Sum function. More... | |
Attribute Accessor Methods | |
MPI_Comm | Comm () const |
Extract MPI Communicator from a Epetra_MpiSmpComm object. More... | |
int | MyPID () const |
Return my process ID. More... | |
int | NumProc () const |
Returns total number of processes. More... | |
Gather/Scatter and Directory Constructors | |
Epetra_Distributor * | CreateDistributor () const |
Create a distributor object. More... | |
Epetra_Directory * | CreateDirectory (const Epetra_BlockMap &Map) const |
Create a directory object for the given Epetra_BlockMap. More... | |
MPI-specific Methods | |
int | GetMpiTag () const |
Acquire an MPI tag from the Epetra range of 24050-24099, increment tag. More... | |
MPI_Comm | GetMpiComm () const |
Acquire an MPI tag from the Epetra range of 24050-24099, increment tag. More... | |
Experimental SMP cluster methods (not rigorously implemented) | |
void | NodeBarrier () const |
Epetra_MpiSmpComm Node Barrier function. More... | |
int | MyThreadID () const |
Return my thread ID. More... | |
int | MyNodeID () const |
Return my node ID. More... | |
int | SetNumThreads (int NumThreads) |
Set number of threads on this node. More... | |
int | NumThreads () const |
Get number of threads on this node. More... | |
int | SetMyThreadID (int ThreadID) |
Set my thread ID. More... | |
int | SetMyNodeID (int NodeID) |
Set my node ID. More... | |
Print object to an output stream | |
void | Print (std::ostream &os) const |
Print method that implements Epetra_Object virtual Print method. More... | |
void | PrintInfo (std::ostream &os) const |
Print method that implements Epetra_Comm virtual PrintInfo method. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from Epetra_Object | |
static void | SetTracebackMode (int TracebackModeValue) |
Set the value of the Epetra_Object error traceback report mode. More... | |
static int | GetTracebackMode () |
Get the value of the Epetra_Object error report mode. More... | |
static std::ostream & | GetTracebackStream () |
Get the output stream for error reporting. More... | |
Static Public Attributes inherited from Epetra_Object | |
static int | TracebackMode |
Protected Member Functions inherited from Epetra_Object | |
std::string | toString (const int &x) const |
std::string | toString (const long long &x) const |
std::string | toString (const double &x) const |
Epetra_MpiSmpComm: The Epetra MPI Shared Memory Parallel Communication Class.
The Epetra_MpiSmpComm class is an implementation of Epetra_Comm that encapsulates the general information and services needed for other Epetra classes to run on a parallel computer using MPI and shared memory threads.
Definition at line 62 of file Epetra_MpiSmpComm.h.
Epetra_MpiSmpComm::Epetra_MpiSmpComm | ( | MPI_Comm | comm | ) |
Epetra_MpiSmpComm MPI Constructor.
Creates a Epetra_MpiSmpComm instance for use with MPI. If no specialized MPI communicator is needed, this constuctor can be called with the argument MPI_COMM_WORLD.
Definition at line 48 of file Epetra_MpiSmpComm.cpp.
Epetra_MpiSmpComm::Epetra_MpiSmpComm | ( | const Epetra_MpiSmpComm & | Comm | ) |
Epetra_MpiSmpComm Copy Constructor.
Makes an exact copy of an existing Epetra_MpiSmpComm instance.
Definition at line 53 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Destructor.
Completely deletes a Epetra_MpiSmpComm object.
Definition at line 173 of file Epetra_MpiSmpComm.cpp.
|
inlinevirtual |
|
virtual |
Epetra_MpiSmpComm Barrier function.
Causes each processor in the communicator to wait until all processors have arrived.
Implements Epetra_Comm.
Definition at line 61 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Broadcast function.
Takes list of input values from the root processor and sends to all other processors.
Values | InOut On entry, the root processor contains the list of values. On exit, all processors will have the same list of values. Note that values must be allocated on all processor before the broadcast. |
Count | In On entry, contains the length of the list of Values. |
Root | In On entry, contains the processor from which all processors will receive a copy of Values. |
Implements Epetra_Comm.
Definition at line 65 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Broadcast function.
Take list of input values from the root processor and sends to all other processors.
Values | InOut On entry, the root processor contains the list of values. On exit, all processors will have the same list of values. Note that values must be allocated on all processor before the broadcast. |
Count | In On entry, contains the length of the list of Values. |
Root | In On entry, contains the processor from which all processors will receive a copy of Values. |
Implements Epetra_Comm.
Definition at line 70 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Broadcast function.
Take list of input values from the root processor and sends to all other processors.
Values | InOut On entry, the root processor contains the list of values. On exit, all processors will have the same list of values. Note that values must be allocated on all processor before the broadcast. |
Count | In On entry, contains the length of the list of Values. |
Root | In On entry, contains the processor from which all processors will receive a copy of Values. |
Implements Epetra_Comm.
Definition at line 75 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Broadcast function.
Takes list of input values from the root processor and sends to all other processors.
Values | InOut On entry, the root processor contains the list of values. On exit, all processors will have the same list of values. Note that values must be allocated on all processor before the broadcast. |
Count | In On entry, contains the length of the list of Values. |
Root | In On entry, contains the processor from which all processors will receive a copy of Values. |
Implements Epetra_Comm.
Definition at line 80 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm All Gather function.
Take list of input values from all processors in the communicator and creates an ordered contiguous list of those values on each processor.
MyVals | In On entry, contains the list of values, to be sent to all processors. |
AllVals | Out On exit, contains the list of values from all processors. Must by of size NumProc*Count. |
Count | In On entry, contains the length of the list of MyVals. |
Implements Epetra_Comm.
Definition at line 85 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm All Gather function.
Take list of input values from all processors in the communicator and creates an ordered contiguous list of those values on each processor.
MyVals | In On entry, contains the list of values, to be sent to all processors. |
AllVals | Out On exit, contains the list of values from all processors. Must by of size NumProc*Count. |
Count | In On entry, contains the length of the list of MyVals. |
Implements Epetra_Comm.
Definition at line 90 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm All Gather function.
Take list of input values from all processors in the communicator and creates an ordered contiguous list of those values on each processor.
MyVals | In On entry, contains the list of values, to be sent to all processors. |
AllVals | Out On exit, contains the list of values from all processors. Must by of size NumProc*Count. |
Count | In On entry, contains the length of the list of MyVals. |
Implements Epetra_Comm.
Definition at line 95 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Global Sum function.
Take list of input values from all processors in the communicator, computes the sum and returns the sum to all processors.
PartialSums | In On entry, contains the list of values, usually partial sums computed locally, to be summed across all processors. |
GlobalSums | Out On exit, contains the list of values summed across all processors. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 100 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Global Sum function.
Take list of input values from all processors in the communicator, computes the sum and returns the sum to all processors.
PartialSums | In On entry, contains the list of values, usually partial sums computed locally, to be summed across all processors. |
GlobalSums | Out On exit, contains the list of values summed across all processors. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 105 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Global Sum function.
Take list of input values from all processors in the communicator, computes the sum and returns the sum to all processors.
PartialSums | In On entry, contains the list of values, usually partial sums computed locally, to be summed across all processors. |
GlobalSums | Out On exit, contains the list of values summed across all processors. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 110 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Global Max function.
Take list of input values from all processors in the communicator, computes the max and returns the max to all processors.
PartialMaxs | In On entry, contains the list of values, usually partial maxs computed locally; using these Partial Maxs, the max across all processors will be computed. |
GlobalMaxs | Out On exit, contains the list of maxs computed across all processors. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 115 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Global Max function.
Take list of input values from all processors in the communicator, computes the max and returns the max to all processors.
PartialMaxs | In On entry, contains the list of values, usually partial maxs computed locally; using these Partial Maxs, the max across all processors will be computed. |
GlobalMaxs | Out On exit, contains the list of maxs computed across all processors. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 120 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Global Max function.
Take list of input values from all processors in the communicator, computes the max and returns the max to all processors.
PartialMaxs | In On entry, contains the list of values, usually partial maxs computed locally; using these Partial Maxs, the max across all processors will be computed. |
GlobalMaxs | Out On exit, contains the list of maxs computed across all processors. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 125 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Global Min function.
Take list of input values from all processors in the communicator, computes the min and returns the min to all processors.
PartialMins | In On entry, contains the list of values, usually partial mins computed locally; using these Partial Mins, the min across all processors will be computed. |
GlobalMins | Out On exit, contains the list of mins computed across all processors. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 130 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Global Min function.
Take list of input values from all processors in the communicator, computes the max and returns the max to all processors.
PartialMins | In On entry, contains the list of values, usually partial mins computed locally; using these Partial Mins, the min across all processors will be computed. |
GlobalMins | Out On exit, contains the list of mins computed across all processors. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 135 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Global Min function.
Take list of input values from all processors in the communicator, computes the max and returns the max to all processors.
PartialMins | In On entry, contains the list of values, usually partial mins computed locally; using these Partial Mins, the min across all processors will be computed. |
GlobalMins | Out On exit, contains the list of mins computed across all processors. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 140 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Scan Sum function.
Take list of input values from all processors in the communicator, computes the scan sum and returns it to all processors such that processor i contains the sum of values from processor 0 up to and including processor i.
MyVals | In On entry, contains the list of values to be summed across all processors. |
ScanSums | Out On exit, contains the list of values summed across processors 0 through i. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 145 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Scan Sum function.
Take list of input values from all processors in the communicator, computes the scan sum and returns it to all processors such that processor i contains the sum of values from processor 0 up to and including processor i.
MyVals | In On entry, contains the list of values to be summed across all processors. |
ScanSums | Out On exit, contains the list of values summed across processors 0 through i. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 150 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Epetra_MpiSmpComm Scan Sum function.
Take list of input values from all processors in the communicator, computes the scan sum and returns it to all processors such that processor i contains the sum of values from processor 0 up to and including processor i.
MyVals | In On entry, contains the list of values to be summed across all processors. |
ScanSums | Out On exit, contains the list of values summed across processors 0 through i. |
Count | In On entry, contains the length of the list of values. |
Implements Epetra_Comm.
Definition at line 155 of file Epetra_MpiSmpComm.cpp.
|
inline |
Extract MPI Communicator from a Epetra_MpiSmpComm object.
Definition at line 377 of file Epetra_MpiSmpComm.h.
|
inlinevirtual |
Return my process ID.
In MPI mode returns the rank of the calling process. In serial mode returns 0.
Implements Epetra_Comm.
Definition at line 383 of file Epetra_MpiSmpComm.h.
|
inlinevirtual |
Returns total number of processes.
In MPI mode returns the size of the MPI communicator. In serial mode returns 1.
Implements Epetra_Comm.
Definition at line 389 of file Epetra_MpiSmpComm.h.
|
virtual |
Create a distributor object.
Implements Epetra_Comm.
Definition at line 160 of file Epetra_MpiSmpComm.cpp.
|
virtual |
Create a directory object for the given Epetra_BlockMap.
Implements Epetra_Comm.
|
inline |
Acquire an MPI tag from the Epetra range of 24050-24099, increment tag.
Definition at line 403 of file Epetra_MpiSmpComm.h.
|
inline |
Acquire an MPI tag from the Epetra range of 24050-24099, increment tag.
Definition at line 405 of file Epetra_MpiSmpComm.h.
void Epetra_MpiSmpComm::NodeBarrier | ( | ) | const |
Epetra_MpiSmpComm Node Barrier function.
A no-op for a serial communicator. For MPI, it causes each process on a given node in the communicator to wait until all processes on that node have arrived.
This function can be used to select a subset of MPI processes that are associated with a group of threaded processes and synchronize only with this subset.
|
inline |
Return my thread ID.
If SetMyThreadID was called to set a thread value, this function returns the thread ID of the calling process. Otherwise returns 0.
Definition at line 423 of file Epetra_MpiSmpComm.h.
|
inline |
Return my node ID.
If SetMyNodeD was called to set a node value, this function returns the thread ID of the calling process. Otherwise returns the same value as MyPID().
Definition at line 429 of file Epetra_MpiSmpComm.h.
|
inline |
Set number of threads on this node.
Sets the number of threads on the node that owns the calling process. By default the number of threads is 1.
Definition at line 434 of file Epetra_MpiSmpComm.h.
|
inline |
Get number of threads on this node.
Sets the number of threads on the node that owns the calling process. By default the number of threads is 1.
Definition at line 439 of file Epetra_MpiSmpComm.h.
|
inline |
Set my thread ID.
Sets the thread ID for the calling process. Can be used to facilitate threaded programming across an MPI application by allowing multiple MPI processes to be considered threads of a virtual shared memory process. Threads and nodes should be used together. By default the thread ID is zero.
Definition at line 446 of file Epetra_MpiSmpComm.h.
|
inline |
Set my node ID.
Sets the node ID for the calling process. Can be used to facilitate threaded programming across an MPI application by associating several MPI processes with a single node. By default, each MPI process is associated with a single node with the same ID.
Definition at line 453 of file Epetra_MpiSmpComm.h.
|
inlinevirtual |
Print method that implements Epetra_Object virtual Print method.
Reimplemented from Epetra_Object.
Definition at line 459 of file Epetra_MpiSmpComm.h.
|
inlinevirtual |
Print method that implements Epetra_Comm virtual PrintInfo method.
Implements Epetra_Comm.
Definition at line 465 of file Epetra_MpiSmpComm.h.
Epetra_MpiSmpComm & Epetra_MpiSmpComm::operator= | ( | const Epetra_MpiSmpComm & | Comm | ) |
Assignment Operator.
Definition at line 187 of file Epetra_MpiSmpComm.cpp.
|
private |
Definition at line 177 of file Epetra_MpiSmpComm.cpp.
|
private |
Definition at line 475 of file Epetra_MpiSmpComm.h.