Epetra Development
Loading...
Searching...
No Matches
Epetra_DistObject Class Referenceabstract

Epetra_DistObject: A class for constructing and using dense multi-vectors, vectors and matrices in parallel. More...

#include <Epetra_DistObject.h>

Inheritance diagram for Epetra_DistObject:
Collaboration diagram for Epetra_DistObject:

Public Member Functions

Constructors/Destructor
 Epetra_DistObject (const Epetra_BlockMap &Map)
 Basic Epetra_DistObject constuctor.
 Epetra_DistObject (const Epetra_BlockMap &Map, const char *const Label)
 Epetra_DistObject (const Epetra_DistObject &Source)
 Epetra_DistObject copy constructor.
virtual ~Epetra_DistObject ()
 Epetra_DistObject destructor.
Import/Export Methods
int Import (const Epetra_SrcDistObject &A, const Epetra_Import &Importer, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor=0)
 Imports an Epetra_DistObject using the Epetra_Import object.
int Import (const Epetra_SrcDistObject &A, const Epetra_Export &Exporter, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor=0)
 Imports an Epetra_DistObject using the Epetra_Export object.
int Export (const Epetra_SrcDistObject &A, const Epetra_Import &Importer, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor=0)
 Exports an Epetra_DistObject using the Epetra_Import object.
int Export (const Epetra_SrcDistObject &A, const Epetra_Export &Exporter, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor=0)
 Exports an Epetra_DistObject using the Epetra_Export object.
Attribute accessor methods
const Epetra_BlockMapMap () const
 Returns the address of the Epetra_BlockMap for this multi-vector.
const Epetra_CommComm () const
 Returns the address of the Epetra_Comm for this multi-vector.
bool DistributedGlobal () const
 Returns true if this multi-vector is distributed global, i.e., not local replicated.
Miscellaneous
virtual void Print (std::ostream &os) const
 Print method.
Public Member Functions inherited from Epetra_Object
 Epetra_Object (int TracebackModeIn=-1, bool set_label=true)
 Epetra_Object Constructor.
 Epetra_Object (const char *const Label, int TracebackModeIn=-1)
 Epetra_Object Constructor.
 Epetra_Object (const Epetra_Object &Object)
 Epetra_Object Copy Constructor.
virtual ~Epetra_Object ()
 Epetra_Object Destructor.
virtual int ReportError (const std::string Message, int ErrorCode) const
 Error reporting method.
virtual void SetLabel (const char *const Label)
 Epetra_Object Label definition using char *.
virtual const char * Label () const
 Epetra_Object Label access funtion.
Public Member Functions inherited from Epetra_SrcDistObject
virtual ~Epetra_SrcDistObject ()
 Epetra_SrcDistObject destructor.

Protected Member Functions

Internal utilities
virtual int DoTransfer (const Epetra_SrcDistObject &A, Epetra_CombineMode CombineMode, int NumSameIDs, int NumPermuteIDs, int NumRemoteIDs, int NumExportIDs, int *PermuteToLIDs, int *PermuteFromLIDs, int *RemoteLIDs, int *ExportLIDs, int &LenExports, char *&Exports, int &LenImports, char *&Imports, Epetra_Distributor &Distor, bool DoReverse, const Epetra_OffsetIndex *Indexor)
 Perform actual transfer (redistribution) of data across memory images, using Epetra_Distributor object.
std::string toString (const int &x) const
std::string toString (const long long &x) const
std::string toString (const double &x) const

Virtual methods to be implemented by derived class

Epetra_BlockMap Map_
const Epetra_CommComm_
char * Exports_
char * Imports_
int LenExports_
int LenImports_
int * Sizes_
virtual int CheckSizes (const Epetra_SrcDistObject &Source)=0
 Allows the source and target (this) objects to be compared for compatibility, return nonzero if not.
virtual int CopyAndPermute (const Epetra_SrcDistObject &Source, int NumSameIDs, int NumPermuteIDs, int *PermuteToLIDs, int *PermuteFromLIDs, const Epetra_OffsetIndex *Indexor, Epetra_CombineMode CombineMode=Zero)=0
 Perform ID copies and permutations that are on processor.
virtual int PackAndPrepare (const Epetra_SrcDistObject &Source, int NumExportIDs, int *ExportLIDs, int &LenExports, char *&Exports, int &SizeOfPacket, int *Sizes, bool &VarSizes, Epetra_Distributor &Distor)=0
 Perform any packing or preparation required for call to DoTransfer().
virtual int UnpackAndCombine (const Epetra_SrcDistObject &Source, int NumImportIDs, int *ImportLIDs, int LenImports, char *Imports, int &SizeOfPacket, Epetra_Distributor &Distor, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor)=0
 Perform any unpacking and combining after call to DoTransfer().

Additional Inherited Members

static void SetTracebackMode (int TracebackModeValue)
 Set the value of the Epetra_Object error traceback report mode.
static int GetTracebackMode ()
 Get the value of the Epetra_Object error report mode.
static std::ostream & GetTracebackStream ()
 Get the output stream for error reporting.
static int TracebackMode

Detailed Description

Epetra_DistObject: A class for constructing and using dense multi-vectors, vectors and matrices in parallel.

The Epetra_DistObject is a base class for all Epetra distributed global objects. It provides the basic mechanisms and interface specifications for importing and exporting operations using Epetra_Import and Epetra_Export objects.

Distributed Global vs. Replicated Local.

  • Distributed Global objects - In most instances, a distributed object will be partitioned across multiple memory images associated with multiple processors. In this case, there is a unique copy of each element and elements are spread across all processors specified by the Epetra_Comm communicator.
  • Replicated Local Objects - Some algorithms use objects that are too small to be distributed across all processors, the Hessenberg matrix in a GMRES computation. In other cases, such as with block iterative methods, block dot product functions produce small dense matrices that are required by all processors. Replicated local objectss handle these types of situation.

Constructor & Destructor Documentation

◆ Epetra_DistObject() [1/2]

Epetra_DistObject::Epetra_DistObject ( const Epetra_BlockMap & Map)

Basic Epetra_DistObject constuctor.

Creates a Epetra_DistObject object.

Parameters
InMap - A Epetra_LocalMap, Epetra_Map or Epetra_BlockMap.
Warning
Note that, because Epetra_LocalMap derives from Epetra_Map and Epetra_Map derives from Epetra_BlockMap, this constructor works for all three types of Epetra map classes.
Returns
Pointer to a Epetra_DistObject.

References Map().

Referenced by Epetra_DistObject(), and UnpackAndCombine().

◆ Epetra_DistObject() [2/2]

Epetra_DistObject::Epetra_DistObject ( const Epetra_BlockMap & Map,
const char *const Label )

Creates a Epetra_DistObject object.

Parameters
InMap - A Epetra_LocalMap, Epetra_Map or Epetra_BlockMap.
Warning
Note that, because Epetra_LocalMap derives from Epetra_Map and Epetra_Map derives from Epetra_BlockMap, this constructor works for all three types of Epetra map classes.
Parameters
InLabel - An identifier for this object. By default, set to the name of the object class.
Returns
Pointer to a Epetra_DistObject.

References Epetra_Object::Label(), and Map().

Member Function Documentation

◆ CheckSizes()

virtual int Epetra_DistObject::CheckSizes ( const Epetra_SrcDistObject & Source)
protectedpure virtual

Allows the source and target (this) objects to be compared for compatibility, return nonzero if not.

Implemented in Epetra_CrsMatrix, and Epetra_VbrMatrix.

◆ CopyAndPermute()

virtual int Epetra_DistObject::CopyAndPermute ( const Epetra_SrcDistObject & Source,
int NumSameIDs,
int NumPermuteIDs,
int * PermuteToLIDs,
int * PermuteFromLIDs,
const Epetra_OffsetIndex * Indexor,
Epetra_CombineMode CombineMode = Zero )
protectedpure virtual

Perform ID copies and permutations that are on processor.

Implemented in Epetra_CrsMatrix, and Epetra_VbrMatrix.

References Zero.

◆ Export() [1/2]

int Epetra_DistObject::Export ( const Epetra_SrcDistObject & A,
const Epetra_Export & Exporter,
Epetra_CombineMode CombineMode,
const Epetra_OffsetIndex * Indexor = 0 )

Exports an Epetra_DistObject using the Epetra_Export object.

Parameters
InSource - Distributed object that will be exported to the "\e this" multivector.
InExporter - A Epetra_Export object specifying the communication required.
InCombineMode - A Epetra_CombineMode enumerated type specifying how results should be combined on the receiving processor.
Returns
Integer error code, set to 0 if successful.

◆ Export() [2/2]

int Epetra_DistObject::Export ( const Epetra_SrcDistObject & A,
const Epetra_Import & Importer,
Epetra_CombineMode CombineMode,
const Epetra_OffsetIndex * Indexor = 0 )

Exports an Epetra_DistObject using the Epetra_Import object.

Parameters
InSource - Distributed object that will be exported to the "\e this" object.
InImporter - A Epetra_Import object specifying the communication required.
InCombineMode - A Epetra_CombineMode enumerated type specifying how results should be combined on the receiving processor.
Returns
Integer error code, set to 0 if successful.

◆ Import() [1/2]

int Epetra_DistObject::Import ( const Epetra_SrcDistObject & A,
const Epetra_Export & Exporter,
Epetra_CombineMode CombineMode,
const Epetra_OffsetIndex * Indexor = 0 )

Imports an Epetra_DistObject using the Epetra_Export object.

Parameters
InSource - Distributed object that will be imported into the "\e this" object.
InExporter - A Epetra_Export object specifying the communication required.
InCombineMode - A Epetra_CombineMode enumerated type specifying how results should be combined on the receiving processor.
Returns
Integer error code, set to 0 if successful.

◆ Import() [2/2]

int Epetra_DistObject::Import ( const Epetra_SrcDistObject & A,
const Epetra_Import & Importer,
Epetra_CombineMode CombineMode,
const Epetra_OffsetIndex * Indexor = 0 )

Imports an Epetra_DistObject using the Epetra_Import object.

Parameters
InSource - Distributed object that will be imported into the "\e this" object.
InImporter - A Epetra_Import object specifying the communication required.
InCombineMode - A Epetra_CombineMode enumerated type specifying how results should be combined on the receiving processor.
Returns
Integer error code, set to 0 if successful.

◆ Map()

◆ PackAndPrepare()

virtual int Epetra_DistObject::PackAndPrepare ( const Epetra_SrcDistObject & Source,
int NumExportIDs,
int * ExportLIDs,
int & LenExports,
char *& Exports,
int & SizeOfPacket,
int * Sizes,
bool & VarSizes,
Epetra_Distributor & Distor )
protectedpure virtual

Perform any packing or preparation required for call to DoTransfer().

Implemented in Epetra_CrsMatrix, and Epetra_VbrMatrix.

◆ Print()

virtual void Epetra_DistObject::Print ( std::ostream & os) const
virtual

◆ UnpackAndCombine()

virtual int Epetra_DistObject::UnpackAndCombine ( const Epetra_SrcDistObject & Source,
int NumImportIDs,
int * ImportLIDs,
int LenImports,
char * Imports,
int & SizeOfPacket,
Epetra_Distributor & Distor,
Epetra_CombineMode CombineMode,
const Epetra_OffsetIndex * Indexor )
protectedpure virtual

Perform any unpacking and combining after call to DoTransfer().

Implemented in Epetra_CrsMatrix, and Epetra_VbrMatrix.

References Epetra_DistObject().


The documentation for this class was generated from the following file: