Epetra Development
Loading...
Searching...
No Matches
Epetra_LongLongVector Class Reference

Epetra_LongLongVector: A class for constructing and using dense integer vectors on a parallel computer. More...

#include <Epetra_LongLongVector.h>

Inheritance diagram for Epetra_LongLongVector:
Collaboration diagram for Epetra_LongLongVector:

Public Member Functions

Constructors/destructors
 Epetra_LongLongVector (const Epetra_BlockMap &Map, bool zeroOut=true)
 Basic Epetra_LongLongVector constuctor.
 Epetra_LongLongVector (const Epetra_LongLongVector &Source)
 Epetra_LongLongVector copy constructor.
 Epetra_LongLongVector (Epetra_DataAccess CV, const Epetra_BlockMap &Map, long long *V)
 Set vector values from user array.
virtual ~Epetra_LongLongVector ()
 Epetra_LongLongVector destructor.
Post-construction modification methods
int PutValue (long long Value)
 Set all elements of the vector to Value.
Extraction methods
int ExtractCopy (long long *V) const
 Put vector values into user-provided array.
int ExtractView (long long **V) const
 Set user-provided address of V.
Mathematical methods
long long MaxValue ()
 Find maximum value.
long long MinValue ()
 Find minimum value.
Overloaded operators
Epetra_LongLongVectoroperator= (const Epetra_LongLongVector &Source)
 = Operator.
long long & operator[] (int index)
 Element access function.
const long long & operator[] (int index) const
 Element access function.
Attribute access functions
long long * Values () const
 Returns a pointer to an array containing the values of this vector.
int MyLength () const
 Returns the local vector length on the calling processor of vectors in the multi-vector.
long long GlobalLength64 () const
 Returns the global vector length of vectors in the multi-vector.
Public Member Functions inherited from Epetra_DistObject
 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.
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.
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.
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.

I/O methods

virtual void Print (std::ostream &os) const
 Print method.

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
Protected Member Functions inherited from Epetra_DistObject
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
Epetra_BlockMap Map_
const Epetra_CommComm_
char * Exports_
char * Imports_
int LenExports_
int LenImports_
int * Sizes_

Detailed Description

Epetra_LongLongVector: A class for constructing and using dense integer vectors on a parallel computer.

The Epetra_LongLongVector class enables the construction and use of integer dense vectors in a distributed memory environment. The distribution of the dense vector is determined in part by a Epetra_Comm object and a Epetra_Map (or Epetra_LocalMap or Epetra_BlockMap).

Distributed Global vs. Replicated Local

  • Distributed Global Vectors - In most instances, a multi-vector 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 Vectors - Some algorithms use vectors that are too small to be distributed across all processors. Replicated local vectors handle these types of situation.

Constructing Epetra_LongLongVectors

There are four Epetra_LongLongVector constructors. The first is a basic constructor that allocates space and sets all values to zero, the second is a copy constructor. The third and fourth constructors work with user data. These constructors have two data access modes:

  1. Copy mode - Allocates memory and makes a copy of the user-provided data. In this case, the user data is not needed after construction.
  2. View mode - Creates a "view" of the user data. In this case, the user data is required to remain intact for the life of the vector.
Warning
View mode is extremely dangerous from a data hiding perspective. Therefore, we strongly encourage users to develop code using Copy mode first and only use the View mode in a secondary optimization phase.

All Epetra_LongLongVector constructors require a map argument that describes the layout of elements on the parallel machine. Specifically, map is a Epetra_Map, Epetra_LocalMap or Epetra_BlockMap object describing the desired memory layout for the vector.

There are four different Epetra_LongLongVector constructors:

  • Basic - All values are zero.
  • Copy - Copy an existing vector.
  • Copy from or make view of user int array.

Extracting Data from Epetra_LongLongVectors

Once a Epetra_LongLongVector is constructed, it is possible to extract a copy of the values or create a view of them.

Warning
ExtractView functions are extremely dangerous from a data hiding perspective. For both ExtractView fuctions, there is a corresponding ExtractCopy function. We strongly encourage users to develop code using ExtractCopy functions first and only use the ExtractView functions in a secondary optimization phase.

There are two Extract functions:

  • ExtractCopy - Copy values into a user-provided array.
  • ExtractView - Set user-provided array to point to Epetra_LongLongVector data.
Warning
A Epetra_Map, Epetra_LocalMap or Epetra_BlockMap object is required for all Epetra_LongLongVector constructors.

Constructor & Destructor Documentation

◆ Epetra_LongLongVector() [1/2]

Epetra_LongLongVector::Epetra_LongLongVector ( const Epetra_BlockMap & Map,
bool zeroOut = true )

Basic Epetra_LongLongVector constuctor.

Creates a Epetra_LongLongVector object and, by default, fills with zero values.

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
InzeroOut - If true then the allocated memory will be zeroed out initialy. If false then this memory will not be touched which can be significantly faster.
Returns
Pointer to a Epetra_LongLongVector.

References Epetra_DistObject::Map().

Referenced by Epetra_LongLongVector(), and operator=().

◆ Epetra_LongLongVector() [2/2]

Epetra_LongLongVector::Epetra_LongLongVector ( Epetra_DataAccess CV,
const Epetra_BlockMap & Map,
long long * V )

Set vector values from user array.

Parameters
InEpetra_DataAccess - Enumerated type set to Copy or View.
InMap - A Epetra_LocalMap, Epetra_Map or Epetra_BlockMap.
InV - Pointer to an array of long long numbers..
Returns
Integer error code, set to 0 if successful.

See Detailed Description section for further discussion.

References Epetra_DistObject::Map().

Member Function Documentation

◆ ExtractCopy()

int Epetra_LongLongVector::ExtractCopy ( long long * V) const

Put vector values into user-provided array.

Parameters
OutV - Pointer to memory space that will contain the vector values.
Returns
Integer error code, set to 0 if successful.

◆ ExtractView()

int Epetra_LongLongVector::ExtractView ( long long ** V) const

Set user-provided address of V.

Parameters
OutV - Address of a pointer to that will be set to point to the values of the vector.
Returns
Integer error code, set to 0 if successful.

◆ MaxValue()

long long Epetra_LongLongVector::MaxValue ( )

Find maximum value.

Returns
Maximum value across all processors.

◆ MinValue()

long long Epetra_LongLongVector::MinValue ( )

Find minimum value.

Returns
Minimum value across all processors.

◆ operator=()

Epetra_LongLongVector & Epetra_LongLongVector::operator= ( const Epetra_LongLongVector & Source)

= Operator.

Parameters
InA - Epetra_LongLongVector to copy.
Returns
Epetra_LongLongVector.

References Epetra_LongLongVector().

◆ operator[]() [1/2]

long long & Epetra_LongLongVector::operator[] ( int index)
inline

Element access function.

Returns
V[Index].

◆ operator[]() [2/2]

const long long & Epetra_LongLongVector::operator[] ( int index) const
inline

Element access function.

Returns
V[Index].

◆ Print()

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

Print method.

Reimplemented from Epetra_DistObject.

References Zero.


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